=========================================================================== Серверные демо-записи (SVDEMO) Руководство пользователя =========================================================================== ОПИСАНИЕ -------- Система серверных демо-записей позволяет записывать полное состояние игрового сервера (все сущности, все игроки) и воспроизводить запись с возможностью свободного перемещения камеры или просмотра от первого лица любого игрока. В отличие от обычных клиентских демо (запись только того, что видит один игрок), серверная запись содержит полную картину матча. КОНСОЛЬНЫЕ КОМАНДЫ ------------------ Запись: svdemo_record <имя> Начать запись серверного демо. Файл сохраняется в svdemos/<имя>.svdm внутри игровой директории. svdemo_stop Остановить текущую запись или воспроизведение. При остановке воспроизведения происходит отключение от сервера. Воспроизведение: svdemo_play <имя> Воспроизвести серверное демо. Загружает карту из записи, подключает зрителя автоматически. Можно вызывать из меню, из игры или во время просмотра другого демо. svdemo_pause Пауза / продолжение воспроизведения. Во время паузы камера свободно перемещается, сущности заморожены. На экране отображается "Playback Paused". svdemo_seek <секунды> Перемотка относительно текущей позиции. Положительное значение -- вперёд, отрицательное -- назад. Перемещает к ближайшему ключевому кадру (точность ±5 сек). Работает в паузе. Пример: svdemo_seek -10 (назад на 10 секунд) svdemo_seekexact <секунды> Точная перемотка. Находит ближайший ключевой кадр, затем прочитывает кадры до целевого времени. Точность до одного серверного кадра (50 мс при sv_fps 20). Может занять долю секунды на длинных перемотках. Работает в паузе. Пример: svdemo_seekexact -10 (назад ровно на 10 секунд) НАСТРОЙКИ (CVARS) ----------------- svdemo_autorecord <0|1> (по умолчанию: 0) Автоматическая запись демо при каждой загрузке карты. Файлы именуются автоматически: <карта>_ГГГГММДД_ЧЧММСС.svdm Пример: q3dm6_20260323_141530.svdm svdemo_pauseEmpty <0|1> (по умолчанию: 1) Пауза воспроизведения, когда нет подключённых зрителей. Демо начинается с первого кадра при подключении зрителя. svdemo_keyframeInterval <секунды> (по умолчанию: 5, 0 = выкл.) Интервал ключевых кадров. Ключевые кадры позволяют перематывать запись. Чем меньше интервал, тем точнее перемотка командой svdemo_seek, но немного больше размер файла. Первый кадр записи всегда является ключевым. Все настройки сохраняются в конфигурации (CVAR_ARCHIVE). ЗАПИСЬ ------ 1. Запустите сервер и начните игру как обычно: devmap q3dm6 2. Начните запись: svdemo_record mymatch 3. Играйте. Все действия всех игроков записываются. 4. Остановите запись: svdemo_stop Запись также автоматически останавливается при: - Смене карты (map, devmap, nextmap по таймлимиту/фраглимиту) - Выключении сервера Перезапуск карты (map_restart) НЕ прерывает запись. ВОСПРОИЗВЕДЕНИЕ --------------- 1. Запустите воспроизведение: svdemo_play mymatch 2. Карта загрузится автоматически. Вы подключитесь как зритель со свободной камерой (полёт по карте). 3. Управление зрителем: - Свободная камера: перемещайтесь как обычный спектатор - Следование за игроком: нажмите MOUSE1 (ATTACK) для входа в режим следования и переключения между игроками - Выход из следования: team spectator (можно забиндить) 4. В режиме следования вы видите игру от первого лица выбранного игрока с полным HUD: здоровье, броня, боеприпасы, оружие. 5. Табло (TAB) показывает счёт записанных игроков. 6. Управление воспроизведением: - svdemo_pause -- пауза/продолжение - svdemo_seek -10 -- быстрая перемотка назад на 10 сек - svdemo_seek 30 -- быстрая перемотка вперёд на 30 сек - svdemo_seekexact -10 -- точная перемотка назад на 10 сек - svdemo_stop -- остановка и выход 7. Воспроизведение останавливается автоматически при достижении конца записи. ФОРМАТ ФАЙЛА ------------- Расширение: .svdm Директория: svdemos/ Файл содержит: - Заголовок: название карты, настройки сервера, конфигстроки (имена игроков, модели, настройки игры) - Покадровые данные: дельта-сжатые состояния сущностей и игроков, серверные команды (чат, принты), изменения конфигстрок - Ключевые кадры с индексом в конце файла Дельта-кодирование обеспечивает компактный размер файла. Типичный 10-минутный матч с 10 ботами занимает ~8 МБ. Одна запись = одна карта. При смене карты запись останавливается. ОГРАНИЧЕНИЯ ----------- - Если в записанной игре было 64 игрока (MAX_CLIENTS), один из них не будет виден при воспроизведении (его слот занят зрителем). - Воспроизведение требует наличия тех же pk3-файлов (карты, модели), что использовались при записи. - Демо несовместимы между разными версиями движка, если изменился формат сетевых структур. - При перемотке могут кратковременно отображаться визуальные артефакты (частицы, вспышки) от локальных эффектов. ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ --------------------- Автоматическая запись всех матчей: set svdemo_autorecord 1 devmap q3dm17 (все матчи на этом сервере будут записываться автоматически) Запись конкретного матча: devmap q3tourney2 svdemo_record duel_finals (играть...) svdemo_stop Просмотр записи: svdemo_play duel_finals Просмотр с перемоткой: svdemo_play duel_finals (подождать 30 секунд) svdemo_seekexact -20 (вернуться на 20 секунд назад) svdemo_pause (поставить на паузу) svdemo_seek -5 (ещё назад на 5 секунд, в паузе) svdemo_pause (продолжить) ===========================================================================