X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;ds=sidebyside;f=doc%2Fprotocol;h=43c14dae4933a0ad9de335dd7cf2bebd0f52d58b;hb=c6ca9d21e45af5ea7caeec722a9b59fdf3aa3b24;hp=723f3cfbd38586283fb24ca310f5858e60593bd4;hpb=104592aabdc70b21065c35fe4d092fc6cdaa1f49;p=blank.git diff --git a/doc/protocol b/doc/protocol index 723f3cf..43c14da 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 @@ -21,5 +42,46 @@ been reached. Code: 1 Payload: - player name, max 32 byte UTF-8 string, - shorter names should be zero terminated + 0 player name, max 32 byte UTF-8 string, + shorter names should be zero terminated +Length: 0-32 + + +Join +---- + +Sent by the server either as a response to a successful login or when +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 + 68 name of the world the server's currently running + max 32 byte UTF-8 string +Length: 68-100 + + +Part +---- + +Sent by the server either as a respons to a failed login or when the +client was kicked. +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