-
-
Notifications
You must be signed in to change notification settings - Fork 2
Quick Start
This page gives the shortest practical path from a CS2 .dem file to a local server sequence replay. All paths are placeholders; replace them with real paths on your machine.
Converter side:
- Windows x64
cs2-demotracer.exe.
Server side:
- Local Windows x64 CS2 server.
- Metamod:Source.
- CounterStrikeSharp.
- DemoTracer server bundle.
The DemoTracer server bundle includes:
-
BotControllerMetamod runtime. -
DemoTracerCounterStrikeSharp plugin. -
DemoTracerApi.dll. -
demotracer-econ-index.v1.json. -
demotracer.config.example.json.
Optional integration:
- CS2-Bot-Hider, for stronger replay bot identity alignment such as demo names, SteamID64 values, and avatar overrides.
Inspect first:
cs2-demotracer.exe inspect --demo "<demo.dem>"Convert recommended rounds:
cs2-demotracer.exe convert --demo "<demo.dem>" --output "<output-dir>"Export demo-backed in-game voice when present:
cs2-demotracer.exe convert --demo "<demo.dem>" --output "<output-dir>" --export-voiceThis writes voice/roundXX.dtv sidecars when usable voice frames exist. Not every demo contains voice data.
Text chat does not need a separate flag. Available chat events are written into manifest.json under rounds[].chat_messages.
Validate the output package:
cs2-demotracer.exe validate --input "<output-dir>"Convert selected source rounds:
cs2-demotracer.exe convert --demo "<demo.dem>" --output "<output-dir>" --rounds 0,1,2,5-8Selected-round workflows still require a full demo parse before export filtering.
Converted output is written under a content-hashed demo directory:
<output-dir>/
<demo-id>/
manifest.json
conversion.log
round00/
t/
<player>.dtr
ct/
<player>.dtr
round01/
t/
<player>.dtr
ct/
<player>.dtr
voice/
round00.dtv
round01.dtv
Important files:
-
manifest.json: the server replay entry point. -
roundXX/t/*.dtrandroundXX/ct/*.dtr: route replay files, one per player per round. -
voice/roundXX.dtv: optional demo-backed in-game voice sidecar. -
rounds[].chat_messages: lightweight chat metadata stored in the manifest.
Server commands usually reference:
<output-dir>/<demo-id>/manifest.json
Copy or place the output directory where the CS2 server can read it, then run commands in the server console.
Conservative first run:
dtr_replay_identity steam; dtr_align default; dtr_cosmetics off; dtr_match off; dtr_partial 1; dtr_handoff death_contact_c4 slot; dtr_voice_auto on; dtr_chat_auto on; dtr_go seq "<manifest.json>" 0
Full local presentation test:
dtr_replay_identity steam; dtr_align full; dtr_cosmetics full; dtr_match full; dtr_partial 1; dtr_handoff death_contact_c4 slot; dtr_voice_auto on; dtr_chat_auto on; dtr_go seq "<manifest.json>" 0
Meaning:
-
dtr_replay_identity steam: applies demo names and SteamID64 values through BotHider when available. -
dtr_align default: enables replay fidelity defaults without crosshair alignment. -
dtr_align full: enables weapon/loadout, projectile, crosshair, and left-hand desired alignment. -
dtr_cosmetics full: consumes explicitly exported demo-backed cosmetic evidence. -
dtr_match full: enables local match presentation sync. -
dtr_partial 1: allows partial replay when not enough safe bot slots exist. -
dtr_handoff death_contact_c4 slot: releases replay control after death, contact, or C4 planted. -
dtr_voice_auto on: playsvoice/roundXX.dtvwhen present. -
dtr_chat_auto on: plays manifest chat metadata. -
dtr_go seq "<manifest.json>" 0: starts sequence replay from source round 0.
Play one source round:
dtr_go round "<manifest.json>" 0
Restart aliases:
dtr_seq_restart "<manifest.json>" 0
dtr_round_restart "<manifest.json>" 0
- Convert and validate:
cs2-demotracer.exe inspect --demo "<demo.dem>"
cs2-demotracer.exe convert --demo "<demo.dem>" --output "<output-dir>" --export-voice
cs2-demotracer.exe validate --input "<output-dir>"- Check server plugin state:
css_plugins reload DemoTracer
dtr_config_status
dtr_doctor "<manifest.json>"
- Run the conservative preset:
dtr_replay_identity steam; dtr_align default; dtr_cosmetics off; dtr_match off; dtr_partial 1; dtr_handoff death_contact_c4 slot; dtr_voice_auto on; dtr_chat_auto on; dtr_go seq "<manifest.json>" 0
- Inspect status:
dtr_voice_auto status
dtr_chat_auto status
dtr_runtime
dtr_status
- Enable richer local presentation only after the basic path works:
dtr_replay_identity avatar
dtr_align full
dtr_match full
dtr_cosmetics full
- Stop all DemoTracer state:
dtr_stop all
If playback fails, check map mismatch, unreadable manifest paths, insufficient safe bot slots, missing voice sidecars, absent rounds[].chat_messages, and dtr_doctor ABI/runtime output first.
Start here
Convert
Playback
Reference