Parse tick-level telemetry
Raw .dem files become event tables, player state, visibility markers, shots, damage, kills, and round context.
NullCS parses Counter-Strike 2 .dem files into tick-level encounter windows, computes 449 player-demo signals, and ranks review-worthy players with evidence attached. The current public benchmark uses 894 demos and 281,792 encounter windows.

The model is tuned for review priority: top-ranked players, supporting rows, and benchmark context. It is not an anti-cheat or an automated ban system.
Read the project backgroundNullCS turns CS2 demos into structured behavior evidence, then ranks the players and moments that deserve closer inspection.
A high score means inspect this player first. It does not mean the match is settled.
Raw .dem files become event tables, player state, visibility markers, shots, damage, kills, and round context.
Each engagement is represented as a 32-tick temporal sequence with aim, mouse, visibility, movement, shot, and damage channels.
CNN encounter scores and 449 player-demo features feed a grouped XGBoost model that ranks players inside the match.
Positive rows show cleaner pre-shot stabilization in several aim-process summaries, including lower pre-shot aim-error variance.
Prefire-like rifle timing and long-range fast-reaction rates separate a subset of suspicious rows from the negative baseline.
51.5% of positive encounter windows score at or above 0.75, compared with 3.6% of negative windows.
These are review signals. They point to behavior worth inspecting; they do not identify a cheat type by themselves.
Grouped out-of-fold evaluation is split by demo_id. The metrics below describe review ranking, not enforcement accuracy.
Positive rows show lower medians on several stabilization features, including pre-shot aim-error variance and early snap-jerk summaries. That does not prove a cheat type. It tells a reviewer where the engagement process looks unusually clean for the surrounding context.


The current CS2CD player-level readout covers 860 demos after filtering, with 992 positive and 5,894 negative player-demo rows.

Top-3 retrieval is 97.3% across 293 demos with a suspicious player label, which is the core review-triage metric.

Median CNN score is 0.769 for positive windows and 0.188 for negative windows. The model is seeing repeatable encounter-level structure.

Feature separation is strongest when timing, aim process, input stability, visibility, and encounter-model summaries are combined.

The benchmark contains 281,792 encounter windows and 6,886 evaluated player-demo rows after filtering.
The repository carries the pipeline, benchmark artifacts, and model work behind the public site.
Grouped evaluation uses demo_id splits so one match does not leak across train and validation folds.
The model still produces false positives, especially in headshot-heavy high-support matches.
Scores are review priority, not enforcement probability.