Skip to content

Quick Start

unicbm edited this page Jul 8, 2026 · 6 revisions

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.

1. Requirements

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:

  • BotController Metamod runtime.
  • DemoTracer CounterStrikeSharp 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.

2. Convert a Demo

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-voice

This 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-8

Selected-round workflows still require a full demo parse before export filtering.

3. Output Layout

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/*.dtr and roundXX/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

4. Start Playback

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: plays voice/roundXX.dtv when 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

5. Suggested Test Order

  1. 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>"
  1. Check server plugin state:
css_plugins reload DemoTracer
dtr_config_status
dtr_doctor "<manifest.json>"
  1. 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
  1. Inspect status:
dtr_voice_auto status
dtr_chat_auto status
dtr_runtime
dtr_status
  1. Enable richer local presentation only after the basic path works:
dtr_replay_identity avatar
dtr_align full
dtr_match full
dtr_cosmetics full
  1. 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.

Clone this wiki locally