]> git.localhorst.tv Git - blank.git/blobdiff - doc/protocol
fix server state update
[blank.git] / doc / protocol
index 63055a267fce123b022ef54ba6fdfad26ef649c4..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
@@ -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