X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=doc%2Fprotocol;h=a02ff2afa4bffa99b29dc32b7fe448e3d115af13;hb=b3d9f773c94aee99598cbd8e94e614b2c6da1216;hp=63055a267fce123b022ef54ba6fdfad26ef649c4;hpb=da5073a7fdb1ca066e778a02db33d5d15073aea0;p=blank.git diff --git a/doc/protocol b/doc/protocol index 63055a2..a02ff2a 100644 --- a/doc/protocol +++ b/doc/protocol @@ -1,3 +1,23 @@ +Structure +========= + +Offset Size Type Description + 0 4 data protocol tag, must be 0xFB1AB1AF + 4 2 uint sequence number + 6 2 uint sequence ack + 8 4 data bitfield with previous acks +12 1 uint type code for the payload +13 3 none padding, reserved for future use +16 0-484 data payload, contents and length vary, + mostly depending on the type code + +all multibyte values are in LE +the current code does no conversion, so only works on machines +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) + + Packets ======= @@ -10,6 +30,7 @@ a while. Code: 0 Payload: none +Length: 0 Login @@ -23,6 +44,7 @@ Code: 1 Payload: 0 player name, max 32 byte UTF-8 string, shorter names should be zero terminated +Length: 0-32 Join @@ -38,6 +60,7 @@ Payload: 16 pos/vel/rot/ang of the player, 13x 32bit float 68 name of the world the server's currently running max 32 byte UTF-8 string +Length: 68-100 Part @@ -49,3 +72,59 @@ 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 chunk coords of the player, 3x 32bit signed int + 12 pos/vel/rot/ang of the player, 13x 32bit float +Length: 64 + + +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 chunk coords of the entity, 3x 32bit signed int + 16 pos/vel/rot/ang of the entity, 13x 32bit float + 68 bounding box of the entity, 6x 32bit float + 92 flags, 32bit bitfield with boolean values + 1: world collision + 96 entity name, max 32 byte UTF-8 string +Length: 128 + + +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 chunk coords of the entity, 3x 32bit signed int + 16 pos/vel/rot/ang of the entity, 13x 32bit float + 68 next entity... +Length: 4 + multiple of 64, max 452