AOS REVIVALJoin Discord
Packet ID0020x02
Replication // wire record

WorldUpdate

The 30 Hz unreliable snapshot stream for remote players, moving entities, and rocket turrets. P is the player count, E contains variable Entity records, and T is the turret count.

S→CSentLive-verified11 + 56P + ΣE + 6T bytes
Exact field order

Packet 2 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 2 WorldUpdate fields in byte order
#FieldEncodingBytesPurpose
0packet_idu81Always 2 (0x02).
1loop_counti32 LE4Global snapshot clock.
2player_countu16 LE2Number of 56-byte player rows.
3players[].player_idu81Player represented by this repeated row.
4players[].position3 × IEEE-754 f32 LE12X, Y, and Z floating-point components.
5players[].orientation3 × IEEE-754 f32 LE12X, Y, and Z floating-point components.
6players[].velocity3 × IEEE-754 f32 LE12X, Y, and Z floating-point components.
7players[].pingi16 LE2Latency/sample value retained by the retail row.
8players[].pongi32 LE4Last ClientData loop consumed for a human; a monotonic server loop for peerless bots.
9players[].hpi16 LE2Current authoritative health.
10players[].input_flagsu81Remote movement input bit field.
11players[].action_flagsu81Remote primary, secondary, jetpack, zoom, and deployment actions.
12players[].state_flagsu810x01 parachute, 0x02 disguise, and 0x08 touching goo.
13players[].toolu81Tool selected for the remote character.
14players[].pickupi81Carried pickup ID; -1 (0xFF) is the required no-pickup sentinel.
15players[].jetpack_fuelsign-magnitude fixed16 LE (1/64)2players[].jetpack fuel value.
16players[].spawn_protection_timersign-magnitude fixed16 LE (1/64)2players[].spawn protection timer value.
17players[].weapon_deployment_yawsign-magnitude fixed16 LE (1/64)2players[].weapon deployment yaw value.
18entity_countu16 LE2Number of variable Entity records that follow.
19entities[]Entity record33 + 4I + 2FEntity layout from packet 21 without another packet-ID byte.
20turret_countu16 LE2Number of compact rocket-turret aim records.
21turrets[]i16 + 2 × fixed166Entity ID, yaw, and pitch.
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.