Welche Progsprache für Serverstats?!

Headymaster

Erfahrenes Mitglied
Hallo!

Ich weiß nicht ob ich in diesem Forum richtig bin aber ich woltle mal fragen, über welche Programmiersprache (linux-Basis) man die Logs von Gameservern abfangen kann.
Mir geht es dabei um Counter-Strike Source und Day of Defeat Source.

Ich möchte nämlich gerne ein Kleines Programm schreiben dass z.b. Kills und gespielte Maps usw. vom Server "abfängt" und dann in eine Mysql Datenbank schreibt, die ich wiederrum mit PHP auslesen und auf einer Website ausgeben lassen kann.

Würde mich freuen wenn ihr mir sagen könnt was ich da so für brauche :)

MFG Niels
 
Eigentlich sollte es kein grosses Problem darstellen sich per PHP mit dem Server zu verbinden und die Spieldaten abzufragen. Zu sowas gab es hier, soweit ich mich erinnere, auch bereits ein paar Threads. Wenn ich mich nicht irre ging es dabei um Half Life.
 
Man kann nur mit PHP schon nen gameserver abfragen, wann ein Kill gemacht wurde?!

Also ich möchte das eigentlich so machen das dieses Script eigentlich in dem Moment wo z.b. ein Kill passiert ist, dieser sofort in die DB eingetragen wird....


Wisst ihr sowas wie HLSTATSX möchte ich machen halt nur kleiner^^

MFG Niels
 
Dann wirst Du ein Programm benoetigen was dauerhaft mit dem Server verbunden ist. Das wuerde zwar im Grunde auch mit PHP gehen (nur dann eben nicht browserbasiert, sondern in der Shell) aber dafuer ist PHP ja eigentlich eher nicht gedacht. Da waer dann wohl eine Sprache die ein richtiges kompiliertes Programm erstellt besser.
Welche Sprache Du da nimmst duerfte eigentlich egal sein, C, C++, C#, Java, Boo, whatever..., das sollte eigentlich letztlich von Deinen Vorlieben/Vorwissen abhaengen.
 
Also ich sag ma so ich bin Schüler 17 und habe jez das erste mal mit Delphi zu tun...seit dem Sommer da ich da in die 11. Klasse gekomm bin und Informatik gewählt habe und das ist eigentlich so das einzige was ich an anderen Programmiersprachen außer fürs Web kann.

Sonst kann ich noch:

-PHP
-CSS
-HTML ---> obwohl das eig keine richtige Sprache is :p


Naja und Delphi kann ich halt kaum und ich denke mal dass es dafür auch net geeignet ist weil es ja auf Linux laufen muss und Delphi für Wndows ist.

Nun stellt sich die Frage welche Proggrammiersprache mit PHP Kenntnissen am leichtesten zu verstehen und zu lernen ist, und ob es da auch gute Anfängertutorials gibt :)

Wenn du mir da nen Tipp geben könntest wäre toll :)

MFG Niels
 
Hallo,

Ja gut es ist ne Sprache aba halt ne recht einfache .... :p
HTML ist eine Auszeichnungssprache (im Gegensatz zu beispielweise C, welches eine Programmiersprache ist). Und so einfach scheint sie dann doch nicht zu sein, wenn man die vielen Webseiten mit fehlerhaftem HTML in Betracht zieht… ;)

Zum eigentlichen Thema: ich kenn mich mit den Schnittstellen von Gameservern nicht sonderlich gut aus, aber ich kann mir grundsätzlich drei Vorgehensweisen vorstellen:

  1. Ein Programm verbindet sich wie ein ganz normaler Client des Spiels zum Gameserver und lauscht sozusagen mit. Nachteile: man muss das Netzwerkprotokoll des Spiels implementieren, Verbindungsabbrüche müssen entsprechend behandelt werden (da kann dann auch schon mal Information verloren gehen)… insgesamt also ein ziemlich hoher Aufwand. Meiner Ansicht nach am wenigsten praktikabel.
  2. Man bringt den Gameserver dazu, eine ausführliche Logdatei zu erstellen. Ein separates Programm überwacht diese dann (in Echtzeit oder in bestimmten Intervallen) auf Änderungen und schreibt die Auswertung entsprechend in eine Datenbank. Mögliches Problem: der Gameserver könnte eine entsprechende Logoption nicht zur Verfügung stellen. Vorteil: auch wenn das Überwachungsprogramm mal ausfällt, verliert man keine Informationen, da alles in der Logdatei steht. Nachteil: diese Logdatei könnte schnell recht groß werden und wertvollen Speicherplatz verbraten, vor allem weil nach dem Eintrag in die Datenbank alles doppelt vorhanden ist.
  3. Viele Gameserver bieten die Möglichkeit an, Module oder Plugins zu einzubinden. Über einen entsprechenden Callback wird dann bei bestimmten Vorkommnissen eine benutzerdefinierte Funktion aufgerufen, in der man die entsprechenden Datenbankeinträge tätigen könnte. Vorteil: „sauberste“ Lösung, da man die Daten ohne Zwischenstationen geliefert bekommt. Nachteil: eventuell lange Einarbeitungszeit in die API des Gameservers. Unter Umständen wird eine solche auch überhaupt nicht zur Verfügung gestellt. Eventuell hoher Programmieraufwand, da die Module in einer Programmiersprache mit manueller Speicherverwaltung geschrieben werden müssen. Bei Programmierfehlern kann auch schon mal der komplette Gameserver abschmieren. Mögliche Abhilfe: komplexere Abläufe in Skripts (PHP, Ruby, Python, Perl…) implementieren, welche dann vom Modul aufgerufen werden.
Insofern hängt es hochgradig vom verwendeten Gameserver ab, welche Möglichkeit vorzuziehen ist. Die letzte wäre natürlich das Nonplusultra (wenn es denn mal stabil läuft), die erste eigentlich eine absolute Notlösung. Die Alternative mit der Logdatei-Auswertung sollte in vielen Fällen möglich und nicht allzu komplex sein (aber natürlich auch wieder abhängig von den bereitgestellten Möglichkeiten des Gameservers). Vielleicht bietet sich in einem speziellen Fall auch eine Kombination an: ein Modul (idealerweise schon komplett fertig verfügbar) erweitert den Gameserver um eine Logging-Funktion, das erzeugte Log wird von einem externen Programm ausgewertet.

Die denkbaren Varianten sind also vielzählig :)

Grüße,
Matthias
 
Also man kann bei spielen der Source Engine...auf welches sich mein Ziel auch setzt.....eine Option einstellen.

logadress_add ip: port

An diese IP+Port werden dann die Logs geschickt......

man müsste dann eine Programmiersprache finden, die eigentlich auf einen Port heuchen könnte....sprich ein Script schreibenm welches auf Port 52341 horcht und dieses Script müsste halt sobald der Log kommt immer nu diesen auswerten und in eine Datenbank schreiben.

Nur naja da geht es los.....welche Sprache.....wie bringt man das Script dazu wenn man es z.b. mit Screen ausführt.....dass es auch dann den Port xxxxx besetzt damit man überhaupt sehen kann wie so ein Log aussieht :)

MFG Niels
 

Neue Beiträge

Zurück