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 слота) |
|---|---|---|
| CPU | 1 ядро 2.8 GHz | 1 ядро 3.5+ GHz |
| RAM | 2 GB | 4 GB |
| Диск | 5 GB | 10 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_royal | 137778740 | Классический большой кинотеатр, несколько залов |
| theater_v4b1 | 112093991 | Компактный кинотеатр, один зал |
| gm_cinema | 208669001 | Кинотеатр с открытым фойе |
| theater_lowlife | 271580265 | Атмосферный ночной кинотеатр |
| cinema_revamped | 1234567890 | Обновлённый вариант с лобби |
Подключение 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 | Полная | Треки и плейлисты |
| Twitch | Live-стримы | 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
Это исключит возможность спавна объектов и немного разгрузит тиклу.
Часто встречаемые проблемы
Экран чёрный или не загружается видео
Причины:
- HTML-рендерер отключён на клиенте - игрок должен включить
cl_drawhud 1и разрешить HTML в настройках GMod. - Карта без entity экранов - проверьте, что используется theater-карта, а не обычная.
- 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'
Проверьте:
- Наличие файла
garrysmod/gamemodes/cinema/gamemode/init.lua. - Наличие
garrysmod/gamemodes/cinema/info.txtс корректным именем геймода. - Права на чтение файлов (от имени того пользователя, под которым запущен 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 сервер