Packet 30 wire layout
The first byte is the application packet ID. The rows after it appear in decode order. Sizes exclude ENet headers, the outer wrapper prefix, LZF chunk framing, and compression effects.
| # | Field | Encoding | Bytes | Purpose |
|---|---|---|---|---|
| 0 | packet_id | u8 | 1 | Always 30 (0x1E). |
| 1 | loop_count | i32 LE | 4 | Simulation-loop stamp used for ordering, prediction, or reconciliation. |
| 2 | prefab_name | NUL-terminated UTF-8 string | N + 1 | prefab name value. |
| 3 | player_id | u8 | 1 | Compact player-slot identifier. |
| 4 | prefab_yaw | u8 | 1 | prefab yaw value. |
| 5 | prefab_pitch | u8 | 1 | prefab pitch value. |
| 6 | prefab_roll | u8 | 1 | prefab roll value. |
| 7 | from_block_index | i32 LE | 4 | from block index value. |
| 8 | to_block_index | i32 LE | 4 | to block index value. |
| 9 | position | 3 × i16 LE | 6 | Raw signed-short anchor coordinates. |
| 10 | color | BGR888 | 3 | Three colour channels written blue, green, then red. |
| 11 | add_to_user_blocks | boolean u8 | 1 | add to user blocks value. |
Protocol convention
How to read this layout
LEmeans least-significant byte first.fixed16is two-byte sign-magnitude at 1/64 precision.orientation16uses the measured 1/8192 orientation mapping.- NUL strings consume their encoded byte length plus one
00terminator. - Counted arrays repeat immediately in the order shown.