Game Server Stats

Game Server gibt es wie Sand am Meer und für alle möglichen Spiele (z.B. Left 4 Dead 2, Counter Strike Source, Crysis Warhead, uvm.). Wenn man ein Game tracken möchte, benötigt man meist spezielle Tools, um die Spielerpunkte (Score), Namen, Map usw. auszulesen.

Allerdings kann man auch eine UDP (User Datagram Protocol) -Verbindung zu einem Gameserver mit PHP aufbauen, um an die gewünschten Daten zu gelangen. Damit die Daten ausgelesen werden können, muss die Portnummer des UDP Dienstes mitgesendet werden.

Idee

Mittels fsockopen wird eine udp:// Verbindung aufgebaut unter der Angabe des entsprechenden Ports. Nach der erfolgreichen Verbindung wird ein Request an den Server (Stream) geschickt. Hierbei kann beispielsweise eine allgemeine Information über den Server (settings) angefordert werden oder eine spezielle Information über die Spieler (players).

Ein Request beispielsweise um die Playerinformationen zu bekommen, kann je nach Spiel unterschiedlich aussehen.
Z.B. Cry-Player-Request “\ x7f\ xff\ xff\ xffplayers”

Code

<?php
$fp 
= @fsockopen("udp://".$ip$port$errno$errstr1);
stream_set_timeout($fp10);
stream_set_blocking($fptrue);
?>

Es wird eine neue UDP Verbindung zum Gameserver aufgebaut.

Demonstration (Counter Strike Server)

In Bearbeitung…