Участник
Пользователь
- Сообщения
- 496
- Реакции
- 621
- Помог
- 16 раз(а)
Вводная
Half-Life TV позволяет неограниченному числу зрителей наблюдать за игрой онлайн. Они просто заходят на определённый сервер и смотрят из режима Spectator(так, как будто умерли).Зрители невидимы для игроков и не могут с ними взаимодействовать. Каждый может выбрать свой режим просмотра(Вид от 1 лица, от 3, свободная камера и.т.п.), индивидуально наблюдать за любым игроком.
Поддерживаются моды Half-Life, наиболее популярны
- Counter-Strike
- Team Fortress Classic
- Day of Defeat
В нём камера автоматически меняется расположение так, чтобы показать сцены с наиболее интересной точки обзора.
Такой зритель может расслабиться, откинуться на диванчик и не бояться, что пропустит нечто интересное.
Во время просмотра зрители могут общаться в своём зрительском чате.
HLTV предоставляет администратору полный контроль над своей системой: можно изменить число слотов, добавить текстовые сообщения, поменять логотип.
Вещание игры идёт с задержкой, по умолчанию 30 секунд. Это делается во избежание подсказок участникам игры зрителем. Настройки по умолчанию рассчитаны на 100 зрителей. HLTV запросто поддерживает и больше, однако в таком случае нужно заранее рассчитывать нагрузку на сеть, процессор и оперативную память.
Наблюдение за игрой в реальном времени
Надо просто зайти на сервер HLTV через клиент игры. Точно также, как вы заходите на игровой, только на игровой вы зайдёте поиграть, а на HLTV - посмотреть. Открыли клиент игры, нашли нужный вам сервер и зашли.Либо в консоли клиента прописать
connect ip:port
Например,
connect 10.100.45.73:34210
По умолчанию используется порт 27020, однако он может быть изменён администратором.
Как уже говорилось, режимов просмотра несколько:
[B]Chase cam[/B]
, [B]First Person[/B]
, [B]Free Look[/B]
, [B]Map Overview[/B]
и [B]Map Chase[/B]
.Режимы меняются нажатием клавиши SPACE. Меню вызывается при помощи CTRL. Клавиша E (USE) вызывает режимы Picture-In-Picture.
Зрителям доступны консольные команды:
Команда | Значение по умолчанию | Минимальное значение | Максимальное значение | Краткое описание |
spec_autodirector | 1 | 0 | 1 | Включить/выключить режим Auto Director |
spec_drawcone | 1 | 0 | 1 | Включить/выключить угол обзора на миникарте |
spec_drawnames | 1 | 0 | 1 | Показать имена игроков под иконками |
spec_drawstatus | 0 | 0 | 1 | Показать инфо(время, карта и.т.п.) |
spec_pip | 0 | 0 | 1 | Включить/выключить режим Picture-In-Picture |
spec_mode | 1 | 1 | 6 | Переключение между режимами просмотра |
spec_menu | - | - | - | Открыть меню |
spec_help | - | - | - | Показать help |
Режимы просмотра spec_mode по порядку от 1 до 6:
- Locked Chase
- Free Chase
- Free Roaming
- First Person
- Map Overview
- Chase Map Overview
- Отключен
- Free Chase
- First Person
- Map Overview
- Chase Map Overview
Основы HLTV
Как уже говорилось, ядром вещания является сервер HLTV, также его называют HLTV proxy.Сам по себе является исполняемым консольным приложением, работающим как HLDS.
Для начала трансляции HLTV proxy присоединяется к серверу HLDS в качестве обычного игрока.
Далее зрители заходят на HLTV proxy и смотрят трансляцию из игры.
Число зрителей, поддерживаемых одним сервером HLTV зависит от оборудования и сети. Теоретически их может быть до 255.
100 зрителей требуют не менее 2 Мбит/с. С учётом различных эффектов, сообщений HUD это число может быть больше.
Если зрителей больше 255, то следует подключить дополнительные HLTV Proxy.
Первый подключившийся HLTV proxy называется Master proxy. Остальные HLTV Proxy подключаются не к HLDS, а к Master proxy и называются Relay proxies. Например, может быть так:
Длина цепи HLDS -->Master Proxy-->Relay Proxy не ограничена. На схеме 3 Relay HLTV Proxy, в итоге трансляцию могут смотреть до 255*3=765 зрителей.
Желательно чтобы HLTV Proxy находились в разных сетях для гарантии максимального использования пропускной способности.
Вещание
Давайте рассмотрим наиболее простую конфигурацию: один HLTV proxy в локальной сети(LAN).Для работы HLTV надо сперва установить HLDS. HLDS включает в себя файлы HLTV.
Запустите приложение HLTV (иконка HL с маленькой камерой). Откроется консоль HLTV и покажет ряд стандартных сообщений инициализации.
Если инициализация идёт слишком долго, то возможно, что HLTV не может получить ответ от IP-адреса. В этом случае запустите HLTV с параметром
-nodns
.После завершения инициализации консоль готова к выполнению команд. Каждая консольная команда сопровождается префиксом '>'.
Дадим нашему HLTV Proxy какое-нибудь имя.
>name "My HLTV Proxy"
Предположим, вы запустили HLTV Proxy на хосте 192.168.1.2 и игровой сервер HLDS на 192.168.1.3:27015
Приконнектим HLTV к HLDS
>connect 192.168.1.3:27015
Через пару секунд HLTV присоединится и готов к заходу зрителей.
Убедимся, что HLTV Proxy присоединился корректно. Введём команду
>status
Ответ будет примерно таков
Код:
--- HLTV Status ---
Online 00:23, FPS 79.0, Version 2435 (Win32)
Local IP 192.168.1.2:27020, Network In 1.7, Out 1.0, Loss 0.00
Local Slots 128, Spectators 0, Proxies 0
Total Slots 128, Spectators 0, Proxies 1
Source Game Server 192.168.1.3:27015, Delay 30
Server Name "Half-Life dedicated server"
Time 01:35, Game "valve", Map "maps/rapidcore.bsp", Players 1
status
покажет IP-адреса HLTV, сервера HLDS, fps,число слотов, название, входящий и исходящий трафик в kB/sec
.Local slots - число слотов под зрители на этом HLTV.
Total Slots - число слотов под зрители на всех HLTV, вещающих игру.
Аналогично со Spectators(зрителями).
Source Game Server(источник) может быть игровым сервером как у нас сейчас, другим HLTV proxy или вообще демкой .dem.
Запись демо HLTV
Демки HLTV имеют тот же формат .dem, что и обычные демки, записанные непосредствено из игры, Half-Life, однако имеют больше опций при просмотре больше. Можно выбирать режим обзора, точку обзора.Проигрывается такая демка через клиент игры, HLTV Proxy при просмотре не требуется.
Достаточно закинуть демку в папку с игрой, зайти в клиент игры и прописать в консоли
playdemo <demoname>
или viewdemo <demoname>
.Playdemo просто запустит демку, а viewdemo позволит перематывать, замедлять и ускорять запись.
Для записи демки HLTV вам надо присоединить HLTV Proxy к игровому серверу и в консоли прописать
>record <name>
После этой команды начнётся запись. Демо сохранится в директории мода. Для Counter-Strike 1.6 это папка cstrike.
Все демки сохраняются в формате <name>-<YYMMDDhhmm>-<map>.dem.
- name // имя
- YYMMDDhhmm // дата
- map // название карты
>status
Останавливается запись командой
>stoprecording
Зачастую HLTV Proxy используется только для записи демок, а не для просмотра игры онлайн.
В этом случае оптимально выставить следующие настройки
Код:
>maxclients 0 // Запрещаем заходить зрителям
>delay 0 // Убираем задержку
>rate 10000 // максимальный rate
>updaterate 20 // стандартный update rate
>nomaster 1 // не регистрируемся в мастерсервере
Вещание для большого числа зрителей
Как ранее говорилось, можно сделать вещание для большого числа зрителей, больше 1000.Главным правилом должно быть
Качество, а не количество
. Пусть лучше у нас будет меньше слотов, но зато зрители не будут страдать от лагов и выкидываний с сервера по таймауту.Точно рассчитывайте пропускную способность вашей сети и исходя из неё - число зрителей на вашем HLTV Proxy.
Процессор и оперативная память на современный компьютерах не особо важны. Узким местом скорее всего будет именно сеть.
Ниже приведён список различных вариантов подключения к Internet и максимальное число зрителей:
Тип соединения | Скорость | Максимальное число зрителей |
ISDN | 64 Кбит/с | 2 |
DSL | 128 Кбит/с | 5 |
T1 | 1.5 Мбит/с | 75 |
LAN | 10 Мбит/с | 500 |
T3 | 75 Мбит/с | 4000 |
Максимальное число зрителей для конкретного HLTV Proxy устанавливается командой
maxclients
.Убедитесь что
maxrate
имеет приемлемое значение, хотя бы 3500 КБит/с. Значения меньше не запрещены,но могут у зрителей спровоцировать choke.
Команда
maxrate
не влияет на пропускную способность между различными серверами HLTV proxies, влияет только на зрителей.Для снижения нагрузки на сеть можно убрать чат в HLTV (
chatmode 0
) или понизитьupdaterate с 20 до 10 (
updaterate 10
). Снижение updaterate сэкономит 25% трафика. Если вы используете HLTV НЕ для записи демок, а только для просмотра игры онлайн, то это будет разумным компромиссом.Часто в случае крупных вещаний подключают к одной игре 2 HLTV Proxy. Один для VIP зрителей, другой для обычных.
Теперь предположим, что HLDS находится в закрытой сети LAN и к нему нет доступа извне.
Такое решение делает нас неуязвимыми для атак. Как организовать трансляцию в этом случае?
Первый HLTV proxy (HLTV master) стартует в сети LAN, его IP следует держать в секрете.
Второй HLTV Proxy запускаем снаружи. Второй сервер подключается к Первому.
Второй сервер является публичным, его IP даём зрителям. Если надо больше зрительских мест, чем может вместить один HLTV Proxy, то Второй сервер делаем диспетчером(HLTV Dispatcher): устанавливаем ещё несколько HLTV Proxy и подключаем их к нему.
Этот же метод можно использовать для распределения нагрузки между различными сетями.
Таким образом сервер трансляции из игры HLTV master server защищён от атак и проблем с сетью. Например, он будет писать демки в высоком качестве.
В схеме зритель подключается к HLTV Dispatcher. Dispatcher автоматически перекидывает зрителя на один их трёх подключенных к нему HLTV Proxy. Игровой сервер находится во внутренней сети, HLTV Master тоже. Таким образом никакая атака или сбой сети интернет не могут прервать трансляцию на HLTV Master и демка будет записана в любом случае. Нагрузка на сеть распределена более-менее равномерно между тремя HLTV Proxy. Единственным уязвимым звеном является HLTV Dispatcher.
Конфигурационные файлы HLTV master и HLTV Dispatcher различаются.
master.cfg
Код:
nomaster 1 // отключаем WON-регистрацию на мастерсервере. Тем самым делаем HLTV видимым только для тех, кто знает IP адрес
proxypassword MyPWD // защищаем HLTV server
publicgame 0 // не показываем серверный IP
dispatchmode 0 // не перенаправляем зрителя на другие HLTV
Код:
forcemaster 1 // включаем WON-регистрацию на мастерсервере
publicgame 0 // не показываем серверный IP
dispatchmode 2 // перенаправляем всех зрителей на другие HLTV
hostname MyGame // имя сервера HLTV
Чтобы включить rcon, пропишите его в поле
adminpassword
.Установка
proxypassword
позволит подключение одного HLTV к другому HLTV только по паролю.Это введено на случай если кто-то, кто знает IP вашего HLTV, захочет к нему подключить свой HLTV и тем самым увеличит сетевую нагрузку.
Конфигурация HLTV
Команда может иметь один или несколько параметров. Необязательные параметры заключены в квадратные скобки '[ ]'.В таблице ниже встретятся следующие обозначения:
- <string> : текст. Если содержит пробелы, то должен быть в кавычках. "My Name"
- <n> : целое число, например 42
- <f> : число с плавающей точкой, например 4.2
- <IP:Port> : IP адрес и порт, например 192.168.130.42:27020
- <a|b|c> : набор опций, например a или b или c
Команда | Аргументы | Описание |
connect | IP:Port | IP:Port игрового сервера, к которому присоединится HLTV proxy |
disconnect | - | Отключение HLTV от игрового сервера, но не остановка вещания. Все зрители остаются подключенными. |
stop | [ text ] | Отключение от игрового сервера, отключение всех зрителей и сотановка записи демо. Опционально проигрывается прощальное сообщение. |
quit | 1 | Завершение процесса HLTV |
retry | 0 | Попытаться переподключиться |
autoretry | 0/1 | Если включено, proxy сделает попытку переподключения при обрыве связи |
name | text | Название HLTV proxy в таблице фрагов |
hostname | text | Название HLTV в списке серверов(server browser) |
serverpassword | text | Устанавливает пароль на игровой сервер |
adminpassword | text | Устанавливает пароль для использование RCON и комментатора |
proxypassword | text | Устанавливает пароль для relay proxies |
spectatorpassword | text | Устанавливает пароль для зрителя. Will also exclude proxy from global load balancing |
clients | - | Список зрителей |
proxies | - | Список relay proxies |
players | - | Список игроков на игровом сервере |
kick | ID | Выкидывает(кикает) зрителя из HLTV proxy |
bann | IP | Банит IP-адрес |
clearbanns | - | Очистить список забаненный IP |
say | text | Посылает сообщение на игровой сервер(чат с игроками) |
msg | text [ duration pos x pos y rgba ] | Посылает всем зрителям сообщение в виде HUD |
localmsg | text [ duration pos x pos y rgba ] | То же, что и msg, но видно только локальным зрителям |
servercmd | string | Отсылает консольную команду на игровой сервер |
clientcmd | group string | Отсылает команду всем клиентам группы: 1 = зрители, 2 = прокси, 3 = всем |
loopcmd | id n string | Loopcmd запускает string каждые n секунд. <id> это число между 1 и 64 , идентификатор конкретного loopcmd. loopcmd <id> none уберёт повторение команды. |
signoncommands | string | Консольная команда, которая будет исполнена у зрителя после коннекта. Можно указать несколько команд, разделив их ; |
maxclients | n | Лимит зрителей на конкретно этом HLTV(по умолчанию 128 ) |
delay | n | Задержка вещания длительностью n секунд на Master Proxy. Значение по умолчанию равно 30 секундам. If the delay is set to a value below 10 seconds (e.g. 0), the auto director function will be disabled |
rate | n | Пропускная способность канала между HLTV и игровым сервером HLDS. |
updaterate | n | Число обновлений в секунду(кадров), посылаемых сервером на HLTV. |
maxrate | n | Максимальная пропускная способность канала для зрителей. |
maxloss | f | Максимальный уровень loss, по умолчанию равен 0.05 (5%). Если loss выше, то новым зрителям будет отказано в подключении. |
maxqueries | n | Максимальное число запросов статуса от игрового браузера(server browser) |
dispatchmode | 0/1/2 | Редирект зрителей с HLTV. 0 (Отключено) Клиенты никуда не редиректятся. 1 (Авто) Автоматически перенаправит зрителя на другой HLTV Proxy для сохранения баланса по нагрузке между всеми HLTV.2 (Всегда) Зритель будет перенаправлен на другой сервер в любом случае. Конкретно такой HLTV работает как распределитель зрителей. |
publicgame | 0/1 | Виден ли IP сервера HLDS зрителям. 0 Приватный, не виден. 1 IP виден зрителям, так что они смогут присоединиться к игре. |
offlinetext | string | Инфо в виде текста, виидмое клиентам, которые пытаются зайти на HLTV в то время как HLTV прекратил вещание. |
chatmode | 0/1/2 | 0 Зрители не могут использовать чат 1 Зрители могут использовать чат, но только в рамках своего прокси2 Все зрители чатятся друг с другом (в этом случае Master и все Relay proxies должны установить chatmode 2). |
bannerfile | file | Устанавливает файл с расширением TGA ( RGBA ) в качестве логотипа, который видят зрители |
ping | host:port | Пингует сервер HLDS server на определённый порт. По умолчанию на 27015. |
nomaster | 0/1 | 0 Опция отключена. 1 HLTV Proxy не будет регистрироваться на мастер-серверах WON. |
forcemaster | 0/1 | 0 Опция отключена. 1 HLTV Proxy будет регистрироваться на мастер-серверах WON. |
heartbeat | - | Высылает данные о статусе на мастер-сервера WON. |
region | n | Устанавливает регион, где располагается HLTV proxy |
rcon | string | Удалённый контроль над другими серверами через консольные команды |
rconaddress | IP:Port | Устанавливает сервер для удалённого контроля. |
rconpassword | string | Устанавливает пароль rcon для удалённого хоста |
cheeringthreshold | f | Number of cheering players must be above this threshold to play the cheering sound. (by default 0.25 ). |
blockvoice | 0/1 | 0 Отключено.1 Голосовой чат блокируется. Полезно если в игре есть официальные комментаторы. Тогда их не будут перебивать/заглушать. |
cmdlist | - | Показывает все возможные команды. |
logfile | 0/1 | Выключить/включить логирование консоли в файл logfile<date>.log |
status | - | Показывает статус HLTV. |
modules | - | Показывает все загруженные модули HLTV и их версии |
exec | filename | Исполняет файл .cfg |
echo | string | Пишет текст в консоль HLTV |
developer | 0/1 | 0 Отключено. 1 Включает дополнительные сообщения отладки |
record | filename | Записывает транслируемые игры в демки. Синтаксис названия filename-<date>-<map>.dem |
stoprecording | - | Останавливает запись демок |
playdemo | filename | Начинает проигрывать демку |
Консоль вызывается кнопкой TAB.
Все команды из файла hltv.cfg выполняются во время запуска HLTV.
Параметры командной строки(строки запуска)
INI:
-port <n> // устанавливает порт HLTV proxy. По умолчанию "27020"
-ip <IP> // HLTV будет использовать этот IP-адрес на хосте с несколькими IP
-nodns // Запрещает имена DNS (полезно для LAN proxies)
-maxfps <n> // устанавливает максимальный фпс(по умолчанию "100")
-highpriority // запускает процесс HLTV с высоким приоритетом
-multicastttl <n> // устанавливает время жизни для Multicast-пакетов, посылаемых HLTV Proxy.
-dev // режим разработчика(developer mode)
[B]+[/B]
. Например:hltv.exe +connect localhost:27015 -port 27021
На сервере HLDS можно установить количество подключаемых проксей переменной
sv_proxies `n`
в файле server.cfg.Если следует запретить HLTV proxies , то установите
sv_proxies `0`
. 1
позволит подключить 1 HLTV Proxy и.т.д.Сборка из исходников
Windows:gradlew --max-workers=1 clean rehlds/HLTV:build
Linux (ICC):
./gradlew --max-workers=1 clean rehlds/HLTV:build
Linux (GCC):
./gradlew --max-workers=1 -PuseGcc clean rehlds/HLTV:build
Собранные файлы будут находиться в каждом билде ReHLDS в папке rehlds/HLTV/**/binaries/
Документация HLTV. Располагается в README.md
Copyright © 2003,
Valve LLC
, All rights reserved.Перевод Dev-CS.ru TEAM. При копировании материала активная ссылка обязательна.
Если заметите неточность - пожалуйста, сообщите нам.