Pterohost docs

Cinema-сервер Garry's Mod: совместный просмотр видео

Как поднять Cinema-сервер в Garry's Mod: установка геймода PixelTail Cinema, theater-карты, медиа-плеер, YouTube, очередь, ULX и модерация.

Кратко: Cinema - геймод для GMod, в котором игроки совместно смотрят YouTube и другие видео в виртуальном кинотеатре. Установите геймод от PixelTail Games, выберите theater-карту и настройте ULX для модерации - и комьюнити получит уютное место для киновечеров прямо в Garry’s Mod.

Cinema-сервер Garry’s Mod: совместный просмотр видео

Cinema - один из самых необычных геймодов Garry’s Mod, который превращает игровой сервер в виртуальный кинотеатр. Игроки собираются в красиво оформленном зале, добавляют ссылки на YouTube или Twitch в общую очередь, голосуют за следующее видео и вместе смотрят контент на огромном экране. В 2026 году геймод активно поддерживается сообществом PixelTail Games, работает на актуальной версии Garry’s Mod (2024+ билды) и поддерживает большинство популярных стриминговых сервисов. Эта статья охватывает полную установку Cinema-сервера: от скачивания геймода до настройки модерации и оптимизации трафика.

Pterohost - игровой хостинг с NVMe SSD, DDoS-защитой L4+L7 и техподдержкой 24/7. Промокод 4START даёт -20% на первый заказ. Заказать Garry’s Mod сервер

Что такое геймод Cinema и как он работает

Cinema - геймод, разработанный командой PixelTail Games (те же авторы, что делали Blockland Renderman и серверы GMod Tower). Принцип работы прост: на карте расставлены специальные entity gmod_cinema_screen, которые отображают видео через HTML-панели Source Engine. Клиент получает таймкод и URL от сервера, открывает Chromium-рендерер GMod (CEF - Chromium Embedded Framework) и проигрывает поток локально.

Это означает важный технический факт: видео не проходит через ваш сервер. Каждый клиент самостоятельно открывает YouTube или Twitch и скачивает поток напрямую. Сервер только синхронизирует:

  • текущий URL и таймкод воспроизведения,
  • очередь видео (playlist),
  • результаты голосования за пропуск,
  • права пользователей (кто может добавлять, кто - удалять чужие видео).

Из этого следует, что Cinema-сервер потребляет минимум трафика по сравнению с SRCDS другого геймода с активным gunplay. Основные расходы - сеть для игровых пакетов голосов и синхронизации, не для видео.

Системные требования

ПараметрМинимум (16 слотов)Рекомендуется (32 слота)
CPU1 ядро 2.8 GHz1 ядро 3.5+ GHz
RAM2 GB4 GB
Диск5 GB10 GB NVMe (для карт)
Сеть10 Мбит100 Мбит
ОСUbuntu 20.04+ / Debian 11+Ubuntu 22.04 LTS

Cinema по CPU значительно легче, чем DarkRP или Sandbox с физикой. Основная нагрузка - рендеринг HTML-панелей на стороне клиента. Сервер занимается только синхронизацией состояния.

Единственное, что стоит учесть по трафику - при подключении нового клиента тот получает текущий таймкод и начинает воспроизведение с нужного момента. Если у клиента медленный интернет, он будет буферизировать видео дольше, но на сервер это не влияет.

Установка геймода Cinema

Шаг 1. Установка srcds

Если у вас уже есть работающий Garry’s Mod Dedicated Server - переходите к шагу 2. Если нет - установите через SteamCMD:

# Установка SteamCMD (Ubuntu/Debian)
apt-get install -y lib32gcc-s1
mkdir -p /opt/steamcmd && cd /opt/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xzf steamcmd_linux.tar.gz

# Установка Garry's Mod Dedicated Server (App ID 4020)
./steamcmd.sh +login anonymous +force_install_dir /opt/gmodserver +app_update 4020 validate +quit

Шаг 2. Загрузка геймода Cinema

Геймод Cinema от PixelTail Games распространяется через GitHub. Репозиторий: PixelTail-Games/Gamemode-Cinema.

cd /opt/gmodserver/garrysmod/gamemodes/
git clone https://github.com/PixelTail-Games/Gamemode-Cinema.git cinema
# Или через zip-архив, если git недоступен:
# wget https://github.com/PixelTail-Games/Gamemode-Cinema/archive/refs/heads/master.zip
# unzip master.zip && mv Gamemode-Cinema-master cinema

Структура после установки должна выглядеть так:

garrysmod/
  gamemodes/
    cinema/
      gamemode/
        init.lua
        cl_init.lua
        shared.lua
      lua/
        cinema/
          ...
      info.txt

Проверьте наличие info.txt - без него srcds не увидит геймод.

Шаг 3. Запуск сервера с геймодом Cinema

/opt/gmodserver/srcds_run \
  -game garrysmod \
  +gamemode cinema \
  +map theater_royal \
  +maxplayers 24 \
  -port 27015 \
  +hostname "MyCinema Server" \
  -console

Параметры:

  • +gamemode cinema - указывает на папку garrysmod/gamemodes/cinema/.
  • +map theater_royal - стартовая карта. Должна быть theater-картой с entity экранов.
  • +maxplayers 24 - для кинотеатра 16-32 слота оптимально.

Выбор карты-кинотеатра

Для Cinema нужны специальные карты, в которых расставлены entity gmod_cinema_screen. Обычные карты Sandbox или DarkRP не имеют таких объектов и не будут показывать видео.

Популярные theater-карты (Workshop)

КартаWorkshop IDОписание
theater_royal137778740Классический большой кинотеатр, несколько залов
theater_v4b1112093991Компактный кинотеатр, один зал
gm_cinema208669001Кинотеатр с открытым фойе
theater_lowlife271580265Атмосферный ночной кинотеатр
cinema_revamped1234567890Обновлённый вариант с лобби

Подключение Workshop-карт через коллекцию:

# В srcds_run добавьте:
+host_workshop_collection <ID_КОЛЛЕКЦИИ>
# Или для отдельной карты:
+host_workshop_map 137778740

Убедитесь, что в server.cfg прописан ваш API-ключ Steam для Workshop:

sv_setsteamaccount "ВАШ_GSLT_ТОКЕН"

GSLT-токен (Game Server Login Token) получается на странице https://steamcommunity.com/dev/managegameservers (App ID 4000).

Настройка конфигурации Cinema

Основные настройки геймода расположены в:

garrysmod/gamemodes/cinema/lua/cinema/server/config.lua

Если файл не существует, создайте garrysmod/data/cinema/config.json - геймод читает оба источника. Пример ключевых параметров:

-- Максимальная длина видео в секундах (3600 = 1 час)
CINEMA_MAX_VIDEO_LENGTH = 3600

-- Максимум видео в очереди на одного пользователя
CINEMA_QUEUE_LIMIT_PER_USER = 5

-- Разрешить добавление видео без регистрации (для публичных серверов)
CINEMA_ALLOW_ANONYMOUS_QUEUE = true

-- Список заблокированных слов в URL и заголовках
CINEMA_BLOCKED_TERMS = {
    "porn", "gore", "hentai", "nsfw"
}

-- Голосование за пропуск: нужно X% голосов от присутствующих
CINEMA_SKIP_VOTE_PERCENT = 0.6

-- Включить таймаут AFK (секунды без активности до кика)
CINEMA_AFK_TIMEOUT = 0  -- 0 = отключено

После изменения конфига перезапустите сервер командой changelevel theater_royal через RCON или консоль.

Медиа-плеер и поддерживаемые сервисы

Cinema использует встроенный HTML-рендерер GMod (Awesomium/CEF) для воспроизведения контента. Поддержка сервисов определяется провайдерами в папке:

lua/cinema/shared/providers/

Встроенные провайдеры

СервисПоддержкаПримечание
YouTubeПолнаяВидео, шорты, плейлисты
SoundCloudПолнаяТреки и плейлисты
TwitchLive-стримыVOD работают нестабильно
Прямые MP4/WebMЧастичнаяТолько с CORS-заголовками
StreamableЧастичнаяЗависит от версии

Для добавления нового провайдера создайте файл lua/cinema/shared/providers/myservice.lua:

local PROVIDER = {}

PROVIDER.Name = "MyService"
PROVIDER.Pattern = "https?://myservice%.com/video/([%w%-_]+)"

function PROVIDER:GetVideoData(url, callback)
    local id = url:match(self.Pattern)
    if not id then return end
    callback({
        id = id,
        title = "MyService Video",
        duration = 0,  -- 0 = неизвестная длина
        url = "https://myservice.com/embed/" .. id
    })
end

cinema.providers.Register("myservice", PROVIDER)

Очередь видео и голосование

Управление очередью происходит через интерфейс Cinema (клавиша F2 по умолчанию или TAB). Игроки видят:

  • текущее видео с прогресс-баром,
  • список следующих видео в очереди,
  • кнопку “Голосовать за пропуск” (Vote to Skip).

Голосование за пропуск срабатывает при достижении порога CINEMA_SKIP_VOTE_PERCENT (по умолчанию 60%). Если в зале 10 человек - нужно 6 голосов за пропуск. Голосование сбрасывается при смене видео.

Установка ULX для модерации

ULX - стандартный инструмент администрирования для GMod. Для Cinema он необходим для:

  • выдачи прав на добавление видео (или ограничения),
  • бана нарушителей,
  • удаления видео из очереди командой администратора,
  • управления правами на изменение конфига прямо из игры.
# Установка ULib (зависимость)
cd /opt/gmodserver/garrysmod/addons/
git clone https://github.com/TeamUlysses/ulib.git
# Установка ULX
git clone https://github.com/TeamUlysses/ulx.git

После установки перезапустите сервер. ULX создаст папку garrysmod/data/ULib/ с конфигами пользователей.

Основные команды ULX для Cinema-сервера

# В консоли сервера или через RCON:
ulx adduser <steamid> operator    -- выдать права оператора кинотеатра
ulx adduser <steamid> superadmin  -- полные права

# В игровой консоли (от имени админа):
ulx ban <player> 60 "NSFW content"   -- бан на 60 минут
ulx kick <player> "Inappropriate video"
ulx mute <player> 5                  -- мут на 5 минут

Группы ULX для Cinema

Создайте кастомные группы под нужды кинотеатра в data/ULib/groups.txt:

"cinema_moderator"
{
    "inherit_from" "user"
    "can_target" "!^"
    "allow"
    {
        "ulx kick" "1"
        "ulx mute" "1"
        "cinema_skip_force" "1"
        "cinema_queue_remove" "1"
    }
}

Группа cinema_moderator позволяет модераторам кикать нарушителей и принудительно убирать видео из очереди без доступа к административным командам ULX.

Модерация контента

Совместный просмотр видео требует активной модерации - без неё на публичном сервере быстро появится NSFW-контент. Рекомендуемые меры:

Автоматическая фильтрация

Список заблокированных слов в конфиге Cinema (CINEMA_BLOCKED_TERMS) проверяет URL и заголовок видео при добавлении в очередь. Видео с запрещёнными словами не добавляется, пользователь получает сообщение об отказе.

Расширьте список под вашу аудиторию:

CINEMA_BLOCKED_TERMS = {
    "porn", "hentai", "gore", "nsfw", "xxx",
    "jumpscares", "loud", "earrape"
    -- добавьте слова на языке вашего комьюнити
}

Ограничение по группам

На строгих серверах имеет смысл ограничить добавление видео только зарегистрированным пользователям. В config.lua:

-- Только пользователи с группой ULX "member" и выше могут добавлять
CINEMA_QUEUE_MIN_RANK = "member"
CINEMA_ALLOW_ANONYMOUS_QUEUE = false

Регистрация игроков в группу member - через ulx adduser <steamid> member.

Журнал видео

Cinema ведёт лог добавленных видео в garrysmod/data/cinema/log.json. Формат:

{
    "timestamp": 1717612800,
    "steamid": "STEAM_0:1:12345678",
    "url": "https://youtube.com/watch?v=...",
    "title": "Video Title",
    "duration": 325
}

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

Производительность и требования к трафику

Cinema-сервер легче большинства GMod-режимов по CPU, но имеет особенности по сети.

Нагрузка на сеть

При 20 игроках основной сетевой трафик - это стандартные игровые пакеты Source Engine (позиции игроков, чат, синхронизация объектов). Cinema добавляет:

  • синхронизацию таймкода - примерно 1 пакет в 5-10 секунд на всех игроков (крайне мало),
  • передачу URL при смене видео - разовый небольшой пакет.

Важно: сам видеопоток идёт напрямую от YouTube/Twitch к каждому клиенту, минуя ваш сервер. При 20 зрителях суммарный исходящий трафик с YouTube - 20 x ~3-5 Мбит/с = 60-100 Мбит/с. Но это трафик клиентов, не вашего сервера.

На вашем сервере достаточно 10-50 Мбит/с для самого srcds при любом количестве зрителей.

Оптимизация тиков

Стандартный tickrate для Cinema - 66 Hz (по умолчанию в GMod). Снижать до 33 не рекомендуется - это ухудшает синхронизацию таймкода при голосовании за пропуск. Значение 66 оптимально.

В server.cfg:

sv_minrate 5000
sv_maxrate 80000
sv_mincmdrate 30
sv_maxcmdrate 66
sv_minupdaterate 30
sv_maxupdaterate 66

Отключение ненужной физики

Cinema не использует пропсы и физику. Добавьте в server.cfg:

sbox_maxprops 0
sbox_maxragdolls 0
sbox_maxnpcs 0
sbox_maxvehicles 0

Это исключит возможность спавна объектов и немного разгрузит тиклу.

Часто встречаемые проблемы

Экран чёрный или не загружается видео

Причины:

  1. HTML-рендерер отключён на клиенте - игрок должен включить cl_drawhud 1 и разрешить HTML в настройках GMod.
  2. Карта без entity экранов - проверьте, что используется theater-карта, а не обычная.
  3. YouTube изменил API - проверьте обновления репозитория Cinema на GitHub, обновите провайдер.

Для диагностики попросите игрока открыть консоль GMod (клавиша `) и поискать ошибки вида [Cinema] Failed to load media.

Видео не синхронизировано между игроками

Если таймкод у игроков расходится на 2-5 секунд - это нормально из-за разной скорости буферизации. Расхождение более 15 секунд обычно означает:

  • высокий пинг игрока (>200 ms),
  • плохое соединение клиента с YouTube.

Принудительная ресинхронизация для клиента - пересесть на другое место в зале (смена seat entity) или ввести в консоли cinema_resync.

Геймод не определяется srcds

[S_API FAIL] SteamAPI_Init() failed
WARNING: Failed to load gamemode 'cinema'

Проверьте:

  1. Наличие файла garrysmod/gamemodes/cinema/gamemode/init.lua.
  2. Наличие garrysmod/gamemodes/cinema/info.txt с корректным именем геймода.
  3. Права на чтение файлов (от имени того пользователя, под которым запущен srcds).

Связанные материалы

Перед запуском Cinema-сервера убедитесь, что базовая инфраструктура настроена правильно. Читайте как собрать GMod-сервер с нуля - там описана установка srcds, Workshop-аддоны и базовый server.cfg. Если планируете добавить несколько карт и режимов - смотрите настройку Sandbox-сервера. Для устранения лагов и тюнинга тиклупа поможет руководство по оптимизации GMod-сервера.

Заключение

Cinema - нишевый, но очень атмосферный геймод, который отлично подходит для небольших комьюнити и тематических серверов. Технически он прост в установке: скачайте геймод с GitHub PixelTail Games, выберите theater-карту с Workshop, настройте config.lua под свою аудиторию и добавьте ULX для модерации. Видеотрафик не нагружает ваш сервер - клиенты получают поток напрямую от YouTube. Основное внимание уделите модерации контента и настройке фильтров заблокированных слов - это сэкономит много времени администраторам.

Pterohost - серверы для Garry’s Mod с NVMe SSD, защитой от DDoS-атак и поддержкой 24/7 - идеальная основа для Cinema-сервера. Промокод 4START даёт -20% на первый заказ. Заказать Garry’s Mod сервер