When playing multiplayer using the dedicated server, the data sent will always begin with a single byte describing the update Type.
Gameplay Updates
These update types exist for messages from both the clients and the server. They are generally used for gameplay.
| Name | Code | Description |
|---|---|---|
| PlayerMovement | 0x00 | This update type features 4 bytes, the first one containing the player ID, the next two containing the X and Y coordinates, and the last byte containing booleans for the facing direction and movement state. |
| PlayerBomb | 0x01 | This update type is sent when a player places a bomb. It features 4 bytes, the first one containing the player ID. The next two bytes indicate the position at which the bomb has been placed and an additional byte indicates which bomb the player had selected when placing the bomb. An additional boolean specifies wether fast ignition has been used. |
| PlayerCollectPowerup | 0x02 | This update type is sent when a player collects a powerup. It features 3 bytes, the first one containing the player ID, the last two containing the position at which the powerup has been collected. |
| PlayerUseAbility | 0x03 | This update type is sent when a player uses an ability. It features 5 bytes. The first one containing the player ID, the next one containing the selected ability of the player, an additional one containing the currently selected bomb and the last two containing the position at which the ability was used. There are also 4 booleans to indicate wether the player was facing north, east, south or west when the ability was used. |
| PlayerHit | 0x04 | Sent when the player gets hit. Contains three bytes, the first one containing the player ID, the second one containing the ID of the player they got hit by as a signed short. If the Player was hit by an Enemy, the ID will be incremented by the Maximum amount of players allowed on the server. |
| PlayerDeath | 0x05 | Sent when a player dies to inform the server of his death. This is used to determine a winner. Contains a single byte representing the player ID |
| PlayerBlast | 0x06 | Sent when a bomb placed by the current client explodes. The first byte contains the player ID. The rest of the data corresponds to the X Position (byte), Y Position (byte), Fire Radius (Integer), Fire Burn Time (Integer) and Blast Type (byte/enum) |
| PlayerTileBreak | 0x07 | Sent when a tile breaks on the client of the player. Used for correcting map state if blasts went off in the wrong order. The first byte contains the player ID, the other two the X and Y position of the tile that was broken. At the end of the message, there is a boolean indicating wether or not the tile was Tough. |
| EnemyMovement | 0xa0 | Sent by the Enemy host when an Enemy Moves. Features the following parameters: A ushort for the EnemyID, two bytes for the X and Y position and a byte for facing direction and movement state. |
Client Updates
These update types are only sent by the client, but not by the server. The server side has similar codes for its responses.
| Name | Code | Description |
|---|---|---|
| ControlJoin | 0xE0 | Control message to indicate that a player joined. Contains a string with the player name. |
| ControlLeave | 0xE1 | Control message to indicate that the player left. Contains no additional data. |
| ControlReady | 0xE2 | Control message to indicate that the player is ready to start the match. Contains a boolean that defines the ready status. |
| ControlRequestStart | 0xE3 | Control message to request starting the match. If all players are ready, this message will trigger the match to initialize. Contains no additional data. |
| ControlMatchInitComplete | 0xE4 | Sent when the game has finished loading after a ControlMatchInit message. |
| ControlMatchEnd | 0xE5 | Sent when a match ended. The match will end once all players have either sent this message or timed out. Contains a boolean that determines if the match ended due to a goal tile. If that is true, that bool will be followed by a byte containing the ID of the Player who walked on the Goal Tile. If Paint Bomb mode is enabled, this message will additionally contain an integer for every player indicating the amount of colored tiles on that client. |
| ControlForceStart | 0xE6 | Control message to indicate that the player wants to force start the match. Contains a boolean that defines the force start status, |
| ControlCreateVote | 0xE7 | Control message to indicate that a player wants to start a vote. Contains two signed integers representing the Map ID and GameType ID of the vote. |
| ControlVote | 0xE8 | Control message to indicate that a player has voted in the currently active vote. Contains a boolean with the current vote state. |
| ControlVoteEnd | 0xE9 | Sent when the vote timer ran out on the client. This will end the current vote as long as the time defined by the server has actually elapsed. Contains no additional data. |
| ControlClientInfo | 0xEA | Sent as soon as the client connects to the server. Contains a string with the version number. |
| ControlValidate | 0xEB | Sent on public servers after the client has used the JoinToken to authenticate with the MadBomber API. Indicates that the server should now check if the token has been validated. |
| ContentGetMap | 0xFA | Requests a map from the server. Contains a string that corresponds to the map name. |
| ContentGetGameType | 0xFB | Requests a game type from the server. Contains a string that corresponds to the game type name. |
| ContentGetMapList | 0xFC | Requests a list of all maps on the server. |
| ContentGetGameTypeList | 0xFD | Requests a list of all GameTypes on the server. |
Server Updates
These update types are only sent by the server, but not by the client.
| Name | Code | Description |
|---|---|---|
| ControlEnemyHost | 0xDF | Sent to all players when the Enemy Host is set. Contains the Player ID of the current Enemy Host. This message is also sent to perform an Enemy Host Failover. |
| ControlPlayerID | 0xE0 | Sent to all players after a player joined or left. Contains the Player ID of the current client. |
| ControlPlayerJoin | 0xE1 | Sent when a new player joins. Contains the name of the player. |
| ControlPlayerLeave | 0xE2 | Sent when a player leaves. Contains the player ID of the player who left. |
| ControlPlayerReady | 0xE3 | Sent when a player changes their ready status. Contains the Player ID and the ready status. |
| ControlPlayerList | 0xE4 | Sent to a player after they joined to synchronize the player list. Contains an Integer with the Lobby size, another one with the Player Count followed by a string and three booleans for each player containing their name, wether or not they’re ingame, wether or not they’re ready and wether or not they’ve requested a force start. |
| ControlMatchInit | 0xE5 | Sent to all players when the match is initializing. This indicates that the clients should load content and change state to Online. This message also contains an integer with a seed for randomization. |
| ControlMatchStart | 0xE6 | Sent when all players have reported ControlMatchInitComplete. This tells the clients to start the match. |
| ControlRejectJoin | 0xE7 | Sent when a Players ControlJoin is rejected. Contains a string with the reason for rejecting. |
| ControlMatchParams | 0xE8 | Sent to a player after he joined or a match ends. Contains the data for the next match, this data is integers with the Map ID and Game Type ID. |
| ControlMatchWinner | 0xE9 | Sent to all players after the match ended. This is the winner as determined by the server. Contains a ulong representing the API Match ID (0 for unranked) along with a player id and a boolean to determine if the match ended with a tie. Additionally contains 6 integers for each player, representing their Kill Count, Death Count, Tile Break Count, Bomb Place Count, Ability Use Count and Powerup Collect Count. |
| ControlPlayerForceStart | 0xEA | Sent when a player requests a force start. Contains the Player ID and the force start status.. |
| ControlPlayerCreateVote | 0xEB | Sent when a player created vote has been accepted. Contains the player ID along with three integers representing the Map ID, GameType ID and remaining milliseconds of the vote. |
| ControlPlayerVote | 0xEC | Sent when a players vote has been accepted. Contains two integers with the current amount of upvotes and downvotes. |
| ControlVoteEvaluated | 0xED | Sent when the server finished evaluating the current vote. This will end the vote on all clients. Contains no additional data. |
| ControlJoinToken | 0xEE | Sent to a client after receiving ControlJoin from them. Contains a string with a JoinToken to be used for authenticating against the MadBomber API. Used only for Public Servers. |
| ContentMap | 0xFA | Contains a filename string, the length of the file and a map file as a byte array. |
| ContentGameType | 0xFB | Contains a filename string, the length of the file and a game type file as a byte array. |
| ContentListMaps | 0xFC | Contains a list of all maps on the server. The first integer contains the amount of maps. The list is comprised of two strings for each entry. The first one is the map name, the second one is the Checksum. |
| ContentListGameTypes | 0xFD | Contains a list of all game types on the server. The first integer contains the amount of game types. The list is comprised of two strings for each entry. The first one is the map name, the second one is the Checksum. |