====== Legacy Protocol ====== A networking protocol used by the legacy client/server. It is built on the message format of the [[https://www.maartenbaert.be/game-maker-dlls/http-dll-2/|Http Dll 2]] GameMaker extension. Every message may be optionally compressed with deflate. Client and server will always attempt to decompress messages. ===== Data types ===== All data types are little-endian. ^ Type ^ Format ^ | String | Null terminated UTF-8 | | Byte | 8-bit byte | | Float | 32-bit float | | Boolean | 8-bit byte, non-zero meaning true | | Uint32 | | Varint | todo | ===== Server to client ===== ==== Login (0x01) ==== Used for identifying the player logging in and creates the brick loading message. ^ Type ^ Description ^ | Uint32 | Net ID of player | | Uint32 | Brick count of world | | Uint32 | User ID of player | | String | Username of player | | Boolean | Is admin | | Byte | Membership type | | Uint32 | Set ID | | String | Set Name | ==== Message (0x06) ==== Appends a message to the chat log. ^ Type ^ Description ^ | String | Message | ==== Set brick attribute (0x09) ==== ==== Delete bricks (0x10) ==== Delete bricks from the world. ==== Create bricks (0x11) ==== Loads bricks into the world. ==== Clear world (0x0E) ==== Deletes all bricks from the world. No message data is specified. ==== Brick model (0x14) ==== What happens if a brick model is defined for an already existing mesh ID? Knowing what happens may be useful information. Defines a mesh made out of bricks to the mesh cache. The model can then be used as a brick model or a hat by using the newly defined mesh ID. ^ Type ^ Description ^ | String | Mesh ID | | Uint32 | Brick count of model | Bricks are defined for the number of bricks in model. ^ Type ^ Description ^ | Float | X position | | Float | Y position | | Float | Z position | | Float | X scale | | Float | Y scale | | Float | Z scale | | Int32 | X rotation | | Int32 | Y rotation | | Int32 | Z rotation | | Uint32 | Color | | Float | Alpha | ===== Client to server ===== todo