---
title: "Protocol 168: Complete packet reference"
description: "All 119 Ace of Spades Battle Builder protocol 168 packet IDs with direction, field order, byte width, encoding, implementation state, and evidence status."
canonical: "https://aosplay.net/protocol-168/packets"
markdown: "https://aosplay.net/docs/protocol-168/packets.md"
last_updated: "2026-07-16"
protocol: "Ace of Spades Battle Builder 168"
packet_range: "0-118"
---

# Protocol 168: Complete packet reference

> All 119 Ace of Spades: Battle Builder application packet IDs, including currently unused and provisional records.

The catalog separates verified behavior from implementation-backed and provisional recovery. Every packet document gives its application ID, direction, total or variable wire size, ordered fields, field encodings, byte widths, conditions, purpose, implementation status, and evidence level.

## Framing and byte order

- The first application byte is the packet ID.
- Multi-byte numeric fields are little-endian unless a packet says otherwise.
- Sizes do not include ENet framing, wrapper prefixes, LZF chunk framing, or transport compression.
- A planned packet is part of the recovered retail surface but is not claimed as production-ready.
- BattleSpades-only diagnostic IDs outside 0–118 are not retail Protocol 168 packets.

## Packet index

| Dec | Hex | Packet | Direction | Family | Size | Status | Evidence |
| ---: | ---: | --- | --- | --- | --- | --- | --- |
| 0 | 0x00 | [ClockSync](https://aosplay.net/docs/protocol-168/packets/0.md) | Both | Timing | 9 bytes | Handled + sent | Implementation-backed |
| 1 | 0x01 | [PlaceDynamite](https://aosplay.net/docs/protocol-168/packets/1.md) | C→S | Deployables | 12 bytes | Handled | Live-verified |
| 2 | 0x02 | [WorldUpdate](https://aosplay.net/docs/protocol-168/packets/2.md) | S→C | Replication | 11 + 56P + ΣE + 6T bytes | Sent | Live-verified |
| 3 | 0x03 | [EntityUpdates](https://aosplay.net/docs/protocol-168/packets/3.md) | Inactive | Entities | 7 + ΣE bytes | Planned | Provisional |
| 4 | 0x04 | [ClientData](https://aosplay.net/docs/protocol-168/packets/4.md) | C→S | Input | 16, 18, or 20 bytes | Handled | Live-verified |
| 5 | 0x05 | [SetHP](https://aosplay.net/docs/protocol-168/packets/5.md) | S→C | Combat | 9 bytes | Sent | Implementation-backed |
| 6 | 0x06 | [ShootPacket](https://aosplay.net/docs/protocol-168/packets/6.md) | C→S | Combat | 40 bytes | Handled | Live-verified |
| 7 | 0x07 | [PaintBlockPacket](https://aosplay.net/docs/protocol-168/packets/7.md) | C→S | Building | 14 bytes | Handled | Implementation-backed |
| 8 | 0x08 | [ShootFeedbackPacket](https://aosplay.net/docs/protocol-168/packets/8.md) | S→C | Combat | 12 bytes | Sent | Live-verified |
| 9 | 0x09 | [ShootResponse](https://aosplay.net/docs/protocol-168/packets/9.md) | S→C | Combat | 10 bytes | Sent | Live-verified |
| 10 | 0x0A | [UseOrientedItem](https://aosplay.net/docs/protocol-168/packets/10.md) | Both | Combat | 21 bytes | Handled + sent | Implementation-backed |
| 11 | 0x0B | [SetColor](https://aosplay.net/docs/protocol-168/packets/11.md) | Both | Building | 5 bytes | Handled + sent | Implementation-backed |
| 12 | 0x0C | [SetUGCEditMode](https://aosplay.net/docs/protocol-168/packets/12.md) | Inactive | UGC | 2 bytes | Planned | Provisional |
| 13 | 0x0D | [SetClassLoadout](https://aosplay.net/docs/protocol-168/packets/13.md) | C→S | Players | Variable: 6 + L + ΣS + optional (1 + U) | Handled | Live-verified |
| 14 | 0x0E | [ExistingPlayer](https://aosplay.net/docs/protocol-168/packets/14.md) | Inactive | Players | Variable: 19 + name + L + Σprefabs | Planned | Provisional |
| 15 | 0x0F | [NewPlayerConnection](https://aosplay.net/docs/protocol-168/packets/15.md) | C→S | Players | 6 + name bytes | Handled | Implementation-backed |
| 16 | 0x10 | [ChangeEntity](https://aosplay.net/docs/protocol-168/packets/16.md) | S→C | Entities | 5–10 bytes | Sent | Implementation-backed |
| 17 | 0x11 | [ChangePlayer](https://aosplay.net/docs/protocol-168/packets/17.md) | S→C | Players | 4 or 5 bytes | Sent | Implementation-backed |
| 18 | 0x12 | [POIFocus](https://aosplay.net/docs/protocol-168/packets/18.md) | Inactive | Interface | 7 bytes | Planned | Provisional |
| 19 | 0x13 | [DestroyEntity](https://aosplay.net/docs/protocol-168/packets/19.md) | S→C | Entities | 3 bytes | Sent | Implementation-backed |
| 20 | 0x14 | [HitEntity](https://aosplay.net/docs/protocol-168/packets/20.md) | S→C | Entities | 10 bytes | Sent | Implementation-backed |
| 21 | 0x15 | [CreateEntity](https://aosplay.net/docs/protocol-168/packets/21.md) | S→C | Entities | 34 + 4I + 2F bytes | Sent | Live-verified |
| 22 | 0x16 | [CreateAmbientSound](https://aosplay.net/docs/protocol-168/packets/22.md) | S→C | Audio | Variable: 3 + name + 6P bytes | Sent | Live-verified |
| 23 | 0x17 | [PlaySound](https://aosplay.net/docs/protocol-168/packets/23.md) | S→C | Audio | 7–16 bytes | Sent | Live-verified |
| 24 | 0x18 | [PlayAmbientSound](https://aosplay.net/docs/protocol-168/packets/24.md) | S→C | Audio | Variable: name + 7–16 bytes | Sent | Live-verified |
| 25 | 0x19 | [StopSound](https://aosplay.net/docs/protocol-168/packets/25.md) | Inactive | Audio | 2 bytes | Planned | Provisional |
| 26 | 0x1A | [PlayMusic](https://aosplay.net/docs/protocol-168/packets/26.md) | S→C | Audio | Variable: name + 4 bytes | Sent | Implementation-backed |
| 27 | 0x1B | [StopMusic](https://aosplay.net/docs/protocol-168/packets/27.md) | S→C | Audio | 1 byte | Sent | Implementation-backed |
| 28 | 0x1C | [CreatePlayer](https://aosplay.net/docs/protocol-168/packets/28.md) | S→C | Players | Variable: 21 + name + L + Σprefabs | Sent | Live-verified |
| 29 | 0x1D | [PrefabComplete](https://aosplay.net/docs/protocol-168/packets/29.md) | S→C | Building | 1 byte | Sent | Implementation-backed |
| 30 | 0x1E | [BuildPrefabAction](https://aosplay.net/docs/protocol-168/packets/30.md) | C→S | Building | Variable: 28 + prefab-name bytes | Handled | Implementation-backed |
| 31 | 0x1F | [ErasePrefabAction](https://aosplay.net/docs/protocol-168/packets/31.md) | C→S | Building | Variable: 17 + prefab-name bytes | Handled | Provisional |
| 32 | 0x20 | [BlockBuild](https://aosplay.net/docs/protocol-168/packets/32.md) | Both | Building | 13 bytes | Handled + sent | Implementation-backed |
| 33 | 0x21 | [BlockBuildColored](https://aosplay.net/docs/protocol-168/packets/33.md) | S→C | Building | 15 bytes | Sent | Implementation-backed |
| 34 | 0x22 | [BlockOccupy](https://aosplay.net/docs/protocol-168/packets/34.md) | Inactive | Building | 12 bytes | Planned | Provisional |
| 35 | 0x23 | [BlockLiberate](https://aosplay.net/docs/protocol-168/packets/35.md) | C→S | Building | 12 bytes | Handled | Implementation-backed |
| 36 | 0x24 | [ExplodeCorpse](https://aosplay.net/docs/protocol-168/packets/36.md) | Inactive | Combat | 3 bytes | Planned | Provisional |
| 37 | 0x25 | [Damage](https://aosplay.net/docs/protocol-168/packets/37.md) | S→C | Combat | 21 bytes | Sent | Live-verified |
| 38 | 0x26 | [BlockManagerState](https://aosplay.net/docs/protocol-168/packets/38.md) | Inactive | Building | Variable; non-empty record format unresolved | Planned | Provisional |
| 39 | 0x27 | [ServerBlockAction](https://aosplay.net/docs/protocol-168/packets/39.md) | Inactive | Building | 5 + N × (7 or 10) bytes in generated writer | Planned | Provisional |
| 40 | 0x28 | [BlockLine](https://aosplay.net/docs/protocol-168/packets/40.md) | C→S | Building | 18 bytes | Handled | Live-verified |
| 41 | 0x29 | [MinimapBillboard](https://aosplay.net/docs/protocol-168/packets/41.md) | Inactive | Interface | Variable: 15 + icon-name bytes | Planned | Provisional |
| 42 | 0x2A | [MinimapBillboardClear](https://aosplay.net/docs/protocol-168/packets/42.md) | Inactive | Interface | 3 bytes | Planned | Provisional |
| 43 | 0x2B | [MinimapZone](https://aosplay.net/docs/protocol-168/packets/43.md) | S→C | Interface | 21 bytes | Sent | Live-verified |
| 44 | 0x2C | [MinimapZoneClear](https://aosplay.net/docs/protocol-168/packets/44.md) | Inactive | Interface | 13 bytes | Planned | Provisional |
| 45 | 0x2D | [StateData](https://aosplay.net/docs/protocol-168/packets/45.md) | S→C | Replication | Variable: 61-byte shell + strings, arrays, and entities | Sent | Implementation-backed |
| 46 | 0x2E | [KillAction](https://aosplay.net/docs/protocol-168/packets/46.md) | S→C | Combat | 8 bytes | Sent | Live-verified |
| 47 | 0x2F | [GenericVoteMessage](https://aosplay.net/docs/protocol-168/packets/47.md) | Both | Interface | Variable: 6 + candidates + title + description | Handled + sent | Live-verified |
| 48 | 0x30 | [InitiateKickMessage](https://aosplay.net/docs/protocol-168/packets/48.md) | C→S | Interface | 4 bytes | Handled | Implementation-backed |
| 49 | 0x31 | [ChatMessage](https://aosplay.net/docs/protocol-168/packets/49.md) | Both | Interface | Variable: 4 + text bytes | Handled + sent | Live-verified |
| 50 | 0x32 | [LocalisedMessage](https://aosplay.net/docs/protocol-168/packets/50.md) | S→C | Interface | Variable: 5 + string ID + parameters | Sent | Implementation-backed |
| 51 | 0x33 | [SkyboxData](https://aosplay.net/docs/protocol-168/packets/51.md) | S→C | Map sync | Variable: 2 + filename bytes | Sent | Implementation-backed |
| 52 | 0x34 | [MapEnded](https://aosplay.net/docs/protocol-168/packets/52.md) | S→C | Map sync | 1 byte | Sent | Live-verified |
| 53 | 0x35 | [ShowGameStats](https://aosplay.net/docs/protocol-168/packets/53.md) | S→C | Progression | 1 byte | Sent | Live-verified |
| 54 | 0x36 | [MapDataStart](https://aosplay.net/docs/protocol-168/packets/54.md) | Inactive | Map sync | 1 byte | Planned | Provisional |
| 55 | 0x37 | [MapSyncStart](https://aosplay.net/docs/protocol-168/packets/55.md) | S→C | Map sync | 1 byte | Sent | Live-verified |
| 56 | 0x38 | [MapDataChunk](https://aosplay.net/docs/protocol-168/packets/56.md) | Inactive | Map sync | 4 + N bytes | Planned | Provisional |
| 57 | 0x39 | [MapSyncChunk](https://aosplay.net/docs/protocol-168/packets/57.md) | S→C | Map sync | 4 + N bytes | Sent | Live-verified |
| 58 | 0x3A | [MapDataEnd](https://aosplay.net/docs/protocol-168/packets/58.md) | Inactive | Map sync | 1 byte | Planned | Provisional |
| 59 | 0x3B | [MapSyncEnd](https://aosplay.net/docs/protocol-168/packets/59.md) | S→C | Map sync | 1 byte | Sent | Live-verified |
| 60 | 0x3C | [MapDataValidation](https://aosplay.net/docs/protocol-168/packets/60.md) | Both | Map sync | 5 bytes | Handled + sent | Live-verified |
| 61 | 0x3D | [PackStart](https://aosplay.net/docs/protocol-168/packets/61.md) | Inactive | Map sync | 9 bytes | Planned | Provisional |
| 62 | 0x3E | [PackResponse](https://aosplay.net/docs/protocol-168/packets/62.md) | Inactive | Map sync | 2 bytes | Planned | Provisional |
| 63 | 0x3F | [PackChunk](https://aosplay.net/docs/protocol-168/packets/63.md) | Inactive | Map sync | 1 + remaining payload bytes | Planned | Provisional |
| 64 | 0x40 | [PlayerLeft](https://aosplay.net/docs/protocol-168/packets/64.md) | S→C | Players | 2 bytes | Sent | Implementation-backed |
| 65 | 0x41 | [ProgressBar](https://aosplay.net/docs/protocol-168/packets/65.md) | Inactive | Interface | 11 bytes | Planned | Provisional |
| 66 | 0x42 | [RankUps](https://aosplay.net/docs/protocol-168/packets/66.md) | Inactive | Progression | Variable: 5 + rank-up records | Planned | Provisional |
| 67 | 0x43 | [GameStats](https://aosplay.net/docs/protocol-168/packets/67.md) | S→C | Progression | 9 + 8N bytes | Sent | Implementation-backed |
| 68 | 0x44 | [UGCObjectives](https://aosplay.net/docs/protocol-168/packets/68.md) | Inactive | UGC | Variable: 6 + objective records | Planned | Provisional |
| 69 | 0x45 | [Restock](https://aosplay.net/docs/protocol-168/packets/69.md) | S→C | Players | 3 bytes | Sent | Live-verified |
| 70 | 0x46 | [PickPickup](https://aosplay.net/docs/protocol-168/packets/70.md) | S→C | Players | 4 bytes | Sent | Implementation-backed |
| 71 | 0x47 | [DropPickup](https://aosplay.net/docs/protocol-168/packets/71.md) | Both | Players | 19 bytes | Handled + sent | Live-verified |
| 72 | 0x48 | [ForceShowScores](https://aosplay.net/docs/protocol-168/packets/72.md) | Inactive | Progression | 2 bytes | Planned | Provisional |
| 73 | 0x49 | [ShowTextMessage](https://aosplay.net/docs/protocol-168/packets/73.md) | S→C | Interface | 4 bytes | Reversed / unused | Live-verified |
| 74 | 0x4A | [FogColor](https://aosplay.net/docs/protocol-168/packets/74.md) | S→C | Interface | 5 bytes | Sent | Implementation-backed |
| 75 | 0x4B | [TimeScale](https://aosplay.net/docs/protocol-168/packets/75.md) | Inactive | Teams | 3 bytes | Planned | Provisional |
| 76 | 0x4C | [WeaponReload](https://aosplay.net/docs/protocol-168/packets/76.md) | Both | Combat | 4 bytes | Handled + sent | Implementation-backed |
| 77 | 0x4D | [ChangeTeam](https://aosplay.net/docs/protocol-168/packets/77.md) | C→S | Players | 3 bytes | Handled | Implementation-backed |
| 78 | 0x4E | [ChangeClass](https://aosplay.net/docs/protocol-168/packets/78.md) | C→S | Players | 3 bytes | Handled | Implementation-backed |
| 79 | 0x4F | [LockTeam](https://aosplay.net/docs/protocol-168/packets/79.md) | Inactive | Teams | 3 bytes | Planned | Provisional |
| 80 | 0x50 | [TeamLockClass](https://aosplay.net/docs/protocol-168/packets/80.md) | Inactive | Teams | 3 bytes | Planned | Provisional |
| 81 | 0x51 | [TeamLockScore](https://aosplay.net/docs/protocol-168/packets/81.md) | Inactive | Teams | 3 bytes | Planned | Provisional |
| 82 | 0x52 | [TeamInfiniteBlocks](https://aosplay.net/docs/protocol-168/packets/82.md) | Inactive | Teams | 3 bytes | Planned | Provisional |
| 83 | 0x53 | [TeamMapVisibility](https://aosplay.net/docs/protocol-168/packets/83.md) | S→C | Teams | 3 bytes | Sent | Live-verified |
| 84 | 0x54 | [DisplayCountdown](https://aosplay.net/docs/protocol-168/packets/84.md) | S→C | Interface | 5 bytes | Sent | Live-verified |
| 85 | 0x55 | [SetScore](https://aosplay.net/docs/protocol-168/packets/85.md) | S→C | Progression | 8 bytes | Sent | Implementation-backed |
| 86 | 0x56 | [UseCommand](https://aosplay.net/docs/protocol-168/packets/86.md) | C→S | Deployables | 1 byte | Handled | Implementation-backed |
| 87 | 0x57 | [PlaceMG](https://aosplay.net/docs/protocol-168/packets/87.md) | C→S | Deployables | 14 bytes | Handled | Live-verified |
| 88 | 0x58 | [PlaceRocketTurret](https://aosplay.net/docs/protocol-168/packets/88.md) | C→S | Deployables | 14 bytes | Handled | Live-verified |
| 89 | 0x59 | [PlaceLandmine](https://aosplay.net/docs/protocol-168/packets/89.md) | C→S | Deployables | 12 bytes | Handled | Live-verified |
| 90 | 0x5A | [PlaceMedPack](https://aosplay.net/docs/protocol-168/packets/90.md) | C→S | Deployables | 13 bytes | Handled | Live-verified |
| 91 | 0x5B | [PlaceRadarStation](https://aosplay.net/docs/protocol-168/packets/91.md) | C→S | Deployables | 12 bytes | Handled | Live-verified |
| 92 | 0x5C | [PlaceC4](https://aosplay.net/docs/protocol-168/packets/92.md) | C→S | Deployables | 12 bytes | Handled | Live-verified |
| 93 | 0x5D | [DetonateC4](https://aosplay.net/docs/protocol-168/packets/93.md) | C→S | Deployables | 5 bytes | Handled | Implementation-backed |
| 94 | 0x5E | [BlockSuckerPacket](https://aosplay.net/docs/protocol-168/packets/94.md) | Both | Building | 8 bytes | Handled + sent | Implementation-backed |
| 95 | 0x5F | [DisguisePacket](https://aosplay.net/docs/protocol-168/packets/95.md) | C→S | Players | 6 bytes | Handled | Implementation-backed |
| 96 | 0x60 | [DisableEntity](https://aosplay.net/docs/protocol-168/packets/96.md) | Inactive | Entities | 3 bytes | Planned | Provisional |
| 97 | 0x61 | [PlaceUGC](https://aosplay.net/docs/protocol-168/packets/97.md) | Inactive | UGC | 13 bytes | Planned | Provisional |
| 98 | 0x62 | [InitialUGCBatch](https://aosplay.net/docs/protocol-168/packets/98.md) | Inactive | UGC | 2 + 11N bytes | Planned | Provisional |
| 99 | 0x63 | [ReqestUGCEntities](https://aosplay.net/docs/protocol-168/packets/99.md) | Inactive | UGC | 3 bytes | Planned | Provisional |
| 100 | 0x64 | [UGCMessage](https://aosplay.net/docs/protocol-168/packets/100.md) | Inactive | UGC | 2 bytes | Planned | Provisional |
| 101 | 0x65 | [UGCMapLoadingFromHost](https://aosplay.net/docs/protocol-168/packets/101.md) | Inactive | UGC | 2 bytes | Planned | Provisional |
| 102 | 0x66 | [UGCMapInfo](https://aosplay.net/docs/protocol-168/packets/102.md) | Inactive | UGC | 5 + N bytes | Planned | Provisional |
| 103 | 0x67 | [VoiceData](https://aosplay.net/docs/protocol-168/packets/103.md) | Inactive | UGC | 4 + N bytes | Planned | Provisional |
| 104 | 0x68 | [PlaceFlareBlock](https://aosplay.net/docs/protocol-168/packets/104.md) | C→S | Deployables | 11 bytes | Handled | Live-verified |
| 105 | 0x69 | [SteamSessionTicket](https://aosplay.net/docs/protocol-168/packets/105.md) | C→S | Authentication | 5 + N bytes | Handshake | Live-verified |
| 106 | 0x6A | [TerritoryBaseState](https://aosplay.net/docs/protocol-168/packets/106.md) | Inactive | Teams | 7 bytes | Planned | Provisional |
| 107 | 0x6B | [DebugDraw](https://aosplay.net/docs/protocol-168/packets/107.md) | Inactive | Diagnostics | 10, 24, or 34 bytes | Planned | Provisional |
| 108 | 0x6C | [LockToZone](https://aosplay.net/docs/protocol-168/packets/108.md) | Inactive | Teams | 13 bytes | Planned | Provisional |
| 109 | 0x6D | [HelpMessage](https://aosplay.net/docs/protocol-168/packets/109.md) | Inactive | Interface | Variable: 6 + message strings | Planned | Provisional |
| 110 | 0x6E | [ClientInMenu](https://aosplay.net/docs/protocol-168/packets/110.md) | C→S | Players | 2 bytes | Handled | Implementation-backed |
| 111 | 0x6F | [Password](https://aosplay.net/docs/protocol-168/packets/111.md) | Inactive | Authentication | Variable: 2 + password bytes | Planned | Provisional |
| 112 | 0x70 | [PasswordNeeded](https://aosplay.net/docs/protocol-168/packets/112.md) | Inactive | Authentication | 1 byte | Planned | Provisional |
| 113 | 0x71 | [PasswordProvided](https://aosplay.net/docs/protocol-168/packets/113.md) | Inactive | Authentication | Variable: 2 + password bytes | Planned | Provisional |
| 114 | 0x72 | [InitialInfo](https://aosplay.net/docs/protocol-168/packets/114.md) | S→C | Map sync | Variable: 55-byte shell + 9 strings and counted arrays | Sent | Live-verified |
| 115 | 0x73 | [ForceTeamJoin](https://aosplay.net/docs/protocol-168/packets/115.md) | Inactive | Teams | 3 bytes | Planned | Provisional |
| 116 | 0x74 | [PositionData](https://aosplay.net/docs/protocol-168/packets/116.md) | C→S | Input | 7 or 13 bytes | Handled | Provisional |
| 117 | 0x75 | [TeamProgress](https://aosplay.net/docs/protocol-168/packets/117.md) | Inactive | Teams | 6 or 12 bytes | Planned | Provisional |
| 118 | 0x76 | [SetGroundColors](https://aosplay.net/docs/protocol-168/packets/118.md) | Inactive | Interface | 2 + 4N bytes | Planned | Provisional |

## Research method

Claims are promoted through captured or decompiled evidence, isolated layout recovery, implementation, regression fixtures, and real-client validation. See the [Protocol 168 guide](https://aosplay.net/protocol-168) for the full clean-room method.
