Reference¶
Three lookups: the per-player properties, the game events, and how the derived numbers (buy types, ADR, KAST, trades, …) are defined.
Player properties¶
The per-player features returned by Demo.snapshot() / Demo.snapshots(),
each mapped to the CS2 network property it is read from. Available
programmatically as awpy.SNAPSHOT_PROPERTIES.
The scalar fields can also be requested in Demo.ticks() — by these readable
names (the aliases x/y/z, health, armor, team_num, name, money) or
by any raw network name (m_iHealth, m_bIsScoped, …).
Identity & position¶
Property |
Engine field |
|---|---|
|
|
|
|
|
|
|
|
|
|
Health & equipment¶
Property |
Engine field |
|---|---|
|
|
|
|
|
|
|
|
|
holds a |
Weapons & utility held¶
Property |
Engine field |
|---|---|
|
|
|
|
|
|
|
counts from |
|
full loadout (slot order) from |
Economy¶
Property |
Engine field |
|---|---|
|
|
|
|
|
|
Status¶
Property |
Engine field |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Game events¶
Common CS2 game events. The events actually present in a demo are
demo.events.names (and demo.events.counts); demo.events[name] returns any of
them as a DataFrame. This catalog is available programmatically as
awpy.GAME_EVENTS.
Event |
Description |
|---|---|
|
A round begins. |
|
Freeze time ends; players can move. |
|
A round is decided (carries winner + reason). |
|
The round is fully wrapped up (post-round). |
|
A new match starts. |
|
A phase (e.g. the first half) ends. |
|
A player is killed (attacker, victim, assister, weapon). |
|
A player takes damage (health / armor before & after). |
|
A player is blinded by a flashbang. |
|
A player joins or switches team (fires for everyone at halftime). |
|
Spawn / connect / disconnect. |
|
Footstep / jump / map ping. |
|
A weapon is fired (or a grenade thrown). |
|
Reload / scope zoom. |
|
Pick up / buy / equip an item. |
|
Start planting / bomb planted. |
|
Start defusing / bomb defused. |
|
Explode / drop / pick up. |
|
Flash / HE detonation. |
|
Smoke starts / dissipates. |
|
Decoy start / finish. |
|
Molotov / incendiary fire starts / burns out. |
Definitions¶
How the reconstructed and aggregated numbers are computed.
Sides & teams¶
side is "terrorist" / "counter-terrorist", from the player’s m_iTeamNum
(2 / 3). Players swap sides at halftime, so a player’s side changes across the
match; the persistent identity is steamid.
Buy types (round_economy)¶
Each team’s buy per round, from its total equipment value at freeze end (the
finished buy — not equipment_value_round_start, which is the pre-buy carry-over):
pistol— round 1, and the first round after the halftime side switch. Detected from the switch itself (a majority of players change side between consecutive rounds), so it holds for any match format; overtime’s later switches are classified by value, not as pistols.eco— team equipment value < $5,000 (saving).force— $5,000 – $20,000 (a partial / force buy).full— ≥ $20,000.
Knife rounds are excluded.
Player stats (stats)¶
One row per player, over the match. Knife rounds are excluded by default (pass
include_knife_rounds=True to Demo.player_stats() to keep them). Every
player is treated as having played every round, so KAST / ADR denominators are the
match’s round count and players who join or leave mid-match are approximate.
Kills / deaths — enemy kills (suicides and team kills excluded) and deaths.
Assists — the game’s attribution: dealing the victim ≥ 40 HP or blinding them (a flash assist) before a teammate got the kill. Only ever credited against opponents.
Flash assists (
flash_assists) — the subset of assists that came from a flashbang, soflash_assists ≤ assists. (Third-party sites often compute a different flash-assist figure from flash→kill correlation; the two are not directly comparable.)Headshot % (
headshot_pct) —headshot_kills / kills × 100(0 with no kills).Opening kill / death — the attacker / victim of the first kill of a round.
Traded death — a death that was avenged: the player who killed you is themselves killed by one of your teammates within the trade window (5 seconds by default). This is what the T in KAST rewards — you count for the round even though you died, because your death was traded back.
KAST — the percentage of rounds in which the player got a Kill, an Assist, Survived (was not killed), or was Traded.
ADR — average damage per round, using the actual HP removed from enemies: each hit is capped at the victim’s remaining health and chained across the round, so a killing blow counts only what the victim had left (an AWP that “does 115” to a 40 HP enemy removes 40, not 115). Team, self, and world (e.g. fall) damage are excluded.
Multi-kill rounds (
multikill_2k…multikill_5k) — rounds with exactly 2 / 3 / 4 / 5-or-more kills.
Utility¶
utility_damage— grenade damage dealt to enemies (HE + molotov / incendiary), as actual HP removed (chained like ADR).flashes_thrown— flashbangs the player threw.enemies_flashed— times an enemy was blinded by one of the player’s flashes (team-flashes and self-flashes are not counted).flash_duration_dealt— total seconds of blindness inflicted on enemies.
Positions¶
All coordinates are world coordinates in Hammer units, Z-up — the same frame used by nav and visibility, so entity positions can be passed straight in.