AOS REVIVALJoin Discord
Packet ID0040x04
Input // wire record

ClientData

Buffered client input applied at its matching simulation tick. Bit 7 of the player byte enables the palette; bits 0–6 hold the player ID.

C→SHandledLive-verified16, 18, or 20 bytes
Exact field order

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.

Packet 4 ClientData fields in byte order
#FieldEncodingBytesPurpose
0packet_idu81Always 4 (0x04).
1loop_counti32 LE4Simulation-loop stamp used for ordering, prediction, or reconciliation.
2player_and_paletteu81Bits 0–6 are player_id; bit 7 is palette_enabled.
3tool_idu81Equipped tool identifier.
4orientation_xorientation16 LE (1/8192)2orientation x value.
5orientation_yorientation16 LE (1/8192)2orientation y value.
6orientation_zorientation16 LE (1/8192)2orientation z value.
7opaque_orientation_byteu81Retail field retained as `ooo`; exact gameplay meaning remains unknown.
8input_flagsu810x01 up, 0x02 down, 0x04 left, 0x08 right, 0x10 jump, 0x20 crouch, 0x40 sneak, 0x80 sprint.
9action_flagsu810x01 primary, 0x02 secondary, 0x04 zoom, 0x08 pickup, 0x10 display weapon, 0x20 on fire, 0x40 deployed, 0x80 hover.
10weapon_deployment_yawoptional fixed16 or f32 LE0, 2, or 4Known 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

  • 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.