-
-
Notifications
You must be signed in to change notification settings - Fork 2
Server Commands and FAQ
These commands run in the local CS2 server console after the Playback Bundle is installed. “Playback” distinguishes the local in-game replay component from the CLI and GUI downloads; it is not a hosted service.
The repository's command reference is canonical. This page covers the normal workflow and common failures.
dtr_config_status
dtr_runtime
dtr_doctor "<manifest.json>"
dtr_go seq "<manifest.json>" 0
dtr_go validates the plan, applies the current settings, and restarts the game
round so playback can start from the correct freeze-time anchor.
| Command | Purpose |
|---|---|
dtr_go seq "<manifest.json>" [from_source_round] |
Play the manifest's playable rounds in sequence. |
dtr_go round "<manifest.json>" <source_round> |
Play one source round without advancing. |
dtr_go pool "<pool_manifest.json>" [server_round] |
Choose an economy-matched round from a converted pool. |
dtr_stop sequence |
Stop future sequence and playoff scheduling. |
dtr_stop pool |
Stop future pool selection. |
dtr_stop slot <slot> |
Release one replay slot. |
dtr_stop all |
Stop active replay slots plus future sequence/pool scheduling. |
dtr_unload <slot> |
Release one slot and its loaded replay buffer/presentation lease. |
The older dtr_run_manifest and dtr_run_pool forms remain compatibility
aliases. Prefer dtr_go for new instructions and scripts.
| Area | Default | Meaning |
|---|---|---|
| Identity | dtr_replay_identity steam |
Lease the demo name and SteamID64 through the bundled BotHider provider. |
| Fidelity | dtr_align default |
Weapons/loadout, projectiles, and left-hand desired writes on; crosshair off. |
| Match presentation | dtr_match off |
Scoreboard/KDA/MVP/team-score sync off. |
| Cosmetics | dtr_cosmetics off |
Skins, agents, stickers, charms, and related risky evidence off. |
| Handoff | dtr_handoff death_contact_c4 slot |
Release one slot when its replay bot dies, kills, or reaches contact; C4 planted releases all active slots. |
| 360-degree perception | dtr_handoff_360 on 420 los |
Enable native replay-time 360 perception; range/LOS configure the compatibility fallback. |
| Partial replay | dtr_partial 1 |
Allow fewer safe replay bots than manifest players. |
| Playoff | dtr_playoff off |
Do not continue after the manifest sequence is exhausted. |
| Voice | dtr_voice_auto on |
Replay a matching .dtv sidecar when available. |
| Chat | dtr_chat_auto on |
Replay manifest chat events on the recorded timeline. |
| Native replay POV | bc_replay_pov spectated |
Apply the native first-person replay mask to spectated bots. |
These defaults are already suitable for a conservative first run. Crosshair, scoreboard, cosmetics, and playoff require explicit opt-in.
Enable before or during sequence playback:
dtr_playoff on
dtr_go seq "<manifest.json>" 0
After the normal sequence ends, DemoTracer may keep scheduling full-buy opening routes from that manifest. T and CT are selected independently and may come from different source rounds. Player mapping remains strict by SteamID64; if either side cannot form a retained matching roster, that playoff round is skipped.
Because a mixed playoff round has no single truthful source round, it does not replay scoreboard, chat, or voice metadata. Turning playoff off cancels future playoff scheduling but does not interrupt a replay already live.
To make it server-local and persistent, set top-level "playoff": true in
demotracer.config.json. The shipped example and built-in default are false.
dtr_align status
dtr_align default
dtr_align full
dtr_align handoff_safe
dtr_match off
dtr_cosmetics off
dtr_replay_identity steam
dtr_handoff death_contact_c4 slot
dtr_align default and full currently select the same weapons, projectiles,
and left-hand desired settings; both keep crosshair off. Enable crosshair
explicitly with dtr_align crosshair on. handoff_safe keeps weapons and
projectiles but disables left-hand desired writes so the native bot resumes with
the server's normal viewmodel preference. See
Fidelity and Handoff before enabling richer presentation.
| Command | Use it for |
|---|---|
dtr_config_status |
Effective config source and all major settings. |
dtr_runtime |
Expected/loaded ABI, native capability bits, and runtime version. |
dtr_doctor [manifest.json] |
ABI, map, bot, manifest, BotHider, and optional RayTrace health. |
dtr_bots |
Safe replay candidates and BotHider-managed slots. |
dtr_status <slot> |
Cursor, replay state, handoff, and alignment state for one slot. |
bc_status |
Native BotController status. |
bh_status |
Bundled BotHider runtime status. |
Run dtr_doctor "<manifest.json>" before changing settings. It usually separates
installation, map, manifest, and slot problems quickly.
DemoTracer optionally reads demotracer.config.json beside DemoTracer.dll.
Copy the sanitized example, change only the preferences you need, then run:
dtr_config_reload
dtr_config_status
Console commands are temporary overrides; reloading the file restores its values.
Stop the server and install the complete matching Playback Bundle. Do not copy only the CounterStrikeSharp DLL: BotController, BotHider, their gamedata/VDF files, and the managed plugins are one versioned runtime set. v0.6.0 expects native ABI 16 with bundled minor 31 or newer.
Load the same map recorded by the manifest, then run dtr_doctor again. Routes
are map-specific.
Keep dtr_partial 1 for a partial lineup, add enough strict CS2 bots, and use
dtr_bots to inspect eligible slots. DemoTracer never assigns replay control to
a real human player.
Install the full Playback Bundle and run bh_status. Remove separately installed
public BotHiderImpl CSS plugins; the bundled DemoTracerBotHider must be the
only presentation publisher.
Confirm the converted directory contains the matching voice/roundXX.dtv, run
dtr_voice_auto status, and check dtr_runtime for voice-send capability. Many
demos simply do not contain recorded in-game voice. See
Voice and Chat Replay for sidecar and speaker
mapping checks.
Confirm dtr_chat_auto on and that the manifest contains
rounds[].chat_messages. For local spectator testing, use
sv_full_alltalk 1; sv_allchat 1 alone is not sufficient. See
Voice and Chat Replay for the complete checklist.
Check dtr_handoff and the handoff model. The default
uses current contact plus replay-bot death/kill evidence per slot and releases
every active replay slot when the C4 is planted.
Use dtr_kick slot <slot> or another exact dtr_kick form. Native bot_kick
may still see the bot's underlying CS2 profile name rather than the leased DTR
presentation.
Start here
Convert
Playback
Reference