Source TV

Тема в разделе "Статьи и мануалы", создана пользователем Andrey, 26 апр 2009.

  1. Andrey

    Andrey Администратор

    Сообщения:
    3.234
    Симпатии:
    3.509
    Source TV

    [​IMG]

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

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

    Для просмотра матча через SourceTV откройте Steam, выберите раздел Servers для того, чтобы открыть браузер серверов. Выберите раздел Spectate, чтобы увидеть список доступных SourceTV серверов. Вы можете изменить критерии поиска серверов через Change filters. Подключиться к серверу можно кликнув по нему в списке серверов два раза мышкой.
    Часто игровые лиги и чемпионаты заранее публикуют IP (вида IP:Port) адреса SourceTV, по этому вы всегда можете добавить адрес в закладку Favorites вместо того, чтобы искать его через поиск. Можно также подключиться к SourceTV используя консоль игры
    Код:
    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.

    [​IMG]

    Подобная конфигурация удобна для маленьких матчей с малым количеством зрителей. Вся информация о зрителях и игроках обрабатывается игровым сервером. Большое количество зрителей тут же потребует большой нагрузки на процессор и пропускную способность канала. Следовательно логичным было бы решить проблему расхода мощности процессора и трафика распределив их между различными вспомогательными серверами, число которых можно увеличивать с растущим объемом зрителей. Этот способ осуществим подключением вспомогательных SourceTV к главному SourceTV транслятору, которые и будут выполнять роль распределителей зрителей. Такие сервера называются SourceTV прокси сервера, и каждый Прокси сервер может обрабатывать одновременно до 255 человек. Естественно сами Прокси сервера также могут подключаться к таким же прокси серверам и образовывать тем самым неограниченную сеть SourceTV серверов, транслирующую одну игру.
    [​IMG]
    Чтобы настроить прокси сервер SourceTV необходимо запустить выделенный сервер Source с параметром tv_relay с указанием IP адреса другого SourceTV сервера.
    Код:
    srcds.exe -game cstrike -console +tv_relay 127.0.0.2:27020 
    Статус локального SourceTV всегда можно посмотреть командой tv_status. Вот пример ответа на эту команду:
    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:
    Код:
    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 на сервере.

    Код:
    srcds.exe ... -nohltv
    или
    Код:
    srcds.exe ... -tvdisable 
    Команда ниже запрещает использовать SourceTV как передатчик информации на прокси сервера:
    Код:
    srcds.exe ... -tvmasteronly
    Источник: srcds.ru
     
    666FoX666, hook007, Slavik))))) и 3 другим нравится это.
  2. qwestfx

    qwestfx

    Сообщения:
    111
    Симпатии:
    23
    Как сделать чтобы SourceTV считался как игрок на сервере?
    Когда один игрок на сервере, в поиске сервер отображается как пустой c включенным STV.
    [​IMG]
    [​IMG]
     
  3. rJIa3

    rJIa3

    Сообщения:
    169
    Симпатии:
    171
    // 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"
     
  4. Xoxol_1987

    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"
     
  5. kv.acid

    kv.acid Супер-модератор

    Сообщения:
    2.033
    Симпатии:
    767
    Это как так у тебя получилось?
     
  6. motte

    motte

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

    Andrey Администратор

    Сообщения:
    3.234
    Симпатии:
    3.509
    motte, такое не возможно базовыми средствами SRCDS (можно только через плагины, например warmod, но сохраняться будет только демка cw). Можно написать скрипт который будет искать в папке cstrike файлы с расширением .dem и копировать их в папку ftp (я бы так и сделал в твоем случае).
     
  8. Osimus

    Osimus

    Сообщения:
    51
    Симпатии:
    6
    Всем привет!

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

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

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

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

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

    Andrey Администратор

    Сообщения:
    3.234
    Симпатии:
    3.509
    Osimus, читай выше.
     
  10. Budun

    Budun

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

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

    Код:
    # импортируем нужные модули и функции
    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-сервере можно изменять и дополнять до бесконечности, их возможности безграничны)

    Удачи в ваших начинаниях :)
     
    Tox1c, NagarD, rJIa3 и ещё 1-му нравится это.
  11. sTaRpLaY..

    sTaRpLaY..

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

    web

    Сообщения:
    132
    Симпатии:
    6
    Возможно ли сделать так чтобы указать ему время записи например мне нужно выстовить так чтобы он записывать по 30 мин каждую демку так как на сервере карта не меняеться и нет ограничений на время
     
  13. MeXaHuK

    MeXaHuK

    Сообщения:
    24
    Симпатии:
    0
    Как сделать чтобы SourceTV считался как игрок на сервере?
    Когда один игрок на сервере, в поиске сервер отображается как пустой c включенным STV.
    [​IMG]
    [​IMG]
     
  14. Stas2la

    Stas2la

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

    Andrey Администратор

    Сообщения:
    3.234
    Симпатии:
    3.509
    Stas2la, в шоу экстрасенсов обратись.
     
  16. Punk

    Punk

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

    Fab3r

    Сообщения:
    1.516
    Симпатии:
    367
    Нет.
     
  18. neatek

    neatek

    Сообщения:
    442
    Симпатии:
    233
    можно) если линька с SSH, то сделать .sh скрипт и добавить его в крон.
     
    djoker нравится это.
  19. Andrey

    Andrey Администратор

    Сообщения:
    3.234
    Симпатии:
    3.509
    Оффтоп
     
  20. eXstyle

    eXstyle

    Сообщения:
    1
    Симпатии:
    0
    А это куда подключать то?
     
    Последнее редактирование модератором: 24 ноя 2011