Deadlock benchmark automation via VConsole2 (Source 2 remote console)
- Python 100%
- 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> |
||
|---|---|---|
| scripts | ||
| templates | ||
| .gitignore | ||
| README.md | ||
| requirements.txt | ||
| vconsole_client.py | ||
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
Быстрый старт
- Запусти Deadlock с нужными launch options (см. выше)
- Войди в Hero Sandbox или локальную карту (
map dl_streets) - В отдельном терминале:
py scripts/noclip_test.py - В игре должен включиться 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.