Как я в хакатоне «Синеус» победил: игра про азартных дуэлянтов

Как я в хакатоне «Синеус» победил: игра про азартных дуэлянтов

Привет! Меня зовут Михаил Ефремов, и я занимаюсь разработкой игр — сначала учился самостоятельно, а потом прошел курс «Разработчик игр на Unreal Engine c нуля до Middle» в Skillbox. Мне всегда хотелось попробовать свои силы в хакатонах, и в сентябре этого года я принял участие в вологодском «Синеусе». В этой статье расскажу о том, как все устроено изнутри, о своем проекте игры про дуэлянтов из будущего и о нюансах работы над ним. Надеюсь, что материал пригодится тем, кто пока боится участвовать в хакатонах и хочет разобраться, как это проходит.

Что это за хакатон?

С 21 по 24 сентября прошел пока что первый и единственный в своем роде для Вологды Game Dev Хакатон. Проводился он для гейм-дизайнеров, 3D-моделлеров и, конечно, разработчиков. Хакатон собрал на одной площадке работодателей, инвесторов, экспертов геймдева, стартаперов, разработчиков и создателей игр.

Кратко о «Синеусе» (описание взял с сайта хакатона):

  • 250 участников со всей страны;
  • 3 дня настоящей синергии лучших умов игровой индустрии;
  • возможность найти сотрудников, команды и проекты для инвестиций;
  • внимание всего игрового сообщества страны;
  • выступления представителей геймдева и спикеров;
  • экскурсии по историческим местам, удивительная природа Вологодской области и просто хороший отдых.

Организация мероприятия была отличной, у меня нареканий нет. Всем участникам предоставили необходимые вещи, включая дополнительные мониторы, Wi-Fi-адаптеры. Даже ноутбук выдали самой неподготовленной команде — она пришла без техники. Ну а чтобы мы не проголодались, обеспечили и горячее питание.

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

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

День 0

Началось все с регистрации. Участвовать хотел онлайн, но по ошибке зарегистрировался в офлайн. К сожалению, после этого решение изменить было нельзя.

К слову, я довольно часто принимал участие в онлайн-хакатонах, а вот «настоящий живой» хакатон видел только на картинках в интернете. Кстати, вот и от меня фотография.

Как я в хакатоне «Синеус» победил: игра про азартных дуэлянтов

Решив, что смешанные команды запрещены, а на грамотный подбор среди анкет офлайн-одиночек уже нет времени, я даже не стал никого звать в команду и решил ехать один. Мысль была простая: «Схожу на людей посмотреть, а себя покажу уже в следующий раз».

Для себя определился, что буду работать на Unreal Engine 4.27 и ассетах от Synty Studios «POLYGON». Они являются чисто визуальными, использование таких ассетов разрешено в большинстве случаев. У них богатая линейка различных сеттингов, так что в зависимости от темы хакатона я мог выбрать стилистику под себя и тему.

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

Кроме того, с самого начала я планировал сделать лидерборд для соревнования игроков между собой; оставалось определиться, в чем игроки будут соревноваться.

День 1

Немного о проблемах

Пока все раскладывали компьютеры, выяснилось, что интернет доступен только по Wi-Fi, адаптеров при этом у некоторых участников не было. Их спасли организаторы, закупившие все необходимое в течение получаса.

До поры до времени я относился к хакатону как к развлечению, но необходимость питчить и участвовать в активностях взбодрили меня, и я почувствовал ответственность. Что за игру я делал?

Как все начиналось

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

Как я в хакатоне «Синеус» победил: игра про азартных дуэлянтов

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

Как я в хакатоне «Синеус» победил: игра про азартных дуэлянтов

Раздумывая, какое окружение из POLYGON-ассетов выбрать, я остановился на пиратах и ковбоях. В вестернах в дуэлях оппоненты не сходят с места, это позволит не делать врагу сложный ИИ.

Как я в хакатоне «Синеус» победил: игра про азартных дуэлянтов

До хакатона у меня был небольшой опыт работы с отстрелом конечностей у игровых человечков. Его я тоже решил применить в этой игре. Неожиданное поведение игровой физики порождало множество забавных ситуаций. А милая графика снижала градус игрового насилия до минимума.

Формирование игровой концепции

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

Как я в хакатоне «Синеус» победил: игра про азартных дуэлянтов

Должен быть рейтинг, чтобы был соревновательный момент. Я решил начислять очки за попадание по врагу. Онлайн-лидерборд с демонстрацией рейтинга игроков я решил взять от LootLocker. Просто потому, что у него простой API для подключения. Таблицы лидеров — отличная идея для маленьких игр, чтобы заставить игроков соревноваться между собой и проводить в игре больше времени. После того как я реализовал все эти идеи, посмотрел на то, что получилось. А это уже было похоже на игру, оставалось сделать таблицу лидеров — и можно соревноваться, кто отстрелит боту больше конечностей.

Снова сложности

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

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

День 2

Планомерное развитие

Я постепенно развивал проект, навешивал ассеты, подбирал мелодии для карт и к 16 часам уже примерно представлял, как игра должна выглядеть. После этого работа закипела еще активнее. Мне удалось закончить геймплей и сделать тренировочную карту. Подумал, что вполне успеваю до конца хакатона. Даже придумал небольшие дополнительные активности для уровней. После этого надолго пропал в коде С++, переписывая систему сохранения рекордов под сохранение прокачки.

<p><i>Первая версия меню</i></p>

Первая версия меню

Все получается!

Мне удалось успеть к дедлайну. Игра работала, но вот буквально изо всех щелей сквозила незавершенность. Оказалось, что со сходной ситуацией столкнулись и другие команды — финальный дедлайн продлили еще на 11 часов. Я был очень рад дополнительному времени, которое потратил на полировку своего проекта.

В частности, генерировал в нейросети фразы для комментатора, добавлял разнообразие в дуэли, фиксил баги. Сделал так, что случайным образом выбирались дополнительные условия вроде шатания прицела, смены дистанции дуэли, дуэль с подходом.

Вот так незаметно я приблизился к 10 часам утра. В это время я был благодарен себе «из вчерашнего дня» за то, что делал промежуточные билды и использовал очень простые кодовые решения. Залил проект в форму сдачи работ и пошел спать. Сил уже не было, даже голова начинала кружиться.

Описание игры

Как я в хакатоне «Синеус» победил: игра про азартных дуэлянтов

Игру назвал «Дуэлянт 2077». Для прохождения достаточно только мышки.

Как я в хакатоне «Синеус» победил: игра про азартных дуэлянтов
Как я в хакатоне «Синеус» победил: игра про азартных дуэлянтов
Как я в хакатоне «Синеус» победил: игра про азартных дуэлянтов

День 3

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

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

Я знал, что игра вышла годной, пока отлавливал баги, сам немного залипал в нее, но все равно переживал. Вот, кстати, демонстрация: вырезал кусочек с моим питчем из трансляции для мамы:

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

Перед самым награждением мы общались с парнем из команды, получившей особую номинацию, и угадывали победителей. Я верил в его команду, а он в меня. Говорит: «Ну всё, точно твое первое!» А я вижу — выносят три сумки, а это значит, что в команде победителя трое участников.

Как же я ошибался. Первое место мое!

Награждение финалистов офлайн-части:

Если хотите опробовать саму игру, то ссылка на нее — ниже. Оставляйте отзывы, требуйте мультиплеер 🙂 Также я планирую доработать эту игру и выпустить ее в сторы. За дневниками разработки можно следить в группе ВК: https://vk.com/club222952364

Вот, кстати, первая часть дневника о начале работ и ближайших планах: https://youtu.be/gIJ7eGE-2l8?si=oSysCAai_HBrdGDS

На этом все, если у вас есть вопросы — задавайте, постараюсь ответить! И еще раз повторю: не бойтесь принимать участие в хакатонах. Уверен, работа над проектом в соревновании разработчиков позволит получить дополнительные знания, опыт и, конечно, впечатления.

2626
4 комментария

Какой приз если не секрет?)

О! Говорят крутая игра получилась =)