AOS REVIVALJoin Discord
Packet ID0450x2D
Replication // wire record

StateData

The per-spawn GameScene snapshot: lighting, physics, mode, teams, class locks, prefabs, static entities, screenshot cameras, and rollover state.

S→CSentImplementation-backedVariable: 61-byte shell + strings, arrays, and entities
Exact field order

Packet 45 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 45 StateData fields in byte order
#FieldEncodingBytesPurpose
0packet_idu81Always 45 (0x2D).
1player_idu81Receiving player's slot.
2fog_colorBGR8883Three colour channels written blue, green, then red.
3gravitysign-magnitude fixed16 LE (1/64)2gravity value.
4light_colorBGR8883Three colour channels written blue, green, then red.
5light_direction3 × fixed16 LE (Z,Y,X)6Primary light direction written in reverse component order.
6back_light_colorBGR8883Three colour channels written blue, green, then red.
7back_light_direction3 × fixed16 LE (Z,Y,X)6Back-light direction.
8ambient_light_colorBGR8883Three colour channels written blue, green, then red.
9ambient_light_intensitysign-magnitude fixed16 LE (1/64)2ambient light intensity value.
10time_scalesign-magnitude fixed16 LE (1/64)2time scale value.
11score_limitu81score limit value.
12mode_typeu81mode type value.
13team_headcount_typeu81team headcount type value.
14team1_nameNUL-terminated UTF-8 stringN + 1team1 name value.
15team1_colorBGR8883Three colour channels written blue, green, then red.
16team1_scorei32 LE4team1 score value.
17team1_flagsu81Lock, visibility, score, infinite-block, class-lock, and score-lock bits.
18team1_class_countu81team1 class count value.
19team1_classes[]C1 × u8C1Allowed class IDs.
20team2_nameNUL-terminated UTF-8 stringN + 1team2 name value.
21team2_colorBGR8883Three colour channels written blue, green, then red.
22team2_scorei32 LE4team2 score value.
23team2_flagsu81Lock, visibility, score, infinite-block, class-lock, and score-lock bits.
24team2_class_countu81team2 class count value.
25team2_classes[]C2 × u8C2Allowed class IDs.
26global_lock_flagsu81Bit 0 locks team swap; bit 1 locks spectator swap.
27prefab_countu81prefab count value.
28prefab_paddingu81Required zero padding.
29prefabs[]repeated NUL stringsΣ(N + 1)Available prefab names.
30entity_countu81entity count value.
31entity_paddingu81Required zero padding.
32entities[]Entity recordsΣ(33 + 4I + 2F)Static scene entities using the packet-21 inner layout.
33camera_point_countu81camera point count value.
34camera_points[]P × 3 × fixed16 LE (Z,Y,X)6PScreenshot camera positions.
35camera_rotation_countu81camera rotation count value.
36camera_rotations[]R × 3 × fixed16 LE (Z,Y,X)6RScreenshot camera rotations.
37has_map_endedboolean u81has map ended value.
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.