1. Introduction
This document specifies the ZDaemon networking protocol related to launchers. The following definitions apply:
| [byte]: | (8 bits, 1 byte) Unsigned integer from 0 to 255. |
| [short]: | (16 bits, 2 bytes) Signed integer from -32768 to 32767. |
| [ushort]: | (16 bits, 2 bytes) Unsigned integer from 0 to 65535. |
| [ulong]: | (32 bits, 4 bytes) Unsigned long integer from 0 to 4294967295. |
| [float]: | (32 bits, 4 bytes) Single precision floating point value. |
| [string]: |
Zero-terminated byte array (ASCIIZ String). The string length is variable; the
last byte of the string is 0 indicating the end of the string.
|
2. Protocol Commands
2.1 Server List request (Launcher → Master Server)
Request to the Master Server to send a list of public server addresses.
| [ulong] | Launcher Challenge (777456) |
| [byte] | Launcher Version (106) |
2.2 Server address list (Master Server → Launcher)
This is a list of addresses from public servers that are registered at the
Master Server (given as an answer to the Server List request).
| [ulong] | Launcher Challenge (777456) |
For each server: |
| [byte] | Sentinel flag (End Of List if this equals 101) |
| [ulong] | IP number in Big Endian byte order |
| [ushort] | Port number in Big Endian byte order |
| [byte] | Trusted flag (0 or 1): indicates if experience points will be counted |
2.3 Outdated Protocol (Master Server → Launcher)
This indicates that the Launcher challenge is outdated. The protocol code must be updated.
| [ulong] | Launcher Update (22383) |
| [string] | New ZDaemon URL |
| [string] | Domain |
| [string] | Path/file |
| [byte] | New version number |
2.4 Master Login (Launcher → Master Server)
Request for login for a particular player.
| [ulong] | Master Login (1137) |
| [ulong] | Launcher Version (106) |
| [string] | User Name |
| [string] | Password |
2.5 Master New Account (Launcher → Master Server)
Requests the creation of a new account on the master server.
| [ulong] | Master New Account (1338) |
| [ulong] | Launcher Version (106) |
| [string] | User Name |
| [string] | Password |
2.6 Master Update Profile (Launcher → Master Server)
Requests the update of the profile of a logged in player.
| [ulong] | Master Update Profile (1346) |
| [string] | New profile information |
2.7 Master Player List (Launcher → Master Server)
Requests a list of the recently logged in players.
| [ulong] | Master Player List (1348) |
2.8 Master Request Player Info (Launcher → Master Server)
Requests information about a particular player.
| [ulong] | Master Request Player Info (1350) |
| [string] | Player Name |
2.9 Master Welcome (Master Server → Launcher)
Response from the master for successful logins.
| [ulong] | Master Welcome (1343) |
| [string] | Player Profile Info |
| [ulong] | Player rank |
| [long] | Player level |
| [long] | Player experience |
| [long] | Player highest rank |
| [byte] | Unused |
2.10 Master Account Created (Master Server → Launcher)
Response from the master for successful logins.
| [ulong] | Master Account Created (1344) |
| [string] | Player Profile Info |
| [ulong] | Player rank |
| [long] | Player level |
| [long] | Player experience |
| [long] | Player highest rank |
| [byte] | Unused |
2.11 Master Error (Master Server → Launcher)
Response from the master for unsuccessful logins or account creations.
| [ulong] | Master Error (1339) |
| [ulong] | Error code:
1341 = "Account already exists" (when creating a new account),
1340 = "Account does not exist" (when attempting to login),
1342 = "Bad password" (when attempting to login) |
2.12 Old Launcher Version (Master Server → Launcher)
Response from the master for unsuccessful logins or account creations.
| [ulong] | Old Launcher Version (1359) |
2.13 Master Accept Profile (Master Server → Launcher)
Response from the master for successful profile updates.
| [ulong] | Master Update Profile (1347) |
2.14 Master Player List (Master Server → Launcher)
Response from the master about the recently logged in player list.
| [ulong] | Master Player List (1349) |
| [ushort] | Number of players |
For each player: |
| [string] | Player Name |
2.15 Master Return Player Info (Master Server → Launcher)
Response from the master with the information about a particular player.
| [ulong] | Master Return Player Info (1351) |
| [string] | Player Name |
| [string] | Extra profile info |
| [ulong] | Player Rank |
| [ulong] | Player Highest Rank |
| [long] | Player Level |
| [long] | Player Experience |
| [byte] | Unused |
| [long] | Experience value at beginning of player's level |
| [long] | Experience value at beginning of player's level+1 |
| [byte] | Player standard avatar ID (0-7) |
| [long] | Player custom avatar ID (None if zero or negative; if positive,
the avatar can be found at http://player.zdaemon.org/avatar.php/NNN/image.jpg where NNN is the custom avatar ID). |
2.16 Master Player Not Found (Master Server → Launcher)
Response from the master to the "Master Request Player Info" message.
| [ulong] | Master Player Not Found (1352) |
| [string] | Player Name |
2.17 Server status request (Launcher → Server)
This asks a server to send information about its current settings and players.
| [ulong] | Launcher Challenge (777123) |
| [byte] | Launcher Version (106) |
2.18 Server status info (Server → Launcher)
This is the answer to the previous server request.
| [ulong] | Server Challenge (5560020) |
| [string] | Server Title (banner) |
| [byte] | Current number of clients |
| [byte] | Maximum number of clients |
| [string] | Short map name (like E#M# or MAP##) |
| [byte] | Number of additional WAD files (PWADs) |
For each additional file (PWAD): |
| [string] | PWAD Filename (without path info) |
| [byte] | Game type (0=DM, 1=Team DM, 2=Coop, 3=CTF) |
| [string] | Game name (eg., "Ultimate Doom" or "Doom II") |
| [string] | IWAD Filename (without path info) |
| [byte] | Skill (0-4) |
| [string] | Website (URL of web server or maybe a URL to an
unusual WAD file used by the server) |
| [string] | Email of server admin |
| [ulong] | DMFlags |
| [ulong] | DMFlags2 |
| [byte] | Current Number of clients |
For each client: |
| [string] | Name |
| [short] | Frags (Kills in coop mode) |
| [ushort] | Ping |
| [byte] | level (currently undefined) |
| [ushort] | minutes in game |
| [ushort] | Server Version (106) |
| [ulong] | Extended Information Flag (0x01020304); indicates that
more information follows. |
| [byte] | Password flag (0=not required, 1=required) |
| [byte] | Current number of players actually playing. |
| [byte] | Max. number of players who can actually enter the game. |
| [ushort] | Time limit (in minutes: 0 if no limit) |
| [ushort] | Time left on current map (in minutes: 0 if no limit) |
| [ushort] | Frag limit (0 if no limit) |
For each client: |
| [byte] | Bot flag (0=Human, 1=Bot) |
| [byte] | Spectator flag (0=Playing, 1=Spectator) |
| [byte] | Team (0=Red, 1=Blue, 2=Green, 3=Gold) |
| [byte] | Max. playing teams (should range between 2 and 4) |
| [ushort] | Team Score limit (0=No limit) |
| [float] | Team Damage factor (0-1) |
For each team (there are always 4 of them): |
| [short] | Team score |
For each PWAD: |
| [byte] | Optional flag (0=Required, 1=Optional) |
| [ulong] | Extended Information Flag (0x01020304); indicates that
more information follows. |
| [string] | Detailed version info about the server and O/S |
| [ulong] | Extended Information Flag (0x01020304); indicates that
more information follows. |
| [float] | Gravity value (Positive number: Default = 800) |
| [float] | Air Control factor (0-1. Default = 0.00390625) |
| [ulong] | End-of-packet signal (0)
|
|