BoonΒΆ
Boon is a fast Deadlock demo / replay parser written in Rust with native Python bindings. It parses Source 2 demo files (.dem) and returns Polars DataFrames, giving you structured access to match data without dealing with the binary format yourself.
Why Boon?ΒΆ
Deadlock demo files contain a wealth of match data β player positions, kills, damage, item builds, objective state, and more β but the Source 2 demo format is complex and undocumented. Boon handles the low-level parsing so you can focus on analysis.
β‘ Fast. The core parser is written in Rust. Parsing a full match takes seconds, not minutes.
π Structured output. Every dataset is a Polars DataFrame, ready for filtering, grouping, joins, and visualization.
π― Parse only what you need. Each dataset is loaded on demand. Request one property and Boon skips everything else. Batch multiple datasets with
load()to share a single parse pass.ποΈ Comprehensive. Player state, kills, damage, item purchases, ability upgrades, objectives, chat, lane troopers, neutral creeps, buffs/debuffs, urn tracking, and street brawl scoring.
π» CLI included. A standalone command-line tool for quick inspection without writing any code.
Get startedΒΆ
Install with uv add boon-deadlock or pip install boon-deadlock, then head to π Getting Started for a walkthrough. If something isnβt working as expected, check β οΈ Known Issues first β then file a GitHub issue or ask in the Discord.
Useful linksΒΆ
Deadlock β official home page
r/DeadlockTheGame β Reddit community
- π Getting Started
- π Examples
- π API Reference
- π» CLI
- β FAQ
- Where do I get demo files?
- Why does boon return Polars DataFrames instead of pandas?
- Why do DataFrames use integer IDs instead of names?
- How do I see what datasets are available?
- Whatβs the difference between accessing a property and calling
load()? - Why is
player_ticksmissing some heroes? - Why is
ability_upgradesempty? - What is
trooper_boss? - How do I work with street brawl demos?
- How do I convert a tick to a timestamp?
- What does
damageinclude? - Can I use boon without Python?
- Something isnβt working. Where do I report it?
- β οΈ Known Issues
- π§ Reference
- π¬ Demo File Internals
- π Roadmap
- π Changelog