Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/).

### Added

- `player_status.is_silent_reload` in the CS2 spec and data dictionary, and in the CS2 changelog under 2026-10-31 (provisional: the date is corrected when the parser release with the column reaches production).
- The CS2 spec and data dictionary describe four new channels, `map_ping` (ping-button markers), `player_round_stats` (the game's own per-round scoreboard), `round_facts` (the round-end fun fact) and `vote` (finished team votes), and `tick`'s `host_time_us` and `host_time_sd_us`. Channel counts across the docs go to 55.
- `player_command` and `player_subtick_input` in the CS2 spec and data dictionary, and 51 channels in the counts.
- `player_personal`'s client-settings columns (`crosshair_code` and the four `viewmodel_*` columns) in the CS2 spec and data dictionary, marked as redacted in the data set.
Expand Down
1 change: 1 addition & 0 deletions docs/datascience/adx/cs2/csds/assets/csds_dictionary.csv
Original file line number Diff line number Diff line change
Expand Up @@ -749,6 +749,7 @@ last_injury_time,DECIMAL,,True,"When the player last took damage, in seconds on
is_in_reload,BOOLEAN,,True,The held weapon's reload flag.,Unlike is_reloading it falls as soon as a reload stops; about a third of reloads end early in a weapon switch. Null with no weapon held. From parser 6.0.0.,,,player_status,telemetry
reserve_ammo,INTEGER,,True,The held weapon's reserve ammunition.,"Drops by one magazine per completed reload. Null for knives, grenades and equipment, and with no weapon held. From parser 6.0.0.",,,player_status,telemetry
deploy_tick,INTEGER,,True,The tick the held weapon was drawn.,Joinable on tick. Null with no weapon held. From parser 6.0.0.,,,player_status,telemetry
is_silent_reload,BOOLEAN,,True,"Whether the held weapon is reloading silently, CS2's hold-to-reload since 2026-09-22.","True only while is_in_reload is true, from about a quarter of a second into the reload. Null with no weapon held, and on matches recorded before the 2026-09-22 update.",,,player_status,telemetry
second,DECIMAL,,True,,,,,player_status,telemetry
player_id_fixed,INTEGER,,True,Calculated from steam_id and player_id in player_personal. Merging done on round and player_id,Merged from another channel. Null where no source row matches.,,,player_status,telemetry
equipment_value_calc,INTEGER,,True,,,,,player_status,telemetry
Expand Down
1 change: 1 addition & 0 deletions docs/datascience/adx/cs2/csds/changelog-by-channel.md
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,7 @@ Dates are the day (UTC) a change reached production.

## player_status

- **2026-10-31**, column added: `is_silent_reload`. Boolean, nullable: true while the player's held weapon is reloading silently. CS2's update of 2026-09-22 lets a player reload silently, and more slowly, by holding the reload key. It is true only while the weapon is in a reload (`is_in_reload`), from the moment the game marks the reload silent, about a quarter of a second in. A silent reload's magazine lands up to twice as late as a normal one's. It is null when no weapon is held, and on every match recorded before the 2026-09-22 update, since those demos don't carry the game's flag. Matches processed before this date don't have the column.
- **2026-10-21**, column removed: `is_spotted`. **Breaking:** no longer written, so code that reads it breaks. It was the game's own "spotted" flag on each player, and it proved unreliable as a sign of who could see whom: checked against real kills, it was never set for one victim who was being shot, and set only a fraction of a second before another kill. Matches published earlier keep the column. Some later manifests still list it, with origin `replay-deleted` and no data behind it.
- **2026-10-14**, columns added: `progress_bar_start`, `progress_bar_duration`, `last_injury_time`, `is_in_reload`, `reserve_ammo`, `deploy_tick`. The player's and the held weapon's own state, all nullable. `progress_bar_start` and `progress_bar_duration` are the defuse progress bar. `progress_bar_start` is when the player's last defuse began, in seconds on the clock of `second`, and keeps that value after the defuse ends. `progress_bar_duration` is the bar's length in seconds while it shows (10, or 5 with a kit) and negative otherwise. CS2 doesn't use the bar for planting. `last_injury_time` is when the player last took damage, on the clock of `second`. Both times are null until first set. `is_in_reload` is the held weapon's reload flag; unlike `is_reloading` it falls as soon as a reload stops, and about a third of reloads end early in a weapon switch. `reserve_ammo` is the held weapon's reserve and drops by one magazine per completed reload; null for knives, grenades and equipment. `deploy_tick` is the tick the held weapon was drawn, joinable on `tick`.
- **2026-10-05**, types changed: `player_id_fixed`. An integer in every match, with nulls where no player matched. Before, a match in which any row found no player wrote the column as a double, so its type changed from match to match.
Expand Down
8 changes: 8 additions & 0 deletions docs/datascience/adx/cs2/csds/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,14 @@ The same changes are listed channel by channel on the
removes personal data; and the publisher, which sends matches to Data
Exchange.

## 2026-10-31

_The parser release after 7.0.1._

**Columns added**

- `player_status.is_silent_reload`: Boolean, nullable: true while the player's held weapon is reloading silently. CS2's update of 2026-09-22 lets a player reload silently, and more slowly, by holding the reload key. It is true only while the weapon is in a reload (`is_in_reload`), from the moment the game marks the reload silent, about a quarter of a second in. A silent reload's magazine lands up to twice as late as a normal one's. It is null when no weapon is held, and on every match recorded before the 2026-09-22 update, since those demos don't carry the game's flag. Matches processed before this date don't have the column.

## 2026-10-21

_The converter release that stops writing player_status.is_spotted._
Expand Down
9 changes: 9 additions & 0 deletions docs/datascience/adx/cs2/csds/spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -1329,6 +1329,14 @@ the tick the held weapon was drawn, joinable on `tick`. The game keeps
clock; the converter moves them onto the recording's clock with
`header.server_start_tick`, hence `replay_fixed`, and keeps no `*_raw` copy.

`is_silent_reload` is true while the held weapon reloads silently. Since CS2's
update of 2026-09-22, a player who holds the reload key reloads silently and
more slowly, and the game marks the weapon. The column is true only while
`is_in_reload` is true, from the moment the game marks the reload silent, about a
quarter of a second in. A silent reload's magazine lands up to twice as late as
a normal one's. It is null when no weapon is held, and on matches recorded
before that update, whose demos don't carry the mark.

| Col Name | Type | Nullable | Origin | Dependents | Merge Keys |
| ----------------------------- | ------- | -------- | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------- |
| tick | int32 | False | replay | | |
Expand Down Expand Up @@ -1376,6 +1384,7 @@ clock; the converter moves them onto the recording's clock with
| is_in_reload | bool | True | replay | | |
| reserve_ammo | int64 | True | replay | | |
| deploy_tick | int64 | True | replay_fixed | | |
| is_silent_reload | bool | True | replay | | |
| second | float32 | True | calculated | tick, tick_rate | |
| player_id_fixed | int8 | True | merged | | player_id, round, steam_id |
| equipment_value_calc | int16 | True | calculated | inv_flashbang, inv_taser, inv_hegrenade, inv_smokegrenade, inv_molotov, inv_decoy, inv_incgrenade, inv_c4, armor, has_defuser, has_helmet, inv_primary, inv_secondary | |
Expand Down