💻 CLI¶
Boon includes a command-line tool for inspecting demo files. It is built from the
boon crate.
Installation¶
Download a prebuilt binary from the GitHub Releases page.
Or build from source (requires Rust):
cd boon
cargo build --release -p boon-cli
# Binary is at target/release/boon
Usage¶
Run boon --help to see all available commands, and boon <command> --help for details on any specific command.
Commands¶
verify¶
Check that a file is a valid demo.
boon verify match.dem
info¶
Display file header and game information: build number, map, playback time, match ID, game mode, winner, and player list.
boon info match.dem
messages¶
List all commands in the demo file with metadata.
boon messages match.dem
Options:
Flag |
Description |
|---|---|
|
Filter by command type (substring match) |
|
Filter by exact tick |
|
Minimum tick |
|
Maximum tick |
|
Minimum message size |
|
Maximum message size |
|
Maximum messages to display |
Example:
# Show only full packets
boon messages match.dem --cmd FullPacket
# Show messages in a tick range
boon messages match.dem --min-tick 1000 --max-tick 2000
classes¶
Display the class ID to network name mapping.
boon classes match.dem
Options:
Flag |
Description |
|---|---|
|
Filter by class name (substring) |
|
Maximum classes to display |
Example:
# Find all Citadel player-related classes
boon classes match.dem --filter Player
send-tables¶
Display serializer (send table) definitions — the field schemas for each entity class.
boon send-tables match.dem --summary
Options:
Flag |
Description |
|---|---|
|
Filter by serializer name (substring) |
|
Show only names and field counts |
|
Maximum serializers to display |
Example:
# See all fields on the player pawn
boon send-tables match.dem --filter CCitadelPlayerPawn
string-tables¶
Display string tables from the demo initialization.
boon string-tables match.dem --summary
Options:
Flag |
Description |
|---|---|
|
Filter by table name (substring) |
|
Show only names and entry counts |
|
Maximum tables to display |
Example:
# Inspect instance baselines
boon string-tables match.dem --filter instancebaseline
events¶
List decoded game events from a demo file (user messages parsed from embedded packets).
boon events match.dem
Options:
Flag |
Description |
|---|---|
|
Filter events by name (substring match) |
|
Show only event names and counts |
|
Maximum tick to parse up to |
|
Maximum events to display |
|
Decode and display full message contents |
Example:
# Count all event types
boon events match.dem --summary
# Show only kill events
boon events match.dem --filter HeroKilled
# Inspect full message payloads for damage events
boon events match.dem --filter Damage --inspect --limit 5
summary¶
Print a post-match summary extracted from the last-tick game event, including match overview, player stats with gold breakdowns, objectives, mid boss kills, and damage matrix info.
boon summary match.dem
entities¶
Inspect entity state at a specific game tick.
boon entities match.dem --tick 10000 --summary
Options:
Flag |
Description |
|---|---|
|
(required) Game tick to parse to |
|
Filter by class name (substring) |
|
Show only class names and counts |
|
Max fields per entity (default: 20) |
|
Max entities to display |
Example:
# Show all player controllers with full fields
boon entities match.dem --tick 10000 --filter CCitadelPlayerController --fields 50
# Count all entity types at a given tick
boon entities match.dem --tick 10000 --summary
abilities¶
List important ability usage events from a demo.
boon abilities match.dem
Options:
Flag |
Description |
|---|---|
|
Filter abilities by name (substring) |
|
Show only ability names and counts |
|
Maximum abilities to display |
|
Filter by exact tick |
|
Minimum tick |
|
Maximum tick |
ability-upgrades¶
List hero ability point spending events (skill tier upgrades).
boon ability-upgrades match.dem
Options:
Flag |
Description |
|---|---|
|
Filter abilities by name (substring) |
|
Show only ability names and counts |
|
Maximum entries to display |
|
Filter by exact tick |
|
Minimum tick |
|
Maximum tick |
shop-events¶
List item shop transactions (purchases, upgrades, sells, swaps).
boon shop-events match.dem
Options:
Flag |
Description |
|---|---|
|
Filter by ability name or change type (substring) |
|
Show only ability+change combos and counts |
|
Maximum entries to display |
|
Filter by exact tick |
|
Minimum tick |
|
Maximum tick |
chat¶
List in-game chat messages.
boon chat match.dem
Options:
Flag |
Description |
|---|---|
|
Filter by text or chat type (substring) |
|
Show only hero message counts |
|
Maximum entries to display |
|
Filter by exact tick |
|
Minimum tick |
|
Maximum tick |
objectives¶
Track per-tick objective entity health (walkers, titans, barracks, mid boss).
boon objectives match.dem --summary
Options:
Flag |
Description |
|---|---|
|
Filter by objective type (substring: walker, titan, barracks, mid_boss) |
|
Show only objective type/team/lane counts |
|
Maximum entries to display |
|
Filter by exact tick |
|
Minimum tick |
|
Maximum tick |
mid-boss¶
List mid boss lifecycle events (spawn, kill, rejuvenator buff pickup/use/expire).
boon mid-boss match.dem
Options:
Flag |
Description |
|---|---|
|
Filter by event type (substring) |
|
Show only event type counts |
|
Maximum entries to display |
|
Filter by exact tick |
|
Minimum tick |
|
Maximum tick |
troopers¶
Track alive lane trooper position and state per tick. Includes CNPC_Trooper and
CNPC_TrooperBoss entities.
boon troopers match.dem --limit 20
Options:
Flag |
Description |
|---|---|
|
Filter by trooper type (substring: trooper, trooper_boss) |
|
Show only trooper type/team/lane counts |
|
Maximum entries to display |
|
Filter by exact tick |
|
Minimum tick |
|
Maximum tick |
neutrals¶
Track neutral creep state changes. Only emits rows when state changes (health, position), significantly reducing output compared to per-tick tracking.
boon neutrals match.dem --summary
Options:
Flag |
Description |
|---|---|
|
Filter by neutral fields (substring) |
|
Show only neutral type/team counts |
|
Maximum entries to display |
|
Filter by exact tick |
|
Minimum tick |
|
Maximum tick |
stat-modifiers¶
Track permanent stat bonus change events (urn and breakable pickups).
boon stat-modifiers match.dem
Options:
Flag |
Description |
|---|---|
|
Filter by stat name (substring) |
|
Show per-hero final stat values |
|
Maximum entries to display |
|
Filter by exact tick |
|
Minimum tick |
|
Maximum tick |
active-modifiers¶
Track active buff/debuff modifiers on players (applied/removed events).
boon active-modifiers match.dem
Options:
Flag |
Description |
|---|---|
|
Filter by modifier or ability name (substring) |
|
Show applied event counts per ability per hero |
|
Maximum entries to display |
|
Filter by exact tick |
|
Minimum tick |
|
Maximum tick |
ability-ticks¶
Track ability cooldown and charge state changes. Change-only: a row is printed
for an ability only on the tick its cooldown or charge state changes. Each row
shows the cooldown window (CD Start → CD End, where CD End is when the
ability is available again), remaining charges (Chg), and the recharge window
of the regenerating charge (Rch Strt → Rch End). Slot separates signature
abilities (small values) from innate movement abilities (jump, dash, slide, …).
boon ability-ticks match.dem --filter lightning_ball
boon ability-ticks match.dem --summary
Options:
Flag |
Description |
|---|---|
|
Filter abilities by name (substring) |
|
Show state-change counts per ability per hero |
|
Maximum entries to display |
|
Filter by exact tick |
|
Minimum tick |
|
Maximum tick |