Меня зовут Лида Перовская, я работаю в Яндексе, а ещё с 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.
Будет интересно, болейте за наших!