Packet 4 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 4 (0x04). |
| 1 | loop_count | i32 LE | 4 | Simulation-loop stamp used for ordering, prediction, or reconciliation. |
| 2 | player_and_palette | u8 | 1 | Bits 0–6 are player_id; bit 7 is palette_enabled. |
| 3 | tool_id | u8 | 1 | Equipped tool identifier. |
| 4 | orientation_x | orientation16 LE (1/8192) | 2 | orientation x value. |
| 5 | orientation_y | orientation16 LE (1/8192) | 2 | orientation y value. |
| 6 | orientation_z | orientation16 LE (1/8192) | 2 | orientation z value. |
| 7 | opaque_orientation_byte | u8 | 1 | Retail field retained as `ooo`; exact gameplay meaning remains unknown. |
| 8 | input_flags | u8 | 1 | 0x01 up, 0x02 down, 0x04 left, 0x08 right, 0x10 jump, 0x20 crouch, 0x40 sneak, 0x80 sprint. |
| 9 | action_flags | u8 | 1 | 0x01 primary, 0x02 secondary, 0x04 zoom, 0x08 pickup, 0x10 display weapon, 0x20 on fire, 0x40 deployed, 0x80 hover. |
| 10 | weapon_deployment_yaw | optional fixed16 or f32 LE | 0, 2, or 4 | Known retail variants omit this value or encode it as fixed16/f32.When: Remaining payload bytes select the variant. |
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.