100% винрейт: как мы выиграли Цифровой Прорыв и ушли без приза
В этом году в рамках проекта «Россия — страна возможностей» был запущен масштабный IT-конкурс по всей стране под названием Цифровой Прорыв. Конкурс очень активно рекламировался, так что по заявлениям организаторов собрал около 60 тысяч заявок.
Всего три этапа. Первый — онлайн-тестирование — весьма номинален, и на самом деле пройти его мог любой, кто хотел и выделил на это время. О качестве тестов и своих результатах я писал вот здесь.
Второй этап — региональный хакатон, о нём то я сегодня и расскажу.
Организация и подготовка
Хакатон идёт сразу в 40 городах России, поэтому участники, успешно закончившие тестирование, были приглашены к составлению команд в своём городе. На сайте проекта присутствовали инструменты сбора команды и поиска людей, однако эти инструменты не подходили для выполнения задачи даже на базовом уровне: нельзя было включать сложные фильтры в списках, вести какую-то удобную переписку с людьми, оценивать количество участников и распределение команд по трекам… Благо организаторы открыли официальный чат во ВКонтакте, отдельный для каждого города, где, собственно, происходило основное движение.
Стоит отметить, что для данного случая создание чата именно ВКонтакте — плохая идея по сравнению с созданием чата в Telegram. ВК новый участник чата не видит предыдущих сообщений и не имеет возможности прочитать, кто ищет команду или человека в команду. К тому же, поиск по сообщениям в чате по хэштегу ВК сделан существенно хуже, чем в Telegram. Скорее всего, администрация плохо знакома с функциональными возможностями современных мессенджеров и просто создала диалог там, где как бы все есть.
По правилам в команде должно было быть не меньше трех и не больше пяти участников.


У нас довольно быстро сложился состав, в котором мы с Гришей шли целенаправленно сразу и предложили присоединиться некоторым нашим знакомым и новым знакомым.
Я и Гриша — делали бэкенд на Python. Об этом опыте расскажу чуть ниже.
Лёша и Вова — делали фронтэнд на Vue.
Саша — делала нам дизайн, иконки и иллюстрации.
Подобралась команда очень сильных специалистов, которые, во-первых, достаточно универсальны, а во-вторых, владеют сразу несколькими навыками. И что ещё важно: мы все делаем вещественную работу, результат которой можно «осязать». Программисты пишут код, который можно запустить. Художник рисует изображение, которое можно увидеть. Код есть в виде файлов, изображения есть в виде файлов, всё это попадает в конечное произведение и подлежит демонстрации жюри. Всё это и есть продукт. При всём уважении к таким профессиям, как менеджер или, например, бизнес-консультант, на хакатоне очень мало времени, и поэтому каждый человек в команде должен выполнять вещественную работу. Создавать новое из ничего.
Треки
Первоначально было предложено 5 возможных направлений работы, в каждом по 2 задачи. Поскольку задачи достаточно разные, быстро догадались разделить этот список на 10 отдельных элементов по индивидуальным задачам. Каждой команде предлагалось расставить задачи в порядке убывания приоритета. Мы сначала нацелились на здравоохранение. Вообще, вверху списка оставили что-то более-менее понятное, с потенциальным простором для реализации. Вниз убрали невнятную фигню и какие-то вещи, которые уже давно реализованы (оплата транспорта телефоном, что?):
Но потом мы увидели, что претендентов на первый трек много, и поменяли первые два местами, гарантировав себе конкретную задачу и получив возможность хорошо подготовиться. В чате некоторые люди достаточно невнимательно отнеслись к способу выбора тем и просто поставили на первое место самую предпочтительную, а на остальные забили. И когда им досталась вторая-третья, начали возмущаться. Странные люди.
В общем, мы делали игру на тему освоения Арктики.
Хакатон
Всё дело происходило в пространстве «Точка кипения» недалеко от Петроградской. Весьма неплохое место: столы стояли очень свободно, в отличие от того, как это было на хакатоне ВК.
Но в выходные температура воздуха достигала почти 30 градусов, в помещении периодически заметно не хватало кондиционирования.
Организаторы обеспечили всем трёхразовое питание. Это хорошо, но на практике люди шли есть двумя группами, и к моменту прихода второй группы (в которой были и мы) в половине случаев часть еды уже заканчивалась. А безалкогольные напитки исчезли почти сразу в первый день. Было ощущение, что в пространстве сооружали комнаты для питания наспех, потому что не были предусмотрены таки такие очевидные вещи, как подносы. Довольно весело пытаться в одной паре рук нести тарелку с супом, скатан с морсом и тарелку со вторым.
Зато бесконечный кофе, чай, вода и печеньки. Кстати, сладкий крепкий кофе отлично заряжает энергией, когда хочется спать и в целом устал.
Создание проекта
Изначально мы думали, что наша задача об Арктике исходит из интересов государства по нефтедобыче, поэтому запланировали стратегию о строительстве буровых платформ. Как я сказал выше, была возможность тщательно продумать игровую механику до хакатона, обсудить с командой, набросать схемы на бумаге.
Но потом организаторы по моей просьбе дали мне поговорить по телефону с тем, кто эту задачу формулировал — это оказался сотрудник Росатома. Он изложил своё видение целей и допустимые по его мнению границы реализации. Это была критически ценная консультация, которая сильно перевернула наш рабочий процесс. Считаю это упущением организаторов. Много раз говорилось, что на площадке будут эксперты по каждому треку, но это оказалось неправдой. Экспертов по Арктике там не было, подробности о задаче мы узнали только из-за моего запроса на разговор по телефону с человеком из другого города.
Начало работы было в 11 утра в субботу, а конец в 16 в воскресенье. Чистого времени 29 часов (хотя организаторы активно заявляли про 36 часов, но это не совсем так). Минус около полутора часов суммарно на все приемы пищи. К тому же, я твёрдо решил на этот раз обязательно поспать, и решение было правильным. Снял хостел неподалёку и прилёг там на 3 часа.
В итоге мы переделали концепцию. Компьютер симулировал движение ледоколов. Игроку предстояло отдавать им команды на коррекцию курса, чтобы оптимально приводить к точкам на карте, представляющим разные задания.
Лёд разной толщины даёт разную скорость, поэтому просто идти напрямую зачастую неэффективно. Помимо движения, игрок должен продумывать экономику. Много точек на карте требуют флота из нескольких ледоколов. Построить новый можно за деньги, но сначала для этого нужно исследовать технологии. Тут как раз проявляется образовательная составляющая игры.
Флот позволяет вовремя дойти до нужных точек с заданиями. У каждого задания есть таймер обратного отсчёта, если он закончится, задание считается проваленным. Три провала приводят к поражению в игре.


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


Если вдруг сервер не лежит, можете посмотреть сами: https://icebreak.tech
Играть нужно в горизонтальной ориентации или с компа. Чтобы убрать на телефонах адресную строку, установите игру на рабочий стол с помощью соответствующей функции браузера (это PWA).
- Исследуйте технологию спутника чтобы давать кораблям команды на изменение направления. Подача команд включается нажатием кнопки со спутником.
- Исследовать в каждый момент можно только одну технологию.
- Корабли нужно приводить к точкам на карте, вокруг которых цветной кружок таймера. Если таймер кончится, задание провалено. Три провала проигрыш. За успешные точки дают деньги.
- Для исследования технологий нужен уровень науки, он повышается нажатием на кнопку слева от спутника, при этом расходуются деньги.
- По льду корабли идут медленнее, чем по воде.
Презентация
Самое главное — мы совсем не успели сделать презентацию. Буквально два слайда с общей информацией.
Зато успели записать видео с экрана телефона, на нём то я всё и демонстрировал. Ну и показал жюри версию игры на самом телефоне.
Нашу задачу, как и, вероятно, некоторые другие, презентовали изолированно. То есть мы видели работы только тех, кто делал такую же игру. Тут есть одна незначительная и одна серьёзная проблема организации.
Незначительная проблема в том, что хотелось бы увидеть и другие работы на другие темы. Но куда хуже то, что в главном зале присутствовали представители сторонних компаний, которые отмечали особым образом некоторые команды, презентовавшиеся в том же зале. Получается, у нашей команды в принципе не было шанса быть замеченной в дополнительной категории просто потому, что мы выбрали такую тему. А, значит, темы отличаются по ценности, о чём не было объявлено.
Победа
Как я уже сказал, презентовались мы сильно хуже, чем могли бы. У игры отличная графика, анимации, много возможностей, завершённый геймплей, готовые условия конца игры, как победы так и проигрыша, есть внутриигровая экономика и прогресс игрока.
Некоторые команды, например, презентовали только пару уровней, и в середине игра обрывалась. Другие в игровом процессе показали только какое-то одно игромеханическое действие. Кто-то напрямую признал, что не успел сделать. Интересно, что некоторые старались уделить внимание монетизации, и такой вопрос даже задали жюри, хотя монетизация в игре без тщательно проработанного и протестированного UX может быть лишь в самых общих чертах и говорить о ней в подобной ситуации примерно то же самое, будто на школьном прослушивании рассказывать, как ты собираешься организовать себе концерт на стадионе в 40 000 мест. С другой стороны, плох тот солдат…
В каждой теме выбрали 3 команды, по нашей мы вошли в их число, и лично для меня это не было неожиданно.
Вообще, чисто субъективно организаторам НЕ удалось создать атмосферу, при которой участники приходили бы в неистовый экстаз, выходя на сцену, как было, например, на ВК. Там все орали и неподдельно радовались, даже после сильной усталости. Здесь выходили несколько вяло, шума почти не было, люди даже испытывали неловкость в какой-то мере.
Да, это региональный хакатон, в нём нет призов, о чём было объявлено сразу. Призом тут является выход в финал. Но организаторам реально стоило вручить победителям хотя бы что-то символическое, помимо диплома. На ВК всем без исключения давали сумки с мерчем: там был плед, ручка, блокнот, собственно сама сумка. Здесь выдали наклейки на регистрации и всё. Я уверен, процесс награждения можно было обставить как-то более пафосно и воодушевляюще, даже без особых затрат.
Заключение
Даже несмотря на всю критику, хочу отметить, что организация на общем уровне весьма неплохая. Есть ошибки, но глобально это очевидно серьёзный хакатон с подобающей атмосферой, значительным количеством участников, серьёзным отношением к происходящему. В городе порядком хакатонов, где народ сгоняют в тесную комнату со школьными партами, страница мероприятия в лучшем случае сделана на таймпаде кое-как, а организаторы не отвечают напрямую на многие вопросы, потому что не хотят пугать народ. Здесь же уровень очень высокий, и это заметно. Мы с большим удовольствием приняли участие, получили кайф от работы и результата, с радостью пойдём на финал.
Мы с Гришей дополнительно поставили цель изучить какую-то новую технологию, поэтому делали всё на Python, с которым до этого мало сталкивались. Это, конечно, вызывало много ошибок и задержек, усложняло отладку, но в целом оказалось очень полезно. На ВК я почти силой заставил себя делать фронтэнд и весьма значительно прокачал свои навыки, перестал бояться Webpack и прочих новомодных вещей.
Здесь же я решил изучить новый для себя язык, до которого никак не доходили руки. И в целом это получилось, хотя в Питоне по итогу я разочарован, но об этом напишу как-нибудь в другой раз.
В общем, хакатоны это круто, призываю всех участвовать! А мы посмотрим, что будет в конце сентября на финале. Обещают другие задачи и около тысячи участников.
