AOS REVIVALJoin Discord
Packet ID0280x1C
Players // wire record

CreatePlayer

Creates a player character and also serves as the active roster format. Class, loadout, and all selected prefab names come from one committed selection.

S→CSentLive-verifiedVariable: 21 + name + L + Σprefabs
Exact field order

Packet 28 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.

Packet 28 CreatePlayer fields in byte order
#FieldEncodingBytesPurpose
0packet_idu81Always 28 (0x1C).
1player_idu81Compact player-slot identifier.
2demo_playerboolean u81demo player value.
3class_idu81Selected character class identifier.
4teamu81team value.
5deadboolean u81dead value.
6local_languageu81local language value.
7position3 × fixed16 LE6X, Y, and Z components at 1/64-unit precision.
8orientation3 × fixed16 LE6X, Y, and Z components at 1/64-unit precision.
9nameNUL-terminated UTF-8 stringN + 1Null-terminated UTF-8/ASCII-compatible string.
10loadout_countu81L: tool count.
11loadout[]L × u8LOrdered tool IDs.
12prefab_countu81prefab count value.
13prefabs[]repeated NUL stringsΣ(N + 1)Selected prefab names.
Protocol convention

How to read this layout

  • LE means least-significant byte first.
  • fixed16 is two-byte sign-magnitude at 1/64 precision.
  • orientation16 uses the measured 1/8192 orientation mapping.
  • NUL strings consume their encoded byte length plus one 00 terminator.
  • Counted arrays repeat immediately in the order shown.