Packet 14 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 14 (0x0E). |
| 1 | player_id | u8 | 1 | Compact player-slot identifier. |
| 2 | demo_player | boolean u8 | 1 | demo player value. |
| 3 | team | u8 | 1 | team value. |
| 4 | class_id | u8 | 1 | Selected character class identifier. |
| 5 | tool | u8 | 1 | tool value. |
| 6 | pickup | i8 | 1 | pickup value. |
| 7 | dead | boolean u8 | 1 | dead value. |
| 8 | score | i32 LE | 4 | score value. |
| 9 | forced_team | boolean u8 | 1 | forced team value. |
| 10 | local_language | u8 | 1 | local language value. |
| 11 | color | BGR888 | 3 | Three colour channels written blue, green, then red. |
| 12 | name | NUL-terminated UTF-8 string | N + 1 | Null-terminated UTF-8/ASCII-compatible string. |
| 13 | loadout_count | u8 | 1 | loadout count value. |
| 14 | loadout[] | L × u8 | L | Tool IDs. |
| 15 | prefab_count | u8 | 1 | prefab count value. |
| 16 | prefabs[] | repeated NUL strings | Σ(N + 1) | Prefab names. |
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.