]> git.localhorst.tv Git - blank.git/blobdiff - doc/protocol
send player updates from client to server
[blank.git] / doc / protocol
index 723f3cfbd38586283fb24ca310f5858e60593bd4..43c14dae4933a0ad9de335dd7cf2bebd0f52d58b 100644 (file)
@@ -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