Source TV

Andrey

пишу код за еду
Сообщения
3,383
Реакции
3,994
  • Команда форума
  • #1
Source TV

source_dedic.gif


SourceTV дает возможность неограниченному числу зрителей наблюдать за ходом матча на выделенном сервере Source. SourceTV зрители невидимы игрокам матча и не могут никак влиять на ход игры. Камера SourceTV может управляться как самим сервером так и непосредственно человеком, будучи ответственным за управлению ею. Вещание матча через SourceTV может передаваться с некоторым заранее заданным временным интервалом. Эта возможность страхует от вероятности того, что игроки могут воспользоваться SourceTV, чтобы получить какую-либо информацию об их оппонентах.
Организация SourceTV для вещания нескольким зрителям не требует никаких особых временных затрат и ресурсов сервера. Организация же вещания для тысяч зрителей может потребовать предварительной подготовки и серьезных требований к серверу.

1. Просмотр игры

Для просмотра матча через SourceTV откройте Steam, выберите раздел Servers для того, чтобы открыть браузер серверов. Выберите раздел Spectate, чтобы увидеть список доступных SourceTV серверов. Вы можете изменить критерии поиска серверов через Change filters. Подключиться к серверу можно кликнув по нему в списке серверов два раза мышкой.
Часто игровые лиги и чемпионаты заранее публикуют IP (вида IP:Port) адреса SourceTV, по этому вы всегда можете добавить адрес в закладку Favorites вместо того, чтобы искать его через поиск. Можно также подключиться к SourceTV используя консоль игры
C-подобный:
connect 192.168.1.2:27020
Порт по умолчанию у SourceTV является 27020, но может быть изменен по усмотрению администратора. Но порт SourceTV всегда следует указывать, так как порт по-умолчанию игрового сервера - 27015.
В момент просмотра матча через SourceTV тип камеры и ее позиция определяются или самим сервером или человеком за это ответственным. Сами наблюдатели не могут переключать камеру, как это было в HLTV, так как это во много раз увеличивает пропускную способность. В тоже время демо записи, заснятые через SourceTV позволяют наблюдателям переключать камеру по их усмотрению.

2. Транслирование игры


SourceTV полностью интегрирован в Движок Source и больше не является отдельной программой, как это было раньше с HLTV. Чтобы начать вещание, сервер должен активировать SourceTV перед стартом карты командой tv_enable 1. После этого в игре можно будет увидеть SourceTV как отдельного бота, присутствующего в наблюдателях. Сервер SourceTV "живет" также как и игровой серверный процесс и называется SourceTV master server. Процесс SourceTV master server накапливает и кэширует информацию, после чего отдает ее клиентам с указанной задержкой, дабы избежать попыток читерства со стороны команд. Авто выбор камеры - это специальный мод, который автоматически определяет интересные игровые моменты и старается их показать зрителям (такие как убийства или закладка бомбы). Может быть также назначен человек - оператор матча, который будет сам выбирать игровые моменты и показывать зрителям их, SourceTV будет транслировать игру через его экран. Спектаторы SourceTV чаще всего подключаются к стандартному порту SourceTV 27020. Порт SourceTV может также быть изменен консольной командой tv_port.

plan1.gif


Подобная конфигурация удобна для маленьких матчей с малым количеством зрителей. Вся информация о зрителях и игроках обрабатывается игровым сервером. Большое количество зрителей тут же потребует большой нагрузки на процессор и пропускную способность канала. Следовательно логичным было бы решить проблему расхода мощности процессора и трафика распределив их между различными вспомогательными серверами, число которых можно увеличивать с растущим объемом зрителей. Этот способ осуществим подключением вспомогательных SourceTV к главному SourceTV транслятору, которые и будут выполнять роль распределителей зрителей. Такие сервера называются SourceTV прокси сервера, и каждый Прокси сервер может обрабатывать одновременно до 255 человек. Естественно сами Прокси сервера также могут подключаться к таким же прокси серверам и образовывать тем самым неограниченную сеть SourceTV серверов, транслирующую одну игру.
plan2.gif

Чтобы настроить прокси сервер SourceTV необходимо запустить выделенный сервер Source с параметром tv_relay с указанием IP адреса другого SourceTV сервера.
C-подобный:
srcds.exe -game cstrike -console +tv_relay 127.0.0.2:27020
Статус локального SourceTV всегда можно посмотреть командой tv_status. Вот пример ответа на эту команду:
Online 05:15, FPS 75.7, Version 2350 (Win32)
Local IP 207.173.178.143:27020, KB/sec In 2.0, Out 4.1
Local Slots 128, Spectators 1, Proxies 1
Total Slots 256, Spectators 2, Proxies 1
Master, Delay 30
Game Time 05:16, Mod "cstrike", Map "de_dust", Players 4
Total slot и количество зрителей является суммарной величиной всех возможных слотов и зрителей с учетом подключенных прокси серверов. Если прокси сервер теряет подключение к мастер серверу то можно попытаться быстро подключиться с помощью команды tv_retry. Чтобы остановить вещание и отключить всех зрителей следует набрать команду tv_stop.

3. Ручное управление камерой

Камера в большинстве случаев управляется сервером. Но если оператор войдет в игру и займет место наблюдателя, во время матча нажмет клавишу E (Use), то камера SourceTV автоматически переключится на ручное управление и будет транслировать матч "из глаз" оператора. Оператор может выбрать любой режим показа (от первого лица, от третьего лица, свободный полет и тд.). Переключить камеру обратно в режим авто управления можно нажав еще раз клавишу E.
Оператор должен обладать хорошим знанием матча, чтобы транслировать его зрителям.
Мертвый игрок, если зайдет в наблюдатели, так же может стать оператором.

4. Запись игры

Мастер сервер SourceTV может осуществлять запись игры без какой-либо потери данных или сетевой задержки. Все события и предметы записываются в один файл, который может быть в последствие проигран как обычный демо файл (используйте команду demoui для проигрывания демо). Чтобы начать запись демо необходимо запустить SourceTV перед тем как карта будет загружена, после чего начать запись с помощью команды tv_record demoname. Запись демо прервется при смене карты или принудительно с помощью команды tv_stoprecord. Чтобы автоматически заставить писать каждый матч как только SourceTV будет включен необходимо прописать tv_autorecord 1. Автоматически записанные демо-файлы будут сохраняться с именем даты и времени формата auto-YYYYMMDD-hhmm-map.dem. Клиенты SourceTV также могут записывать ход матча с SourceTV командой record, но при просмотре файлов они будут иметь формат обычного демо, то есть человек не сможет сменить вид камеры и переключиться с игрока на другого игрока в течение проигрывания демо.
Иногда может понадобиться использовать SourceTV только для записи демо, но не для показа и вещания через него матча. Для того чтобы отключить вещание через SourceTV необходимо уменьшить количество возможных зрителей до нуля командой tv_maxclients 0. Чтобы включить автозапись SourceTV на вашем сервере, добавьте эти строчки в ваш autoexec.cfg:
C-подобный:
tv_enable 1
tv_autorecord 1
tv_maxclients 0


5. Консольные команды


tv_enable <0|1>
активирует SourceTV на локальном игровом сервере, бот SourceTV появится в наблюдателях при следующей смене карты.
tv_name
указывает имя SourceTV, которое появится в таблице счета и браузере серверов.
tv_maxclients <0..255>
устанавливеат максимальное количество зрителей для данного SourceTV. (максимум 255, по умолчанию - 128).
tv_stop
остановить трансляцию через SourceTV.
tv_status
показать различную информацию по текущему SourceTV.
tv_retry
перепоключает SourceTV на последний известный адрес (только для прокси серверов).
tv_delay
задержка трансляции SourceTV в секундах (только для мастер сервера).
tv_port
устанавливает порт для SourceTV (по умолчанию 27020).
tv_maxrate
установить максимально допустимую пропускную способность проводимую для одного клиента в байт/секунда (изначально 3500).
tv_password
установить пароль на SourceTV для подключающихся зрителей.
tv_relaypassword
установить пароль на подключение для прокси серверов.
tv_record
начать запись SourceTV демо файла (только для мастер сервера).
tv_stoprecord
остановить запись демо.
tv_autorecord <0|1>
автоматически записывать каждую игру. Формат файла - auto-YYYYMMDD-hhmm-map.dem.
tv_debug <0|1>
показывает дополнительную отладочную информацию.

6. Параметры запуска

Эти параметры запуска сервера нельзя изменить через консоль или rcon. Они необходимы для того, если вам понадобилось запретить возможности SourceTV на сервере.

C-подобный:
srcds.exe ... -nohltv
или
C-подобный:
srcds.exe ... -tvdisable
Команда ниже запрещает использовать SourceTV как передатчик информации на прокси сервера:
C-подобный:
srcds.exe ... -tvmasteronly
Источник: srcds.ru
 

qwestfx

Участник
Сообщения
110
Реакции
4
Как сделать чтобы SourceTV считался как игрок на сервере?
Когда один игрок на сервере, в поиске сервер отображается как пустой c включенным STV.
1285231592-12-23kb.jpg

1285230998-clip-2kb.png
 

rJIa3

Участник
Сообщения
169
Реакции
179
// Sourse TV
tv_enable "1"
tv_port 27020
tv_name "????"
tv_title "????"
tv_maxclients "3"
tv_delay "90"
//tv_password "1260"
tv_maxrate "15000"
tv_autorecord "0"
tv_transmitall "1"
tv_relayvoice "0"
tv_delaymapchange "1"
tv_chattimelimit "8"
tv_dispatchmode "1"
tv_snapshotrate "20"
tv_overridemaster "0"
tv_debug "0"
tv_allow_static_shots "0"
tv_allow_camera_man "0"
 

Xoxol_1987

Участник
Сообщения
30
Реакции
5
Народ, нужна помощь. С Source Tv такая проблема - слоты на сервере и на сорств считаются общими. То бишь: у меня на сервере 16 слотов, и если допустим на сорств 15 человек, то больше 3-4 человек на сервер не зайдет. Можно пробиться на сервер еще 2-3 человека сверх этого, но только если через консоль заходить, а если через обозреватель серверов, то пишет "Сервер полон". Помогите решить проблему, вот что у меня написано в server.cfg по поводу tv:
tv_enable "1"
tv_port "27076"
tv_maxclients "20"
tv_delay "90"
tv_password ""
tv_maxrate "3500"
tv_autorecord "0"
tv_transmitall "1"
tv_relayvoice "0"
tv_delaymapchange "1"
tv_chattimelimit "8"
tv_dispatchmode "1"
tv_snapshotrate "16"
tv_overridemaster "0"
tv_debug "0"
tv_allow_static_shots "0"
tv_allow_camera_man "0"
 

motte

Участник
Сообщения
1
Реакции
0
а как изменить папку сохранения демок на сервере?
я хочу чтоб демки писались круглосуточно и соответсвенно были доступны по фтп (для этого надо поменять папку для сохранения демо), чтоб каждый мог скачать, в 1.6 с этим проблем не было, а в соурсе всё не как не могу реализовать это.
 

Andrey

пишу код за еду
Сообщения
3,383
Реакции
3,994
  • Команда форума
  • #7
motte, такое не возможно базовыми средствами SRCDS (можно только через плагины, например warmod, но сохраняться будет только демка cw). Можно написать скрипт который будет искать в папке cstrike файлы с расширением .dem и копировать их в папку ftp (я бы так и сделал в твоем случае).
 

Osimus

Участник
Сообщения
51
Реакции
6
Всем привет!

Хочу сделать у себя на сервере Source TV ... :oops: Но не знаю как... :(
Дело в том что у меня другие планы на счёт Source TV ... :)

Идея такова, Нужно что-бы Source TV писала демки автоматически, но есть одно но!
Нужно что-бы демки сразу-же помещались на сайт, где после сыгранной карты любой желающий мог зайти на сайт в соответствующий раздел и скачать демо.

Я вот такое видел на одном сервере, только это был сервер CS 1.6 И после карты я просто заходил на сайт качал демо и смотрел его... :)

Сделать это хочу у себя на сервере с единственной целью что-бы стало меньше читеров!

P.S - Веб сервер у меня есть Denwer ... :P
 

Andrey

пишу код за еду
Сообщения
3,383
Реакции
3,994
  • Команда форума
  • #9
Osimus, читай выше.
 

Budun

Участник
Сообщения
2
Реакции
5
Osimus, напишу вариант, который требует наименьшие затраты мозга, времени и мощности сервера) Чтобы не нагружать сервер названия демок будем записывать в БД для дальнейшего использования в php ( притом в данном случае можно добавлять в БД ещё и списки Стимов, которые присутствуют на демке, что дает нам ещё больше возможностей по отлову читеров )

Требования: Mysql, ESP, дополнительный модуль pymysql для ESP.
Программировать будем на Python'е, самый легкий язык.

C-подобный:
# импортируем нужные модули и функции
import es
import pymysql
from time import gmtime, strftime

# объявляем переменные
demo_name = ['']

# начинаем составлять функции

# первая - для подачи информации о загрузке плагина
def load():
    es.msg('#multi','#lightgreen Наблюдатель загружен')

# эта функция будет выполнятся сразу после смены карты
def game_start(event_var):
   #составляем название демки
   demo_name[0] = strftime("%Y-%m-%d_%H-%M_", gmtime())+es.ServerVar('eventscripts_currentmap')
   # начинаем запись
   gamethread.delayed(0.1, es.server.queuecmd, ('tv_record %s'%demo_name[0]))
   # об этой функции чуть ниже
   move_to_db()  

# теперь надо добавить запись в бд, для этого используем данную функцию
def move_to_db():
   # устанавливаем соединение
    conn = pymysql.connect(host='localhost', user='myuser', passwd='mypassword', db='mydb')
    cur = conn.cursor()
   # составляем запрос на создание таблицы если таковой ещё нет
    cur.execute("""\
        CREATE TABLE IF NOT EXISTS DemoList (
        DemoName            VARCHAR(50),
        Time                TIMESTAMP( 14 ) NOT NULL DEFAULT CURRENT_TIMESTAMP
        ) ENGINE = MYISAM """)
   # запрос на добавление название демки в бд            
    cur.execute("""\
            INSERT INTO DemoList(
                DemoName
            ) VALUES (
                '%s'
            )"""%demo_name[0])
   # закрываем соединение
    cur.close()
    conn.close()

# теперь нужно остановить запись демки после окончания карты
def game_end(event_var):
      # останавливаем запись
   es.server.queuecmd('tv_stoprecord' )
Так, теперь у нас есть бд с названиями демок, осталось вывести это все на сайт.
Используем php.

PHP:
<?php
    # заявляем переменные
    $db  =  "mydb";
    $m_user  =  "myuser";
    $pass  =  "mypassword";
    $server  =  "localhost";
    # настраиваем соединение с БД
    $link  =  mysql_connect($server,  $m_user,  $pass);
    if(!$link)  die("Не  могу  соединиться  с  MySQL " . __LINE__ . __FILE__);
    mysql_select_db($db)  or  die("Не  могу  открыть  " . $db . ". error  ".mysql_error());
    # составляем запрос на получение данных
    $query  =  "SELECT * FROM DemoLIst ";
    $result  =  mysql_query($query,  $link)  or  die(mysql_error());
    $data  =  mysql_fetch_array($result);
    # находим количество записей в БД
    $count = mysql_num_rows($result);
    # составляем цикл для вывода демок на сайт в виде ссылок
    while ($count>0) {
      echo '<a href="путь до папки с демками на сервере/'.$data['DemoName'].'.dem">Демка</a>';
      echo '</br>';
      $count--;
    }

?>
Собственно вот, этот плагин + web примитивны, но работать будут. Главное ведь движок, а дизайн и полезность при использовании Python на css-сервере и Php на web-сервере можно изменять и дополнять до бесконечности, их возможности безграничны)

Удачи в ваших начинаниях :)
 

sTaRpLaY..

Участник
Сообщения
1
Реакции
0
помогите не могу настроить ств на сервере пишет
SourceTV not active.
maxplayers set to 11 (extra slot was added for SourceTV)
 

web

Участник
Сообщения
131
Реакции
6
Возможно ли сделать так чтобы указать ему время записи например мне нужно выстовить так чтобы он записывать по 30 мин каждую демку так как на сервере карта не меняеться и нет ограничений на время
 

MeXaHuK

Участник
Сообщения
24
Реакции
0
Как сделать чтобы SourceTV считался как игрок на сервере?
Когда один игрок на сервере, в поиске сервер отображается как пустой c включенным STV.
1285231592-12-23kb.jpg

1285230998-clip-2kb.png
 

Stas2la

Участник
Сообщения
3
Реакции
0
Народ! ПОМОГИТЕ!
Раньше на серве у меня работал соурс тв! Потом он куда то пропал! И все с концами! Что с ним стало не знаю! Пытался заного прописывать ,результат нулево! Помогите что делать? :(
 

Andrey

пишу код за еду
Сообщения
3,383
Реакции
3,994
  • Команда форума
  • #15
Stas2la, в шоу экстрасенсов обратись.
 

Punk

Участник
Сообщения
9
Реакции
0
Можно ли сделать, чтобы ств кидало автодемки в назначенную папку(напиример demo_stv)?
и как?
 

neatek

Участник
Сообщения
424
Реакции
225
можно) если линька с SSH, то сделать .sh скрипт и добавить его в крон.
 

Andrey

пишу код за еду
Сообщения
3,383
Реакции
3,994
  • Команда форума
  • #19
Оффтоп
 
Сверху Снизу