X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=doc%2Fprotocol;h=3347158e516ff7b567dbd101e65535d7213f3378;hb=933ca0fe6c660e482edd45742d981f2de59a32df;hp=a20d8d641073f3c561aa3b04e9076c38d034fd95;hpb=1812e1a29378526a59a346caa2348df3e7522049;p=blank.git diff --git a/doc/protocol b/doc/protocol index a20d8d6..3347158 100644 --- a/doc/protocol +++ b/doc/protocol @@ -17,6 +17,15 @@ with native LE (or BE if the server and all clients are on that, but that's by accident and will break if conversion code is ever added) +Common Types +------------ + +Name Size Type +vec3 12 3x 32bit float +vec3i 12 3x 32bit signed int +quat 16 4x 32bit float +entity state 64 vec3i, vec3, vec3, quat, vec3 + Packets ======= @@ -30,6 +39,7 @@ a while. Code: 0 Payload: none +Length: 0 Login @@ -43,6 +53,7 @@ Code: 1 Payload: 0 player name, max 32 byte UTF-8 string, shorter names should be zero terminated +Length: 0-32 Join @@ -54,10 +65,10 @@ it's changing worlds. Code: 2 Payload: 0 entity ID of the player, 32bit unsigned int - 4 chunk coords of the player, 3x 32bit signed int - 16 pos/vel/rot/ang of the player, 13x 32bit float + 4 entity state of the player 68 name of the world the server's currently running max 32 byte UTF-8 string +Length: 68-100 Part @@ -69,3 +80,119 @@ Optionally sent by the client on disconnect. Code: 3 Payload: none +Length: 0 + + +Player Update +------------- + +Sent by clients to notify the server of their changes to the player. + +Code: 4 +Payload: + 0 player's entity state as predicted by the client + 64 movement input, 3x 16bit signed int, each component mapped from [-1,1] to [-32767,32767] + 70 pitch input, 16bit signed int, mapped from [-PI/2,PI/2] to [-32767,32767] + 72 yaw input, 16bit signed int, mapped from [-PI,PI] to [-32767,32767] + 74 active actions, 8bit bit field, first three bits are primary, secondary, and tertiary + 75 selected inventory slot, 8bit unsigned int +Length: 76 + + +Spawn Entity +------------ + +Sent by the server to notify the client of an entity entering spawn range. + +Code: 5 +Payload: + 0 entity ID, 32bit unsigned int + 4 entity's skeleton ID, 32bit unsigned int + 8 entity state + 72 bounding box of the entity, 6x 32bit float + 96 flags, 32bit bitfield with boolean values + 1: world collision + 100 entity name, max 32 byte UTF-8 string +Length: 100 - 132 + + +Despawn Entity +-------------- + +Sent by the server to notify the client of an entity leaving spawn range. + +Code: 6 +Payload: + 0 entity ID, 32bit unsigned int +Length: 4 + + +Entity Update +------------- + +Sent by the server to notify the client of updated entity properties. +Contained entities must be ordered by ascending entity ID. + +Code: 7 +Payload: + 0 number of entities, 32bit int, 1-7 + 4 entity ID, 32bit unsigned int + 8 entity state + 72 next entity... +Length: 4 + multiple of 68, max 480 + + +Player Correction +----------------- + +Sent by the server to tell a client that its prediction is way off. + +Code: 8 +Payload: + 0 sequence number of the offending packet, 16bit unsigned int + 2 entity state of the player's entity on the server +Length: 66 + + +Chunk Begin +----------- + +Sent by the server to inform the client of an upcoming chunk transmission. + +Code: 9 +Payload: + 0 transmission ID, used for reference with Chunk Data packets, 32bit unsigned int + 4 flags, 32bit bitfield with boolean values + 1: compressed + 8 chunk coordinates, vec3i + 20 data size, 32bit unsigned int +Length: 24 + + +Chunk Data +---------- + +Raw chunk data sent by the server, optionally compressed with zlib. + +Code: 10 +Payload: + 0 transmission ID, references the Chunk Begin packet this data belongs to, 32bit unsigned int + 4 block offset, offset of this block inside the whole data, 32bit unsigned int + 8 block size, size of the data block, 32bit unsigned int + 12 data, raw data +Length: 12-484 + + +Block Update +------------ + +Sent by the server whenever one or more block in a chunk have changed. + +Code: 11 +Payload: + 0 chunk coordinates, vec3i + 12 number of blocks, 32bit unsigned int, 1-78 + 16 first block index, 16bit unsigned int + 18 first block data, 32bit + 22 second block index... +Length: 16 + multiple of 6, max 484