===========================================================================
                    Серверные демо-записи (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           (продолжить)


===========================================================================
