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)
|
|