]> git.localhorst.tv Git - blank.git/blobdiff - doc/protocol
fix server state update
[blank.git] / doc / protocol
index 723f3cfbd38586283fb24ca310f5858e60593bd4..a02ff2afa4bffa99b29dc32b7fe448e3d115af13 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,89 @@ 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
+
+
+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