1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- GameAgent is the replacement for gameserver management, such as the serverlist.
- Querying the masterserver can be done using UDP packets the following way:
- UDP Masterserver:9005 {
- char 'e'
- }
- This will make the masterserver respond with a list of servers currently joined and alive in the following way:
- UDP {
- char 's'
- 4 bytes of the IP (0x7F 0x00 0x00 0x01 would be 127.0.0.1)
- short of the port
- }
- To query gameservers for their current status, use their enumeration port (server port + 1):
- UDP Gameserver:25601 {
- byte 0x02
- }
- An example response would be:
- UDP {
- char '0'
- string ";players;8"
- string ";maxplayers;16"
- string ";level;Yodeller"
- string ";gametype;Fragmatch"
- string ";version;1.10"
- string ";gamename;serioussamse"
- string ";sessionname;Awesome Server"
- }
- Note: strings in this documentation are not null terminated unless pointed out otherwise.
- This particular server would be a fragmatch server called "Awesome Server", having 8 out of 16 players, playing on Yodeller running on version 1.10.
- To query a gameserver for the players, you would do the following:
- UDP Gameserver:25601 {
- byte 0x03
- }
- An example response would be:
- UDP {
- byte 0x01
-
- "players"
- byte 0x02
- "8"
- byte 0x03
-
- { // for each player
- "player_0"
- byte 0x02
- "Angelo"
- byte 0x03
-
- "frags_0"
- byte 0x02
- "14"
- byte 0x03
-
- "ping_0"
- byte 0x02
- "80"
- byte 0x03
- }
-
- byte 0x04
- }
- Where "0" after the "player_" and "frags_" is the index of the player in the server, not a counter.
- Note: Players can be sent in multiple packets. Wait for the last 0x04 byte in a packet.
- The player querying is done differently than the server status query to work around issues with seperator characters in player names.
- Some useful things to remember when working with this packet:
- Byte 0x01 in ASCII is SOH; start of header.
- Byte 0x02 in ASCII is STX; start of text.
- Byte 0x03 in ASCII is ETX; end of text.
- Byte 0x04 in ASCII IS EOT; end of transmission.
- Invalid player names are indicated by either byte 0x11 or 0x12 as the player name (in "player_0").
|