Меня зовут Лида Перовская, я работаю в Яндексе, а ещё с 2015 года помогаю организовывать прямой эфир International Collegiate Programming Contest. ICPC — студенческий чемпионат мира по программированию — проводится ежегодно с 1970-х. Это чуть ли не единственная олимпиада подобного уровня, которое развивается благодаря усилиям сотен волонтёров со всего мира. Сегодня я расскажу читателям Хабра о том, как устроена моя работа на ICPC изнутри. А ещё приглашаю посмотреть трансляцию мероприятия и попробовать собственные силы в решении задачек одновременно с участниками.

Для нас — волонтёров — важно, чтобы мероприятие было интересным и полезным и для участников, и для зрителей. Но сделать это непросто. На один только финал заявлено 135 команд из 110 стран, в каждой команде по три человека, и все они участвуют одновременно! Кого, когда и как пускать в эфир? Какой код показывать? Как комментировать, чтобы это было полезно?

Начнём с условий задачи.

Итак, в огромном зале несколько сотен человек локально пишут код и отправляют его на сервер для проверки, результат которой определяет их позицию в итоговой таблице. Тут всё знакомо любому участнику контестов. А в нашем штабе — режиссёрской студии — всего пять-шесть волонтёров определяют, что именно сейчас увидят зрители трансляции.

В олимпиаде участвуют не алгоритмы и даже не университеты, а люди. Финал — это их звёздный час. По правилам олимпиады один и тот же человек не может пройти в финал более двух раз. Поэтому важно показывать прежде всего людей: их эмоции, командную работу. Для этого над участниками висят стационарные камеры AXIS V5915.



Можно наводить камеры то на одну, то на другую команду. Раньше нам приходилось управлять камерами вручную. В этом году мы написали софт, который знает координаты каждой команды и может «навестись» на неё автоматически, если команда сделала что-то интересное. Robots take our jobs.

Но стационарные камеры не могут охватить всё, что нам нужно. Помогает мобильная группа: три-четыре человека, которые готовы в любой момент подойти к участникам. Такая съёмка выглядит более естественно.

Оборудование для мобильных групп готовят опять же волонтёры. Мы используем то, что уже есть на рынке, комбинируем и допиливаем его собственными силами. Наш мобильный комплект этого года выглядит так:



В 2015 году картинку «с площадки» мы получали с обычных профессиональных видеокамер, подключённых по проводу, который приходилось тянуть за собой. Позже перешли на беспроводную связь. А в этом году мы поменяли камеры GoPro на версии с гиростабилизацией, поэтому картинка даже с такой компактной установки выглядит гладко и профессионально.

К «живому» видео добавляем интервью с командами. Интервью записываются заранее и подмешиваются в трансляцию по расписанию, которое через самодельный плагин для OBS автоматически включает ролик. Расписание по ходу трансляции может меняться.

С видео стало чуть понятнее. Но у нас же олимпиада по программированию, а значит, нужно показывать задачи и код, который пишут участники. Причём так, чтобы это было интересно.

С технической стороны тут всё просто. Сложность в организации: как решить, кого и когда показывать?



К счастью, у нас есть аналитики. Специальная команда отслеживает прогресс участников, находит наиболее интересные решения и передаёт их в режиссёрскую студию. Благодаря регулярным бекапам аналитики видят весь код: и уже отправленный на проверку, и ещё не отправленный. Кроме того, они умеют «предсказывать» наиболее интересные события. Например, если решение команды может вывести её в лидеры, то стоит передать сигнал ответственным за видео, чтобы не пропустить эмоции участников при появлении результатов. Небольшое изменение в коде позволило команде исправить ошибку и успешно сдать задачу? Срочно в номер! Соперники борются за победу и счёт идёт на секунды? Покажем их противостояние крупным планом, чтобы увидеть, чем они заняты. Всё это делает трансляцию более динамичной и интересной.

А ещё аналитики помогают с разбором задач.



Не стоит забывать и о комментаторах. Без них прямой эфир не так интересен, а зрителям сложно разобраться в происходящем. У нас в команде десять комментаторов: по два человека на русскую, английскую, китайскую, португальскую и арабскую версии. Они в реальном времени получают информацию от аналитиков, чтобы привлекать внимание зрителей к интересным событиям.

Контент от мобильной группы, аналитиков, комментаторов и прочих источников стекается в режиссёрскую студию, где мы управляем эфиром «на лету». Это сложно, но безумно интересно.



В этом году мы будем транслировать ICPC в Яндекс.Эфире, на YouTube и Twitch, во ВКонтакте и на некоторые другие площадки. А что вы хотели бы увидеть в трансляции? Кто, как вам кажется, стал бы идеальным комментатором для соревнований по программированию?

Кстати, напомним, что любой зритель может неформально поучаствовать в олимпиаде. Все задачи будут доступны на официальном сайте icpc.global. Отправьте решения на сервер для проверки, и, может быть, вы обгоните финалистов ICPC-2019.

Будет интересно, болейте за наших!

Комментарии (12)


  1. McKinseyBA
    03.04.2019 17:10
    -1

    Пару раз смотрел, теперь знаю кому сказать спасибо.

    ИМХО: распределение мест в финале ICPC по странам — неплохой критерий сравнения качества образовательной системы стран.


    1. captain_obvious
      03.04.2019 17:46
      +1

      Разве что внутри одного суперрегиона (или даже региона), и то с натяжкой.


      1. McKinseyBA
        03.04.2019 18:28

        несколько раз перечитал, прежде чем понять :-)

        конкретизирую — распределение призовых мест в финале ICPC по странам

        Таблица Years, хотя там только 1-е места


    1. pyrk2142
      03.04.2019 21:12

      Не совсем согласен. ИМХО, распределение мест немного показывает отношение уровней конкретных коллективов людей, занимающихся командным спортивным программированием в определённых универах. Близко знаком с одним универом, который прославился благодаря ICPC. Олимпиадники и их кафедра весьма хороши (есть некоторые огрехи и грехи, но где их нет), а остальной универ — очень сомнительное место. Дебилы-студенты (не все), дебилы-преподы (не все), странные программы, низкий уровень материалов, организационной деятельности и преподавания, законно реализованные взятки — добро пожаловать в универ с лучшим уровнем образования, если оценивать по ICPC.


  1. mikhaelkh
    03.04.2019 18:04

    А ещё приглашаю посмотреть трансляцию мероприятия (4-го апреля в 12:00 по московскому времени)

    Здесь написано, что начало в 11, надо полагать по португальскому времени, UTC+1. У Москвы UTC+3, начало в 13. Или трансляция начнётся за час до начала мероприятия?


    1. lperovskaya Автор
      03.04.2019 18:18

      Трансляция действительно начнется до старта соревнования


  1. PaulKhuzhin
    03.04.2019 18:18

    Пашу Маврина в комментаторы)
    Удачи всем завтра!



  1. Aracon
    04.04.2019 01:35

    Можно подробнее про самописный плагин, что он делает, по какому алгоритму? Включает видео просто по заданному расписанию, или как-то учитывает текущую ситуацию на турнире?


    1. lperovskaya Автор
      04.04.2019 09:52
      +1

      Шедулер видео на ситуацию в таблице результатов не смотрит, но позволяет запланировать видео на определенное время, перенести его через простой веб-интерфейс, импортировать/экспортировать план видео, напоминает, какие ролики уже показывали в трансляции, а какие нет. Но главное, он корректно отключает звук остальных входов в obs в момент начала ролика и включает их обратно, когда видео закончилось.


      1. Aracon
        04.04.2019 10:05

        Случаем нет планов выложить для общего доступа на сайте OBS?


  1. pyrk2142
    06.04.2019 07:33

    Для начала хотел бы поблагодарить за то, что вы транслируете это довольно интересное событие. Посмотрел половину трансляции (на большее не хватило времени), но хочется досмотреть вторую часть, для меня это хороший знак.

    Скорее всего, скоро мы увидим очередные вопросы от небезызвестных громких личностей о том, почему ICPC не настолько популярен, как различные виды спорта и киберспорт. Ниже — немного мыслей и комментариев о трансляции и том, почему она не очень интересна массовому зрителю:
    * Качество картинки и передачи — вещи технические, с этим можно пытаться что-то сделать, тут особых тонкостей нет.
    * Ведущие и звук — то же самое, микрофоны и громкость можно пытаться адекватно настроить заранее, а вот ситуаций, когда один из ведущих жалуется на идиотские эвакуации из-за учений и какое-то время говорит на ходу, имхо, быть не должно: избегайте их, либо выводите этого ведущего из трансляции на это время.
    * Вставка видео: имхо, ситуация с ними на грани фейла. Видео хороши, когда они помогают вести трансляцию, рассказывать о чем-то, менять контент, но не тогда, когда они автоматически включаются и прерывают ведущих чуть ли не в самых интересных моментах финала.
    * «Какие-то команды из гиков решают какие-то задачи». Каждая команда индивидуальная (в это я верю), каждая задача интересна (на это я надеюсь). Но за первые два часа трансляции я узнал о Moscow Workshops больше, чем за всю остальную жизнь, но почти ничего о задачах — только оценочное распределение сложности. Ни общего описания задач, ни примеров того, что могут решать участники, ни объяснения идейных задач и того, с час столкнутся участники. Понятно, что существует режим секретности задач, но без этого трансляция не очень интересна ни тем, кто увидал это чудо в первый раз, ни тем, кто хочет узнать детали интересных задач.