---
title: "Packet 97: PlaceUGC"
description: "Places or removes a UGC object at a literal voxel coordinate."
canonical: "https://aosplay.net/protocol-168/packets/97"
markdown: "https://aosplay.net/docs/protocol-168/packets/97.md"
last_updated: "2026-07-16"
protocol: "Ace of Spades Battle Builder 168"
packet_id_decimal: "97"
packet_id_hex: "0x61"
direction: "Inactive"
family: "UGC"
implementation_status: "Planned"
evidence: "Provisional"
wire_size: "13 bytes"
---

# Packet 97: PlaceUGC

> Places or removes a UGC object at a literal voxel coordinate.

- **Decimal ID:** 97
- **Hex ID:** 0x61
- **Direction:** Inactive
- **Family:** UGC
- **Status:** Planned
- **Evidence:** Provisional
- **Wire size:** 13 bytes

## Implementation note

The corrected raw-voxel runtime decoder exists, but the end-to-end UGC placement workflow is not active.

## Exact wire layout

The application packet ID is the first byte. The remaining rows are in decode order. Byte sizes exclude ENet headers, wrapper prefixes, LZF chunk framing, and compression effects.

| # | Field | Encoding | Bytes | Purpose | Condition |
| ---: | --- | --- | ---: | --- | --- |
| 0 | `packet_id` | u8 | 1 | Always 97 (0x61). | — |
| 1 | `loop_count` | i32 LE | 4 | Simulation-loop stamp used for ordering, prediction, or reconciliation. | — |
| 2 | `position` | 3 × u16 LE | 6 | Raw X, Y, and Z voxel coordinates. | — |
| 3 | `ugc_item_id` | u8 | 1 | ugc item id value. | — |
| 4 | `placing` | boolean u8 | 1 | placing value. | — |

## Encoding conventions

- `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 documented order.

## Related resources

- [HTML packet page](https://aosplay.net/protocol-168/packets/97)
- [Complete packet catalog](https://aosplay.net/protocol-168/packets)
- [Packet catalog in Markdown](https://aosplay.net/docs/protocol-168/packets.md)
- [Protocol 168 guide](https://aosplay.net/protocol-168)
