RE:NODE

Руководства12 мин чтения

GOTV и демо в CS2: запись и хранение

Как настроить GOTV на сервере CS2: важные cvars tv_, задержка, автоматическая и ручная запись демо, просмотр в прямом эфире и контроль места под демо.

0 прочтений

GOTV на сервере Counter-Strike 2 выполняет две задачи: ретранслирует трансляцию с задержкой, к которой могут подключаться зрители, и записывает демо происходящего. Включите его через tv_enable 1 в server.cfg, выделите ему собственный UDP-порт через tv_port, задайте в tv_delay число секунд, на которое зрители должны отставать от игры, и добавьте tv_autorecord 1, если хотите получать файл .dem для каждого матча, не думая об этом. Изменение применяется при следующей загрузке карты, а не сразу. Демо записываются в game/csgo/, и полная соревновательная карта обычно занимает 100-300 МБ, так что люди забывают не про запись, а про удаление. В этом руководстве - cvars, ручная и автоматическая запись, просмотр и то, как не дать демо заполнить диск.

Что такое GOTV на самом деле#

GOTV - это особый клиент-зритель, который работает внутри процесса сервера. Он заходит как бот с именем из tv_name, видит всё, что видел бы зритель с полной информацией, буферизует это на tv_delay секунд и затем делает с этим потоком две вещи: отправляет его всем, кто подключён к порту GOTV, и, если идёт запись, пишет его на диск.

Такое устройство объясняет большую часть его поведения:

  • Он запускается вместе с картой. GOTV создаётся при загрузке карты. Установка tv_enable 1 посреди карты ничего не делает до следующей смены карты или перезапуска.
  • Он задержан для всех. И зрители, и запись получают буферизованный поток. Демо не задерживается относительно игры так, чтобы это мешало разбору, но зритель в прямом эфире видит события с опозданием на tv_delay секунд.
  • Он чего-то стоит серверу. Упаковка полного снимка для GOTV каждый tick и его буферизация - реальная работа. На сервере на 10 слотов это немного; на загруженном сервере сообщества с подключёнными зрителями это заметно.
  • Он может занимать слот. Бот GOTV виден в списке игроков. На большинстве сборок он учитывается в лимите игроков сервера, поэтому сервер для матча 5 на 5 с GOTV запускают с запасом на одного.

GOTV не заменяет анти-чит, но демо - единственное надёжное доказательство, которое есть у сервера сообщества. Статья сервер CS2 для соревновательных матчей показывает GOTV в контексте полной настройки матчей; здесь речь идёт глубже о самом GOTV.

Важные cvars tv_#

Им место в game/csgo/cfg/server.cfg. В отличие от cvars раундов mp_, конфиги игровых режимов их не сбрасывают, так что server.cfg - правильное место. Какой файл побеждает для каких настроек, объясняет статья команды и cvars сервера CS2.

CvarЧто делаетОбычное значение
tv_enableВключает GOTV при следующей загрузке карты1
tv_portUDP-порт, к которому подключаются зрители27020 или ваш второй выделенный порт
tv_delayЗадержка трансляции в секундах0 только для демо, 90-120 при зрителях в прямом эфире
tv_delaymapchangeЗадерживает смену карты, пока поток с задержкой не догонит1
tv_autorecordАвтоматически записывает каждый матч1 на серверах матчей и скримов
tv_maxclientsСколько зрителей допускает этот GOTV10 или 0, чтобы запретить просмотр в прямом эфире
tv_nameИмя бота GOTVимя сервера плюс GOTV
tv_titleЗаголовок, который видят зрителичто угодно
tv_passwordПароль для зрителейзадайте на приватном сервере
tv_relaypasswordПароль для других ретрансляторов GOTVзадайте или не используйте ретрансляторы
tv_snapshotrateСнимков в секунду, отправляемых в GOTVоставьте по умолчанию, если не знаете зачем
tv_maxrateОграничение полосы на одного зрителяоставьте по умолчанию

Рабочий блок для сервера матчей:

game/csgo/cfg/server.cfg
tv_enable 1tv_port 27020tv_delay 90tv_delaymapchange 1tv_autorecord 1tv_maxclients 10tv_name "Longship GOTV"tv_title "Longship scrims"tv_password "spectate-only-7731"tv_relaypassword "relay-only-1902"

Значения по умолчанию менялись между CS:GO и CS2 и между сборками CS2, поэтому, если хотите знать, какое значение у cvar на вашем сервере, введите его имя в консоли без значения - выведутся текущее значение и значение по умолчанию.

Выбор задержки#

tv_delay - настройка, которую ошибочно выставляют в обе стороны.

Ситуацияtv_delayПричина
Только демо, в прямом эфире никто не смотрит0Нет риска подсказок, демо готово к концу карты
Комментаторы или друзья смотрят скрим90-120Никто не сможет передавать информацию обратно
Публичный casual-сервер30-60Зрители безвредны, трансляция остаётся свежей
Трансляция в официальном стиле105 или большеСоревновательная традиция

У задержки есть побочный эффект в конце карты. При задержке 90 секунд последний раунд ещё не транслирован, когда карта заканчивается. Без tv_delaymapchange 1 карта меняется сразу, поток GOTV обрывается, и демо теряет последний раунд. Если настройка включена, сервер ждёт, пока трансляция догонит, и только потом меняет карту - а значит, игроки видят таблицу счёта дольше, чем ожидают. Это правильный компромисс.

Большая задержка стоит ещё и памяти: сервер буферизует всё окно задержки. При 90 секундах на сервере на 10 игроков это немного; при нескольких минутах и заполненном сервере стоит следить за графиком памяти.

Порты и подключение к GOTV#

GOTV слушает собственный UDP-порт. Зрители подключаются к нему точно так же, как к серверу:

code
connect 203.0.113.10:27020password spectate-only-7731

Задайте пароль до подключения командой password <value> в консоли клиента, иначе подключение будет отклонено. Зрители попадают в свободную камеру с задержанным потоком и не могут взаимодействовать с игрой.

ПортПротоколНазначение
27015UDPИгровой трафик и запрос Steam
27015TCPRCON, если включён
27020UDPGOTV, задаётся через tv_port

На хостинге с панелью номера портов - те, что выделены серверу, и это не обязательно 27015 и 27020. Найдите второй выделенный порт на вкладке Network и укажите в tv_port именно этот номер; tv_port, который серверу не выделен, - это GOTV, до которого никто не достучится. На RE:NODE у каждого тарифа CS2 по два выделенных порта именно поэтому - по одному для игры и для GOTV. Что такое выделенный порт и как проверить его снаружи, объясняет статья порты игровых серверов.

каждый tickпоток с задержкойtv_autorecord или tv_recordИгрокиигровой порт UDPСервер CS2живая симуляцияКлиент GOTVбуфер tv_delayЗрителиUDP tv_portФайл демоgame/csgo/*.dem
Где находится GOTV внутри сервера CS2

Автоматическая и ручная запись демо#

tv_autorecord 1 начинает запись, когда матч стартует, и останавливает её в конце карты. В имя файла входят дата, время и карта, поэтому демо в папке сортируются по времени. Для сервера скримов или матчей это правильная настройка: каждый матч записан, и никому не нужно об этом помнить.

Ручная запись - это три команды:

code
tv_record scrim_2026-10-07_miragetv_stoprecordtv_status

tv_record <name> начинает демо с этим именем (.dem добавляется), tv_stoprecord завершает его, а tv_status показывает, активен ли GOTV, сколько подключено зрителей и идёт ли запись. Если tv_record жалуется, что GOTV не активен, значит tv_enable был выставлен после загрузки карты - смените карту и попробуйте снова.

Обычно это берут на себя плагины матчей. MatchZy, распространённый плагин матчей на CounterStrikeSharp, записывает демо для каждой карты, когда матч стартует, и может загружать его на HTTP-адрес в конце карты, с собственными настройками папки для демо и формата имени файла. Если вы используете плагин матчей, отдайте запись ему и оставьте tv_autorecord выключенным, иначе можно получить две записи одной и той же карты. Точные имена настроек для вашей версии указаны в README плагина.

Что есть в демо, а чего нет

Демо GOTV содержит всё, что сервер отправил в GOTV: позиции игроков, углы обзора, оружие, гранаты, чат и таблицу счёта. Это запись на стороне сервера, поэтому она показывает, где игроки были на самом деле, а не то, что видел один клиент. Поэтому она хороша для проверки подозрений в читах и для тактического разбора.

Голоса по умолчанию в нём нет, и это не видео. Чтобы поделиться клипом, кто-то проигрывает демо в клиенте и записывает экран.

Просмотр демо#

Скопируйте файл .dem в папку game/csgo клиента, затем в консоли:

code
playdemo scrim_2026-10-07_miragedemouidemo_timescale 2demo_gototick 64000

playdemo загружает демо (расширение не нужно), demoui открывает панель управления воспроизведением, demo_timescale меняет скорость, а demo_gototick переходит к tick - при 64 tick одна минута равна 3840 tick. Демо, записанные на одной версии CS2, обычно воспроизводятся на следующей, но крупные обновления уже ломали воспроизведение старых демо. Если демо важно - апелляция на бан, спор на турнире, - разберите его сразу, а не через полгода.

Демо для разбора жалобы на читы#

Самое ценное, что демо делает на сервере сообщества, - превращает «он явно читерит» в то, что можно посмотреть. Порядок, который сохраняет справедливость:

  1. Когда приходит жалоба, запишите время, карту и имя подозреваемого. Если tv_autorecord включён, этого достаточно, чтобы найти файл демо.
  2. Скачивайте демо после окончания карты, а не пока оно ещё записывается.
  3. Посмотрите подозреваемого от первого лица на обычной скорости несколько раундов, а затем на половинной скорости вокруг подозрительных моментов. Смотрите, где находится прицел до того, как враг становится виден, а не на само убийство.
  4. Переключитесь на свободную камеру и посмотрите, что подозреваемый действительно мог видеть. Префайр сквозь стену подозрителен, только если его не объясняют звук, подсказка тиммейта или типичный угол.
  5. Попросите второго админа посмотреть, не сообщая ему своего вывода.

Записывайте номера tick важных моментов, чтобы следующий проверяющий мог сразу перейти туда через demo_gototick. Апелляции на бан становятся коротким разговором, когда ответ звучит как «посмотри tick 41 200 и скажи, что видишь». Храните демо, пока действует бан. С серверными демо спорить гораздо труднее, чем с записью из клиента игрока, и именно ради этого стоит включать GOTV даже на сервере, которому не нужны зрители. Человеческая сторона работы с жалобами описана в статье правила сервера, модерация и команда.

Комментаторы, турниры и большая аудитория#

Один GOTV принимает до tv_maxclients зрителей, и каждого из них обслуживает сам игровой сервер. Для скрима с двумя комментаторами и тренером это нормально. Для аудитории в сотни человек - нет, потому что трафик зрителей конкурирует с матчем за CPU и сеть сервера.

Для масштабирования есть два механизма. Ретрансляторы - это дополнительные экземпляры GOTV, которые подключаются к главному GOTV - с аутентификацией через tv_relaypassword - и раздают поток своим зрителям, так что игровой сервер кормит один ретранслятор, а не толпу. А ещё GOTV умеет транслировать по HTTP через семейство cvars tv_broadcast - так крупные турнирные трансляции доставляют внутриигровой поток зрителя через обычную веб-инфраструктуру. Оба механизма изменились между CS:GO и CS2 и рассчитаны на организаторов с собственной инфраструктурой; если вы проводите лигу, читайте актуальную документацию Valve, а не блоги, включая этот.

Для турнира сообщества практичный ответ проще: один GOTV с задержкой 90 секунд и паролем, известным комментаторам, плюс стример, который показывает трансляцию на видеоплатформе. Зрители смотрят стрим, а не сервер, и сервер матча кормит лишь горстку зрителей.

Хранение: размер, срок и очистка#

Демо записываются рядом с файлами игры в game/csgo/, если плагин не кладёт их в другое место. На диске они не сжимаются.

ЧтоПримерный размер при 64 tick
Одна соревновательная карта, MR12, 10 игроков100-300 МБ
Один вечер из трёх карт скримов0,5-1 ГБ
Месяц ежевечерних скримов15-30 ГБ
Публичный casual-сервер с включённым tv_autorecordрастёт каждую карту, весь день

Последняя строка - ловушка. На публичном сервере, который работает весь день, tv_autorecord 1 записывает каждую карту, и диск заполняется за несколько дней. Либо выключите автозапись на публичных серверах и записывайте вручную, когда есть причина, либо заведите строгий порядок очистки.

Порядок очистки, который работает на любом хостинге:

  1. Определите срок хранения - для сервера сообщества хватит двух-четырёх недель.
  2. Скачайте демо, которые хотите сохранить, до окончания этого срока; демо матчей, которые стоит хранить, место в хранилище под вашим контролем, а не на игровом сервере.
  3. Удалите остальное. В файловом менеджере отсортируйте по дате и удалите пачкой; через SFTP скрипт на вашей машине может найти и удалить файлы старше срока.
  4. Проверяйте свободное место после каждого дня обновления. Обновления CS2 большие, а диск, почти заполненный демо, - самая частая причина, по которой обновление обрывается на полпути.

На RE:NODE для этого подходят и файловый менеджер, и SFTP, а вкладка Schedules может запускать консольные команды, backup и действия с питанием по cron-выражению - это полезно для перезапуска, но shell-команды она не выполняет, так что удаление файлов остаётся ручным или идёт через плагин, который загружает и удаляет демо. Backup сервера CS2 тоже не должен включать гигабайты старых демо; очищайте их перед ручным backup, чтобы слот хранил конфигурацию и плагины, которые действительно нужны. Данные для подключения есть в статье SFTP и файловый менеджер.

Решение проблем#

Демо не записалось. tv_enable был выставлен после загрузки карты, поэтому GOTV так и не запустился. Пропишите его в server.cfg, смените карту и проверьте tv_status.

В демо нет последнего раунда. tv_delaymapchange выключен, а задержка больше нуля, поэтому карта сменилась раньше, чем трансляция догнала игру. Включите его.

Зрители не могут подключиться к GOTV. tv_port не совпадает с выделенным серверу портом, порт закрыт или задан пароль, а зритель его не ввёл. Проверьте вкладку Network и строку, которую GOTV выводит в консоль при загрузке карты.

Сервер заполняется на одного игрока раньше. Слот занимает бот GOTV. Увеличьте -maxplayers на единицу.

Демо не воспроизводится. Оно записано на старой версии CS2 или было скопировано, пока ещё записывалось. Дожидайтесь окончания карты перед скачиванием и разбирайте важные демо вскоре после записи.

Диск заполнен, и сервер не обновляется. Старые демо. Удалите их, затем снова запустите обновление. Как цикл неудачных обновлений выглядит снаружи, описано в статье почему игровой сервер постоянно перезапускается.

FAQ#

Где сохраняются демо GOTV в CS2?

В game/csgo/ внутри установки сервера; при включённом tv_autorecord в имени будут дата, время и карта, иначе - имя, которое вы передали в tv_record. Плагины матчей могут писать их в другую папку - проверьте настройку пути к демо в плагине.

Делает ли GOTV сервер более лагающим?

Немного. GOTV упаковывает снимок каждый tick и буферизует окно задержки, а это стоит немного CPU и памяти. На сервере матчей на 10 игроков это незаметно; на загруженном публичном сервере с множеством зрителей может быть заметно, и tv_maxclients ограничивает эту часть.

Ставить tv_delay 0 или 90?

0, если в прямом эфире никто не смотрит и вам нужны только демо. 90 или больше, если кто-то может смотреть во время матча, потому что зритель без задержки может передавать позиции команде.

Можно ли записать демо без GOTV?

На стороне сервера - нет. Игроки могут записать собственное клиентское демо командой record <name> в консоли, но оно показывает только их обзор и сетевое состояние. Для честной записи матча нужен GOTV.

Сколько хранить демо?

Достаточно долго, чтобы разрешать споры, - две-четыре недели для сервера сообщества. Турнирные демо и демо, связанные с банами, храните бессрочно, но в хранилище под вашим контролем, а не на игровом сервере.


Комментарии

Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.

0/2000