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.