Deadlock benchmark automation via VConsole2 (Source 2 remote console)
Find a file
окси e354b9d4bf initial: VConsole2 client + Deadlock benchmark automation scaffolding
- vconsole_client.py: clean Python 3 port of CS2RemoteConsole for Source 2 VConsole2 protocol (TCP :29000)
- CMND version 0x00D40000 (Deadlock rejects 0x00D20000)
- scripts/: diagnose/probe/find_noclip/getpos/noclip debug utilities, noclip_rave stress test
- scripts/launch_and_wait.py: legacy image-recognition fallback
- templates/: reference screenshots for image recognition path

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 21:11:54 +03:00
scripts initial: VConsole2 client + Deadlock benchmark automation scaffolding 2026-04-20 21:11:54 +03:00
templates initial: VConsole2 client + Deadlock benchmark automation scaffolding 2026-04-20 21:11:54 +03:00
.gitignore initial: VConsole2 client + Deadlock benchmark automation scaffolding 2026-04-20 21:11:54 +03:00
README.md initial: VConsole2 client + Deadlock benchmark automation scaffolding 2026-04-20 21:11:54 +03:00
requirements.txt initial: VConsole2 client + Deadlock benchmark automation scaffolding 2026-04-20 21:11:54 +03:00
vconsole_client.py initial: VConsole2 client + Deadlock benchmark automation scaffolding 2026-04-20 21:11:54 +03:00

deadlockBench

Автоматизация benchmark-прогонов для Valve Deadlock через VConsole2 (native Source 2 remote console protocol) + demoparser2 (анализ демок) + опционально CapFrameX.

Без image recognition, без SendInput, без запуска игры в фокусе — всё через TCP socket.

Как это работает

Deadlock на Source 2 принимает команды через VConsole2 на tcp://127.0.0.1:29000, если запустить с флагом -vconsole. Клиент (vconsole_client.py) подключается, отправляет console-команды (sv_cheats 1, noclip, map dl_streets, record bench, playdemo bench, demo_gototick N и т.д.) и получает PRNT-лог из игры в реальном времени.

Требования

  • Windows 10/11
  • Python 3.11+
  • Deadlock установлен (Steam AppID 1422450)
  • Steam Launch Options для Deadlock:
    -novid -console -dev -insecure -vconsole +sv_cheats 1
    

Структура

vconsole_client.py    — основной клиент VConsole2 (стандартная библиотека Python, без внешних деп)
docs/                 — документация протокола
scripts/
  diagnose.py         — интерактивный debug: шлём команды + видим ответы
  find_noclip.py      — найти правильные имена cvar/command
  noclip_test.py      — простой smoke-test (noclip on/off)
  probe.py            — перебор форматов пакета (CMND version 0xD2 vs 0xD4, netcon)
  launch_and_wait.py  — legacy image-recognition путь (fallback без -vconsole)
templates/            — референс-изображения для image recognition
requirements.txt      — opencv/mss/pydirectinput только для launch_and_wait.py

Быстрый старт

  1. Запусти Deadlock с нужными launch options (см. выше)
  2. Войди в Hero Sandbox или локальную карту (map dl_streets)
  3. В отдельном терминале:
    py scripts/noclip_test.py
    
  4. В игре должен включиться noclip

Протокол VConsole2 (ключевое)

  • Framing: msg_type[4 ASCII] + version[uint32 BE] + length[uint16 BE] + handle[uint16 BE] + body
  • length — полный размер пакета (header + body)
  • Для CMND пакета version = 0x000000D4 (212), НЕ 0xD2 (210 — Deadlock отвергает с Version Mismatch: Expected 212, Got 210)
  • Body CMND: UTF-8 команда + null-terminator
  • Typical incoming types: AINF (game info), PRNT (log line), CHAN (channel list), CVAR (cvar dump), CFGV (config done), ADON (addon)

Полная спецификация — в docs/VCONSOLE_NOTES.md.

Известные issues

  • noclip 1/noclip 0 в реальном матче игнорируется (sv_cheats server-enforced). Работает только в локальной карте.
  • Steam должен быть запущен до старта игры — напрямую deadlock.exe без Steam не стартует.
  • Для record <name> нужно быть в живой сессии, не в replay playback.