PDA

Vollständige Version anzeigen : Ausschreibung: Programmierer gesucht


Sven
08-01-2008, 14:34
Ja, wir geben es zu: Wir wissen nicht weiter :cry:

Wir möchten auch so einen netten Replay Parser wie das UF ihn hat!

Und deswegen suchen wir einen Programmierer mit C++ und php Kenntnis der uns auf der Basis eines, zur Verfügung stehenden, Generals Tools (liegt in C++ vor und gibt die Replaydaten in einer HTML Datei aus, Sourcecode enthalten) (http://www.cncnz.com/files/count/click.php?id=502) so etwas für TW (und natürlich KW) umschreibt.
Dabei ist es ausreichend wenn die gefundenen Infos einfach nur ausgegeben werden (also keine wirklich Umsetzung in die HTML Ausgabe).

Benötigte Infos wie folgt:

Spiel
Spielversion*
Spielart (ranked/unranked)
Voip*
Dauer
Mapname[offiziell/inoffiziell]
Spieler(x)[Nick,Army,Team,1vs1Rank*,2vs2Rank*]
Spieler(y)[Nick,Army,Team,1vs1Rank*,2vs2Rank*]
Spieler(z)....
...

*: Nice to have

Das Ganze soll natürlich nicht nur für Ruhm und Ehre sein.... wir würden ein Fanset, bestehend aus T-Shirt, Cap, Pin und Nod-Ring dafür herausrücken, alternativ - aber dann später - eine KW Ausgabe.

Das Adminteam (und vermutlich alle User) würde sich sehr freuen... ;)

MyersGer
08-01-2008, 15:44
Hm... nur auslesen und in ne DB schreiben?

Sven
08-01-2008, 15:46
Mir reicht prinzipiell sogar die reine Ausgabe in HTML, unformatiert, alles andere kann ich dann selber ;)

Von mir aus auch direkt ein eine DB Tabelle geschrieben, dann hol ich sie mir da wieder raus....

MyersGer
08-01-2008, 15:47
Na, ich würd's ja in ner Tabelle speichern. Da kann man vielleicht sogar Doppeleinträge verhindern, falls ein Replay 2 mal hochgeladen wird.

Sven
08-01-2008, 15:48
Siehe Edith ;)

Der_Mosch
08-01-2008, 17:55
Hab so was noch nie gemacht, aber ich würds gerne mal ausprobieren (so schwer kanns ja nicht sein). Hat jemand ne Dateistruktur für die TW-Replays oder muss ich da selber suchen?

Sven
08-01-2008, 18:03
Nur das, was im Link für das Generals Tool angegeben ist.
Da ist, im Ordner /src auch so weit aufgeschlüsselt, wie es dem Progger damals bekannt war, was in den Binaries drin steht (für Generals).
Für TW sieht das, was ich so verglichen habe, nicht viel anders aus.

Amosh
08-01-2008, 19:06
@Mosch, die Daten, die Sven haben möchte, kann man sogar mit dem normalen Editor von Windows auslesen. Die stehen da so drin. Nur eben wie das Match ausgeht, liegt im Verborgenen, weil TW das alles runterrechnet in den Replays.

Den Spielerrang kann man auch einfach wieder von Gamespy abrufen. :)

Der_Mosch
08-01-2008, 19:27
Ich hab mir gerade ein paar Replays besorgt und fummel daran jetzt mal rum.

OMG, Sven hat ja im ersten Post einen LINK! :D Ich glaub, die Woche kann ich knicken, ich merk gar nichts :D

MyersGer
08-01-2008, 21:04
Die Dateistruktur ist leicht unterschiedlich zu der von Generals. Aber das tut nicht wirklich weh. Das Auslesen an sich ist kein Ding, was nervt sind die dynamischen längen der Strings (z.B. Nickname) und ein fehlender vernünftiger Header.
Eigentlich bräuchtest du das ja eher als PHP, damit man das direkt beim Hochladen auslesen kann, oder Sven?

Sven
08-01-2008, 22:02
Jupp, so ist es ;)

MyersGer
10-01-2008, 09:49
Hm ja wenn ich mehr Zeit hätte, würde ich das gerne für euch machen. Aber ich habe selber ein paar Baustellen offen.

se7en
10-01-2008, 16:28
kann mir wer ein paar Files schicken? Dann schau ich mir die mal an und wenns wirklich so einfach ist wie ich denke...

Sven
10-01-2008, 16:31
Sind oben im ersten Posting verlinkt ;)

MyersGer
10-01-2008, 21:18
kann mir wer ein paar Files schicken? Dann schau ich mir die mal an und wenns wirklich so einfach ist wie ich denke...

Musst nur darauf achten, dass die Strings in Unicode sind!

Gonzo
10-01-2008, 23:47
Teilweise ;)

se7en
11-01-2008, 14:01
@Sven, ich meinte eigentlich ein oder zwei Replay Dateien ;

Sven
11-01-2008, 14:19
http://www.cncforen.de/forumdisplay.php?f=515

Bedien dich ;)

Zum Vergleich ein Generals Replay

gersultan
11-01-2008, 14:47
@Sven, ich meinte eigentlich ein oder zwei Replay Dateien ;
oder hier: http://www.cnc-community.de/articles/read.php?article_id=1349 :) (achtung custom-maps)

Chrissyx
12-01-2008, 04:15
Ich hab mich mal rangesetzt und eine erste lauffähige Version findet ihr hier:
http://www.chrissyx.com/beta/twrr/index.php

Im Moment wird unterstützt:

Dateiname
Dateigröße
Spielname
Mapname
Mapdateiname
Nicks aller Spieler
Spielversion

Wird noch ausgebaut, hab heute abend nicht mehr geschafft.
Wenn sich jemand ganz gut mit der C&C3 Replay Struktur auskennt (ist ja dann doch etwas anders als bei Generals), bitte melden!

Known bugs: Kommentator Eintrag im Replay wird als Spieler gelistet, Erkennung von Zuschauern fehlt (resultiert in Warnung, theoretisch :rolleyes: )

Bis dahin könnt ihr schon mal testen und rumspielen und bei Interesse kann ich die Version auch zum Download anbieten. Und ja, Quellcode ist dokumentiert (deutsch / englisch). ;)
So, n8! :sleep:

gersultan
12-01-2008, 05:13
Known bugs: Kommentator Eintrag im Replay wird als Spieler gelistet,

meinst du damit:
Spieler 5: post Commentator? Ich hab diese Angabe obwohl kein Commentator vorhanden war ;)

Chrissyx
13-01-2008, 05:52
Ja, das mein ich. In jedem Replay ist komischerweise ein Kommentatoreintrag vorhanden, unabhängig davon, ob tatsächlich kommentiert wurde oder nicht. Dieser wird dann einfach mitausgelesen und angezeigt. Ich bräuchte daher mal ein Replay, welches wirklich ein Kommentar mit dabei hat, so dass ich dann mal eine Erkennung einbauen kann. ;)

Jedenfalls hab ich weiter programmiert und nun wird folgendes unterstützt:

Dateiname
Dateigröße
Spielname
Mapname
Mapdateiname
Spielversion

sowie durchnummeriert Details über alle Spieler. Bei menschlichen:

Nick
Farbe
Partei
Position auf der Karte
Team
Clan Tag

Bei Computern:

Schwierigkeitsgrad
Farbe
Partei
Position auf der Karte
Team
Handicap
KI Persönlichkeit

Damit kann man schon was anfangen. :D
Was noch fehlt, ist die Unterstützung für Zuschauer (erkannt werden sie inzwischen) und, wie bereits erwähnt, die Sache mit den Kommentatoren. Dafür brauch ich dann auch passende Replays. :yes:
Probleme hab ich auch noch mit dem Datum, ich hab keine Ahnung, an welcher Stelle das im Replay steht. :ka:

Known bugs: "Kommentator-Leiche" wird immer angezeigt, Versionsnummer kann in seltenen Fällen falsch ausgelesen werden

Wer Bugs findet oder sonst was los werden will, immer her damit. ;)
http://www.chrissyx.com/beta/twrr/index.php

RedBasti
13-01-2008, 10:04
Das funzt doch so weit schon mal sehr gut. :thx:

Was mir gerade bei einem Replay mit Beobachter aufgefallen ist, dass der Beobachter nicht als solcher ausgelesen wurde.
http://www.gamer-oase.de/files/cnc-com/CML-Replays/CML-Derksen15-Altaire-odiablo-Napoleon1977.CNC3Replay

War als Beo dabei, Partei steht aber hier auf zufällig.

Chrissyx
13-01-2008, 18:33
Ah gut, jetzt konnte ich auch Unterstützung für Zuschauer einbauen. :)
http://www.chrissyx.com/beta/twrr/index.php

Neu ist außerdem auch die Erkennung vom Spieltyp, ob Automatch oder Eigenes Match.
Wegen der "Kommentator-Leiche" hab ich wohl eine Lösung gefunden, wäre interessant zu wissen, wie sich das mit echten Kommentar-Replays verhält. Bis dahin sollten nur die tatsächlichen Beteiligten angezeigt werden. :yes:

Known bugs: Kommentatoren könnten ignoriert werden, Versionsnummer kann in seltenen Fällen falsch ausgelesen werden

Als nächstes kommen Angaben zu den Regeln, also wieviel Startgeld, Spielgeschwindigkeit oder Kisten an/aus. Hoffentlich irgendwann auch mal das Datum. :rolleyes:

Matze I
13-01-2008, 18:44
So, ich hab mir einfach mal erlaubt das ding zu testen, und ein Replay hochzuladen.

Hochladen geht bereits, doch wo kann man nun das ding verlinken, bzw runterladen?

http://www.chrissyx.com/beta/twrr/index.php

Der steht nun oben so im Browserfenster. (Firefox)

Datei: Langes game.CNC3Replay
Größe: 1472 KB
Spielname: Zivilisation 21
Mapname: Riverside Rumble
Mapfilename: data/maps/official/map_mp_2_simon
Spieler 1: Z21|Matze_I, Farbe: Rot, Partei: Nod, Position: Zufällig, Team: -, Clan: Z-21
Spieler 2: Soifz, Farbe: Grün, Partei: Scrin, Position: Zufällig, Team: -, Clan: Z-21
Spieltyp: Eigenes Match
Version: 1.9
Zurück (http://www.chrissyx.com/beta/twrr/index.php)

Chrissyx
13-01-2008, 19:22
Die Replays werden nicht auf dem Server gespeichert, es werden nur Infos ausgelesen und entsprechend angezeigt:

Dabei ist es ausreichend wenn die gefundenen Infos einfach nur ausgegeben werden (also keine wirklich Umsetzung in die HTML Ausgabe).

Sollte das Script dann später seinen Weg hier ins Forum finden, sind die angehängten Replays natürlich downloadbar wie gewohnt - nur das es dann zusätzliche Details gibt. ;)

Amosh
13-01-2008, 21:16
Sehr gute Arbeit bis jetzt Chrissyx - gefällt mir so bereits sehr gut. :thx: ;)

gersultan
13-01-2008, 21:18
aktuell bin ich sehr begeistert :gf::thx::)

Chrissyx
14-01-2008, 04:37
So, Spielgeschwindigkeit, Startgeld und Zufallskisten ein/aus ist nun auch drin. Ich hab schon einen Verdacht, was ranked/unranked, battlecasted und VoIP bedeuten könnte und werd die Tage mal passende Replays sammeln.
Wegen dem Datum hab ich fast das Gefühl, es ist gar keins vorhanden? :ka: Da wird wohl immer das Dateidatum genommen...
Die Kommentator Sache hab ich auch nochmal umgebaut, da ich mindestens ein Replay gefunden hab, wo das so nicht funktionierte und Spieler verschluckt wurden. Ich hoffe mal, jetzt geht's und ein Replay mit Kommentar zum Testen wäre immer noch eine dolle Sache. :D

Known bugs: Kommentatoren könnten ignoriert werden, Versionsnummer kann in seltenen Fällen falsch ausgelesen werden

http://www.chrissyx.com/beta/twrr/index.php

Sven
14-01-2008, 10:46
Sehr schön bis jetzt :thx: ;)

se7en
14-01-2008, 11:44
ist es möglich das php-skript einsehen zu dürfen? Gerne auch als PM ;)

Chrissyx
14-01-2008, 22:53
Und heute präsentiere ich euch die vorerst letzte Version: Ich hab im wesentlichen Unterstützung für die Spielart eingebaut, d.h. Angaben über online/offline Spiel, ranked/unranked, 1v1/2v2 normal und 1v1/2v2 Clan. Weiterhin, ob das Spiel "geBattleCasted" wurde und VoIP aktiviert ja/nein; wobei ich mir bei VoIP nicht ganz sicher bin und deswegen noch mit ? versehen ist. => Bitte ausprobieren, ob das so passt!
Tests mit kommentierten Replays sahen soweit gut aus, so dass "echte" Kommentatoren wohl nicht ignoriert werden, ergo dürfte der "Kommentator-Leiche"-Bug auch Geschichte sein. Genau so gefixt ist nun das mögliche falsche auslesen der Versionsnummer, was übrigens auch in sehr seltenen Fällen auf den sogenannten INI String zutreffen konnte und nur noch Datenmüll produzierte. :D Beide Verfahren neu programmiert und bis jetzt hab ich kein falsches Ergebnis bekommen. :)

Unterm Strich sieht's nun so aus:

Dateiname
Dateigröße
Spielname
Mapname
Mapdateiname
Spielgeschwindigkeit
Startgeld
VoIP (Ja/Nein)
BattleCasted (Ja/Nein)
Zufallskisten (Ja/Nein)
Spieltyp (Automatch/Eigenes Match)
Spielversion

sowie Details über die Spielart:

Online/Offline
Ranked/Unranked
1 vs. 1/2 vs. 2
1 vs. 1 Clan/2 vs. 2 Clan

und durchnummeriert Details über alle Spieler: Bei menschlichen:

Nick
Farbe
Partei
Position auf der Karte
Team
Clan Tag

Bei Computern:

Schwierigkeitsgrad
Farbe
Partei
Position auf der Karte
Team
Handicap
KI Persönlichkeit


Known bugs: Offline LAN Spiele könnten in ein "UNBEKANNT" bei der Spielart-Anzeige resultieren, das müsste mit passenden Replays getestet werden.

Zum Thema Datum sieht's unverändert aus, da kann ich höchstens das Dateidatum anbieten? Die Dauer des Replays scheint auch nicht so in "Klartext" vorhanden zu sein und ich hab momentan keine Ahnung, wie man das berechnen könnte. Angabe über den Rang eines Spielers ist wohl ebenfalls nicht im Replay vorhanden, aber das könnte man über die EA Seite beziehen à la Profile Poller von cc3.xtrapas.de. Zwar gibt es noch eine Menge weiterer Werte, die ich bisher noch nicht zuordnen konnte, aber Datum, Dauer und Rang war wohl nicht dabei. :rolleyes:
Sonst sollte alles drin sein, was verlangt wurde. :)
http://www.chrissyx.com/beta/twrr/index.php

Außerdem müsste noch geklärt werden (wenn es soweit kommt), ob das Script nun CnC Foren-exklusiv wird oder frei verfügbar für jedermann, so dass auch andere den Replay Reader nutzen können? Mir persönlich ist es egal und wenn ja, ist se7en der Erste, der es bekommt. ;)

se7en
15-01-2008, 15:01
:)

Aber um Veröffentlichung o.ä. gehts mir nicht! Bin nur interessiert (wäre die Anfrage im Februar gekommen hätte ich auch gerne mitgearbeitet)

RedBasti
15-01-2008, 15:07
Super Arbeit Chrissyx! :thx:

Chrissyx
15-01-2008, 19:47
Allgemein erstmal danke für's Lob. :freu:
Die aktuelle Version ging gerade eben an Sven raus, so dass mit der HTML Umsetzung angefangen werden kann.

@se7en: Das musst Du mit der Boardleitung besprechen, im Moment sieht's eher nach exklusiv aus. :rolleyes:

Sven
15-01-2008, 19:53
@chrissyx: Siehe PN....

se7en
15-01-2008, 22:18
kein Thema ;)

saemikneu
27-01-2008, 03:36
Weshalb musste das in C++ sein? Das ginge mit Java genau so gut.

Aber Chrisxy hat das ja super gemacht (so braucht es auch kein Tool) :thx:

Chrissyx
27-01-2008, 06:02
Der Parser musste in PHP sein, erforderlich waren C++ Kenntnisse nur für das Generals Tool, welches als Vorlage diente. ;)

saemikneu
28-01-2008, 01:13
Das Generals-Tool meinte ich eigentlich ;)
Neu in Java zu schreiben wäre ja auch möglich gewesen und besser, weil so etwas neu enstehen kann und die Kenntnisse gleich erweitert. Nicht so wie es Microsoft in Windows macht: immer alten Code mitzuschleppen :blah:

SailedAway
28-01-2008, 01:15
naja irgendeinen leitfaden braucht man ja. es komplett alleine zu entwickeln hätte sicherlich wedentlich länger gedauert

Chrissyx
28-01-2008, 21:53
Das Generals-Tool meinte ich eigentlich ;)
Neu in Java zu schreiben wäre ja auch möglich gewesen und besser, weil so etwas neu enstehen kann und die Kenntnisse gleich erweitert.
Nur was willst Du mit einer Java Anwendung, wenn es PHP sein soll? Oder ich versteh dich wieder falsch... http://smilies.cncforen.de/ugly.gif

naja irgendeinen leitfaden braucht man ja. es komplett alleine zu entwickeln hätte sicherlich wedentlich länger gedauert
Das stimmt, besonders hilfreich war die Strukturbeschreibung von Generals Replays. Konnte ich zwar nicht 1:1 übernehmen, aber wenn's passte, wusste ich gleich worum es geht. :)

Sven
28-01-2008, 22:55
Das Generals-Tool meinte ich eigentlich ;)
Neu in Java zu schreiben wäre ja auch möglich gewesen und besser, weil so etwas neu enstehen kann und die Kenntnisse gleich erweitert. Nicht so wie es Microsoft in Windows macht: immer alten Code mitzuschleppen :blah:
Was willst du mit Java dafür? Auf einem Board das rein in php geschrieben ist?

MyersGer
29-01-2008, 09:13
Na das ist wohl eher ein Problem, das heute in vielen Schulen entsteht. Jeder Hansel meint, seinen Schülern Java beibringen zu müssen. Dadurch entsteht der Eindruck Java sei DIE Lösung für alles und viele lernen gar nicht mehr, was Programmieren bedeuten kann.

Eins steht jedenfalls fest: Java wäre hier totaler Schwachsinn gewesen!