Чемпионат «лучший по профессии»

Этот август определённо идёт крайне медленно и напряжённо. То дом поищи, то ИО проректора побудь… Но если поиск дома идёт в нерабочее время, а быть ИО в этот раз не занимало ну СЛИШКОМ много времени (так, заставляло чаще очно бывать в вузе, хотя я стараюсь работать из дома), то основная работа, а в особенности поддержка/сопровождение приёмной кампании 2020 отнимал довольно-таки много времени. Всё-таки процесс приёмки изменился под влиянием обстоятельств этого года и приходилось вносить изменения разной степени тяжести.

К чему это я? Да к тому, что дел было и так довольно много, но настал тот момент, когда хочешь или нет, но нужно было начинать подготовку к чемпионату «лучший по профессии». Что это вообще такое? Ну… я особо и не знаю. Честно говоря, я не следил, откуда росли ноги, но знаю, что ко мне пришли с задачей технического обеспечения всего этого дела из Департамента труда и занятости населения Томской области.

О чём вообще речь?

Чем итого я занимался? Ну… Моей задачей было придумать как максимально просто всё это безобразие провести в дистанте, ну а потом уже организовать и провести. Я решил не придумывать что-то сложное, благо участников планировалось не очень-то и много, около 10-15 со всех регионов. Плюс у нас был региональный этап, на котором всё можно было обкатать, а потом уже что-то придумывать, как исправляться, если вдруг что-то не понравится.

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

Региональный этап

Так уж вышло, что на региональном уровне окончательно участвовать решило всего два человека. Вроде как-то соревнование без соревнований выходит, но… Для того, кто пройдёт дальше это отличный шанс набить руку малой ценой. Так, в принципе и вышло, из двух участников победил тот, кого участвовать отправил я, от лица компании КРЕО-СОФТ.

Стоп-стоп-стоп! Ты что, был организатором и от тебя принимал участие твой сотрудник? Не читерство ли это!?

Абстрактный читатель

Да, всё так, однако я изначально встал в такую позицию, которая позже не позволит остальным участникам или внешним наблюдателям обвинить меня в чём-то. Как я этого добился? Ну…

Концепция организации

Всё, на самом деле было довольно просто.

  1. Каждому участнику был создан аккаунт на твиче. Создавал этот аккаунт я. Почему я? Чтобы это был отдельный аккаунт, которым не может управлять участник. А именно, разблокировать чат, или ещё хуже – отключить запись трансляции. Запись тут играет ключевую роль, ведь всё, что делал участник можно будет просмотреть сколь угодно раз и подать жалобу.
  2. Я подключался к каждому участнику и настраивал OBS, как я уже писал выше.
  3. Каждому участнику был выдан хостинг, а точнее учётная запись на нём. Выдано всё было за 3 дня до чемпионата, чтобы все всё проверили, сообщили о проблемах, если они есть и мы всё вовремя порешали.
  4. За каждым участником наблюдали специальные люди. Эти наблюдали фиксировали спорные моменты, делали замечания участникам, а также вели запись их стримов «на всякий случай».
  5. Общение было организовано через SLAСK. Почему он? Всё просто – это бесплатный мессенджер, к которому просто так не присоединиться и доступ в который легко регулировать. В таком случае мы могли спокойно общаться не боясь того, что кто-то будет по этому каналу связи подсказывать участникам или отвлекать их.
  6. Я не знал, какое будет задание в теоретической и практических частях до момента их выдачи. То есть мне просто скидывали ссылку на гуглоформу, которую я выдавал участникам, либо архив с ТЗ и материалами для практики, который я размещал на сервере уже в день чемпионата.

Из принципиальных вопросов по проведению самого чемпионата я уже всё затронул.

Примерно так выглядел стрим участника с одним монитором. Используя данные с камеры и рабочего стола можно было зафиксировать нарушения и спорные моменты, а также выход в интернет, который был запрещён по условиям данного чемпионата.

Проведение

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

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

Я очень долго копал в сторону использования VLC для этой задачи, ведь он отлично умеет открывать видео стрима по ссылке с твича. Однако автоматическое переключение было проблемным. Хотя я и смог накостылять плейлист из нескольких твич-трансляций, которые переключались друг за другом… я не смог решить вопрос, связанный с тем, что видео, которое не воспроизводится просто останавливалось, а значит при переключении на него был виден интерфейс VLC, а также загрузка. Это ломало весь эффект, вынуждало меня начать поиск совершенно нового решения, а также морально меня уничтожало.

Потратив ещё какое-то время на рытьё в гугле (уже немного отчаянное) я смог додуматься вот до такого:

  1. Подключаем к OBS компонент VLC-плеера (не трансляция окна, а отдельный источник VLC).
  2. Устанавливаем у него в настройках цикличное воспроизведение (на всякий), источником указываем ссылку на трансляцию, а также запрещаем прерывание воспроизведения, даже если видео перестало быть активным (сменилась сцена или слой был скрыт).
  3. Подключаем скрипт к OBS, который по таймеру делает источник видимым и снова невидимым.
  4. Добавляем для каждого участника свой VLC-компонент и устанавливаем ему правила по появлению и исчезновению.
  5. Стартуем скрипты и молимся…
  6. PROFIT.

На самом деле, результат выше довольно неплохим, хотя и не идеальным. Для того, чтобы всё смотрелось неплохо пришлось добавить подложку с «загрузкой», на случай, если какое-то видео не прогрузится, отвалится, или тайминги собьются.

Посмотреть, как это выглядело (на федеральном этапе) можно вот тут.

В остальном, всё было уже тривиально технически, но волнительно. Я просто заготовил порядка 5-6 сцен в OBS (увы, не догадался сделать снимок экрана этого нагромождения всякого) и просто переключался по ходу дела.

Итог

Итог регионального этапа был для меня очевиден заранее – победил Денис, мой участник. Почему я был практически полностью уверен в его победе? Ну… Чемпионат и по формату и по заданию был невероятно близок к WorldSkills, а Денис участвовал в соревнованиях такого типа более 4 раз (отборочные и финалы), везде победил. Так что для него это была очень и очень знакомая среда, чего не скажешь об оппонентах. Ну а кроме того, он просто хороший программист с приличным опытом, мы занимались с ним веб-разработкой с… его 7го класса, мне кажется.

Федеральный этап

Чисто технически федеральный этап не отличался от регионального. Разница была лишь в том, что участников было заявлено 12, а спикеры для живого включения были как из департамента труда и занятости населения томской области, так и из ещё 3-х подобных структур федерального уровня. Ух, ставки повышались, задница начинала потеть.

Также я сильно переживал, потянет ли моя сеть 12 входящих стримов и 1 исходящий, все из которых были в FullHD. Причина моего переживания крылась не в панике или излишнем стрессе, а в том, что мой ПК время от времени любил терять сеть (проводное подключение) при сильной нагрузке. Дело в софте или в харде я не знаю до сих пор, но это старая тема, ей уже несколько лет. Поэтому был повод переживать.

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

В процессе подготовки возникали различные проблемы, такие как:

  1. Многие участники очень поздно начинали тестировать сервер или настраивать со мной свои ПК и камеры для предстоящих трансляций.
  2. Один герой настоял на использовании Python 3, который по правилам был разрешён… С ним было много возни, пришлось делать для него отдельный сервер… который он запорол утром до соревнований, так что чисто для него в срочном порядке моим дорогим ассистентом и мастером на все руки Александром поднималась ВПСка с убунту, настроенная на то, чтобы писать на питоне с использованием Джанго.
  3. Было много людей, кто формально вообще не проходил на конкурс… по причине несоотвествия по ПО или ТТХ их ПК. Примеры: использование Windows 7, когда в условиях было чётко прописано «WINDOWS 10». Также были красавцы с Ubuntu и MacOS. Немного почесав репу я подумал, что пусть пишут, при условии, что остальное ПО будет использоваться из белого списка. В конце-концов ПРИНЦИПИАЛЬНО разницы тут нет. Ну а те, у кого были дроволёты, которые еле тянули стрим… их право. Уж преимущество им это не давало, а раз они хотят попробовать писать на ПК, который чуть моложе меня… Пускай.
  4. Несколько раз менялся сценарий выступления важных лиц, а также задерживались материалы до крайних дедлайнов. Например одну из сцен я доделывал уже прямо на трансляции, ух, экстрим.

Но в целом, всё шло своим чередом. Так вышло, что к крайнему дедлайну 22:00 МСК за день ДО чемпионата два участника так и не вышли со мной на связь. Итог – в лес судари, в лес!

Во время чемпионата также были выбывшие:

  • Первый выбывший решил уйти с чемпионата сразу после того, как прочёл задание. С фразой «я так не работал» он благородно ушёл в закат. Его право.
  • Вторая дама (преподаватель откуда-то) видимо была силой отправлена на чемпионат и вяло что-то тыкала в процессе, это видно по стриму. Она отсидела часа полтора-два из пяти и также ушла в закат.
  • Ещё один участник ушёл где-то после 4-х часов, с мотивацией «я сделал всё, на что был способен».

Так что, по факту у нас была ситуация Томск vs 6 остальных. Нормальные такие шансы, особенно если вспомнить про то, о чём я писал – опыт Дениса в подобных игрищах.

Итог

Собственно говоря, я так и не знал, чем всё кончится наверняка вплоть до закрытия – результаты мне никто не сообщал. Церемонию закрытия можно глянуть тут. И опять я был дирижёром за сценой, направлял и чинил всё, что нужно. Определённые косяки на прямом включении были, однако я считаю их виной участников созвона, всё же проверить свои камеры заранее стоило не мне, хотя я был готов на тестовый созвон, но… Вышло, что вышло.

К слову, мне приходилось то и дело выключать выходные аудиоканалы (микрофон и звуки ПК), чтобы сообщить выступающим, что уже ИХ ОЧЕРЕДЬ ГОВОРИТЬ, или что «НЕ МОЛЧИТЕ!» и т.д. Хорошо, что удалось избежать попадания моих комментариев в эфир. Так что с ролью оператора за пультом я справился на твёрдую 4, как мне кажется.

В любом случае, итог оказался чудесным, Томск в лице Дениса взял золото (а вместе с ним и гору денег), я смог выдохнуть и даже получил 2 спасибо на церемонии закрытия (ура!), значит всё это было не зря.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *