Как участие в хакатоне привело к созданию полноценного проекта

Или как придумать рабочую идею за 32 часа.

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

Просто сделали красивую картинку за 4 часа на тему игры, практически Speed Level Design! Наше творчество
Просто сделали красивую картинку за 4 часа на тему игры, практически Speed Level Design! Наше творчество

И да, мы будем рады любым советам как по игре, так и по ведению блога, так как подобного опыта у нас пока еще нет.

Текст писал: Ковалёв «theonrd» Никита, выполняет задачи UE4 разработчика, геймдизайнера.

Дополнил: Даниил «TwilightHunter», выполняет задачи 3D-художника, сценариста, нарративного геймдизайнера.

Немного об условиях.

Сначала стоит всё-таки объяснить, что такое «хакатон» для тех, кто сталкивается с этим впервые. В контексте этой статьи стоит это воспринимать просто как джем: нужно создать игру за короткое время, чтобы она при этом соответствовала заданной организатором теме. Темы могут быть как разными для всех участников, так и одинаковыми. В нашем случае они были разными. Могут применяться и дополнительные условия, например ограничения по сеттингу, сюжету или, как в нашем случае, была необходимость добавить пасхалку с символикой организаторов (но об этом немного позже).

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

Заходя немного вперёд — это оказалось крайне увлекательным занятием. Несколько бессонных и заряженных мотивацией дней и (особенно) ночей, атмосфера здорового соперничества с огромным количеством действительно талантливых людей и то приятное ощущение, когда ты показываешь свой проект и никому из команды за него не стыдно.

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

Примеры тем для других участников, иногда попадаются очень забавные комбинации. Гугл-Табличка с темами от организаторов хакатона :)
Примеры тем для других участников, иногда попадаются очень забавные комбинации. Гугл-Табличка с темами от организаторов хакатона :)

Вот в таких условиях мы оказались после начала ивента:

  • Тематика: Стратегия, космос, демоны;
  • Время на разработку: 32 часа[1];
  • Необходимость добавить пасхалку (интеграцию) с символикой организаторов;
  • Полное отсутствие опыта в подобных конкурсах, количество выпущенных игр составляет число 0, зато незаконченных и навечно (хотя кто знает?) заброшенных уже больше пяти точно: )

С этим вполне можно работать и, если смотреть на некоторые другие комбинации, то нам тогда еще повезло!

Тематика.

Стратегия в типичном понимании — это явно не то, что можно сделать за пару неполных дней, к тому-же часть команды в общем и целом не очень жаловала жанр в обычном его проявлении (И я в их в числе, так уж вышло). Но в таких ситуациях достаточно попробовать провести грань между жанрами и быстро станет понятно, что она довольно размытая и интерпретировать можно практически как угодно. Если будете участвовать в подобных конкурсах, то не забывайте про это, даже если ограничения позволяют сделать что-то стандартное!

И на основании этого возникла идея обратиться к такому жанру, как Tower-Defence, но постараться привнести в него что-нибудь новое: «Что, если игрок будет играть за демонов? В таком случае будет логично, что он будет строить атаку, а не защиту. Еще и дадим возможность расставлять юнитов и прокладывать им маршрут». Примерно так и стал выглядеть основной геймплейный цикл, если опустить мелкие подробности, плюс удачно пристроили демонов.

Местом действия решено было выбрать космос (как-будто был выбор!), а именно — астероидное поле. Вообще, основная задумка была в том, что в дальнейшем будет представлено несколько планет, которые демоны должны «захватывать», а это лишь первые уровни. Также был расчет и на то, что это поможет лучше соответствовать теме и делать это так, что не придётся даже объяснять где тут этот космос.

3D модель камня. Согласитесь, она прекрасно выглядит! Модель взята из библиотеки Megascan и отредактирована нами.
3D модель камня. Согласитесь, она прекрасно выглядит! Модель взята из библиотеки Megascan и отредактирована нами.

Сами же юниты нападения выглядят как маленькие летающие красные корабли демонов, а защита — синие турели. Задача игрока — выстроить атаку так, чтобы снести главное здание, которое является базой противников.

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

Так выглядят характеристики и место, где они настраиваются :) Наше творчество
Так выглядят характеристики и место, где они настраиваются :) Наше творчество

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

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

  • Просто и интуитивно: управлять можно одной кнопкой, всегда понятно, что делает тот или иной объект. Сложность задаётся именно хорошими уровнями, а не непонятностью механик.
  • Таблица рекордов и расширенная статистика может дать множество факторов для соревнований с другими игроками, а собрать все звёзды — отличная цель для тех, кто играет в одиночку. Рекорды и статистика, конечно-же, остались где-то в списке задач и до демонстрации не дошли.
  • Небольшие уровни позволяют легко делать перерывы и занимать себя тогда, когда есть лишнее время. Именно поэтому стоило уделить особое внимание состоянию потока, чтобы время пролетало незаметно, а уровни «щелкались» один за одним.

Дополнение от TwilightHunter:

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


Как ни странно, карма нас за это не покарала, «выживание эльфов на заводе” и “симулятор медведя в офисе» достались более креативным людям, и, получив что-то адекватное, мы за полчаса определились с тем, что это будет за игра. Безумно хотелось сотворить что-то глобальное (для 32 часов разработки, естественно), что-то яркое, продуманное и наполненное интересным сложным геймплеем, красивыми моделями и детализованными персонажами. Но опыт в персонажке в лице одного меша и жирный прочерк в списке законченных проектов команды прямо намекал, что ничего хорошего из этого не получится, поэтому мне удивительно легко удалось настроиться на одну волну с командой.


Именно скромный опыт и определил, как будет выглядеть игра. В анимациях у меня вообще полный ноль опыта, тематика удачно подходящая (космос), поэтому вместо гуманоидных юнитов демоны полезли в корабли. Вдохновленный, я сразу отправился клепать модельки, не дожидаясь итогов обсуждения, только изредка вписывая по строчке-другой в диздок.”

Один из самых первых скриншотов из командной конференции, эксклюзив! Наше творчество
Один из самых первых скриншотов из командной конференции, эксклюзив! Наше творчество

Как продвигалась работа.

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

  • Ковалёв Никита. UE4 Разработчик и геймдизайнер. Делал так, чтобы всё казалось целостным, каждому было чем заняться. Также занимается графикой в движке во всех её проявлениях. Сейчас пишет эту статью: )
  • Даниил «TwilightHunter». 3D моделлер и человек, который умеет писать. Назвал бы сценаристом, но в проекте сценария не было. Также выступал спикером и красиво рассказывал об игре.
  • Никита «niki119». UE4 Разработчик, который занимается в основном ИИ, потому что умеет только он. Также решает разные нерешаемые проблемы самых разных сфер, которые решить никто больше не может (о как завертел, думайте сами как это расшифровывать ! :).

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

Исходя из этого, решено было отказаться от музыки и сконцентрироваться на картинке и геймплее (впрочем, этого никто особо и не заметил — мало у кого был звук в целом, плюс сильно лагала демонстрация экрана на стороне серверов зума). Практически все ресурсы производили сами, взяли только пару 3D моделей камней из библиотеки Megascan[2].

Первые 3D концепты демонических юнитов. Наше творчество
Первые 3D концепты демонических юнитов. Наше творчество

Касаемо пайплайна — с движком работали по очереди (да-да, профессионально) и синхронизировали на гитхабе, потому что работа с системами контроля версий в UE4, на мой взгляд, очень уж сложная. Но тут скорее причина в Perforce, неудобнее которого я пока еще ничего не видел (не исключаю, что мы не до конца разобрались, может быть при бОльшем опыте он крайне удобен). Сейчас, естественно, этот процесс налажен лучше, но до идеала еще далеко.

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

В это же время 3D моделлер делал юниты как на станке (с которыми, кстати, есть пара забавных историй, но о них уже в других статьях).

Дополнение от TwilightHunter:


“Модельки создавались удивительно легко, как на конвейере, к тому же я старался сразу сделать +- конечную версию юнитов и окружения. Это очень помогает, когда ты не стремишься делать идеально — лишь так, чтобы нормально смотрелось, подходило под цели и общую стилистику, и не более. В этот момент меня посетила мысль, что, возможно, лоуполи персонажи и анимации худо-бедно, но вполне могли получиться.


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

Также параллельно обсуждали проект в командной конференции и дописывали важную информацию в дизайн-документ. Чтобы не уходить с общего курса — центральные идеи заранее решили не менять.

На самом деле сильно замороченного рабочего процесса тут нет: просто обсуждали, работали и делали контент. Основная сложность была в распределении времени и особенно сложно может быть себя ограничивать. В подобных конкурсах невозможно отточить что-либо до идеала, если нет огромной слаженной команды с опытом выпущенных проектов (да и если есть — тоже). Приходится идти на компромиссы между временем и качеством, правильно расставлять приоритеты. Это таки очень полезный навык, который нам еще оттачивать и оттачивать, но хакатон помог хотя-бы начать двигаться в этом направлении.

В итоге, примерно к семи-восьми утра мы закончили минимальный прототип и успели на чекпоинт. Получили максимальный балл: )

Дополнение от TwilightHunter:


“Поспав три часа, я в панике осознал, что для участия в чекпоинте нужно подтверждение капитана команды. Сразу же в ужасе (дополнительные баллы ведь!) начал набирать номер Никиты, но наткнулся на выключенный телефон. Паника была совершенно неуместна, до закрытия документа оставалось еще часа два, но маячившие призовые вскружили голову.


Все друзья и близкие верили, что эти деньги.. почти у меня в кармане? Все, кроме меня. Игра, надо сказать, смотрелась вполне прилично, и графически была (как бы это ни чсвшно звучало) одной из лучших. Вот только 4к текстуры с высоты камеры было не видать, как и смарт-материалы, а геймплейная составляющая прихрамывала у нас до последнего.


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

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

Примерно так выглядела игра на момент чекпоинта. Сделано примерно за вечер + ночь. Наше творчество
Примерно так выглядела игра на момент чекпоинта. Сделано примерно за вечер + ночь. Наше творчество

Следующий день по большей части повторял предыдущий: настраивали графику, добавляли юнитов и 3D модели, делали ИИ и баланс.

Небольшая проблема была в том, что спикер и капитан должны быть одним и тем-же человеком на защите (на чекпоинте такого требования не было), о чём ранее мы нигде информации не встречали, но эта проблема легко решилось одним личным сообщением организаторам. Они вообще довольно открытые товарищи и сразу поняли нашу ситуацию, дав добро на такую ротацию.

Примерно в 7 утра, когда настраивать цветокор уже не было сил, 3D моделей хватало, баланс был на слабом, но приемлемом уровне, а ИИ неплохо работал — решили на этом закончить и отправиться спать, чтобы на утро хоть немного времени уделить презентации.

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

Дополнение от TwilightHunter:


“Второй день я посвятил окружению, наши кодеры — ИИ и балансу, эпичный и красочный эффект призыва юнитов из горящей пентаграммы тогда уже присутствовал. Имелась масса проблем с текстурками, но их либо решили, либо отмахался кадилом: чтобы заметить мелкие дефекты, UltraHD4k материалы с высоты птичьего полета рассмотреть должным образом бы не удалось.


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


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

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

Результаты

Увы, конкурс мы не выиграли, заняли 25 место из 70, потеряв много баллов из-за некачественной интеграции символики организаторов. Справедливо это или нет — решать не нам.

Нам повезло, что организация хакатона оказалась на высшем уровне, так как я видел отчеты участников других джемов и там было всё менее радужно. Это противоречиво, но спать по 4 часа в сутки и без перерыва работать над проектом было очень трудно, но топово даже с учётом проигрыша. Еще и бесплатные коды на еду раздавали всем участникам!

[Очень длинное] Дополнение от TwilightHunter:


“Интеграция бренда — сколько боли в этом словосочетании! Казалось бы, что может быть лучше, чем мягкая и ненавязчивая реклама в виде маскота компании организаторов? Оказалось, что много чего. Некоторые игры делались ПРО компанию Selectel, или же T-Rex’ов, где-то этим двум пунктам уделялась масса эфирного времени. Пару раз жюри выпадало в хохот, сталкиваясь с такими отсылками.


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


Но самое коварное и страшное — это сдача проекта. Могу дать твердый совет всем участникам подобного движа: никогда не давайте спикеру смотреть на другие проекты до сдачи. Утром третьего дня я набросал примерный план, мы отослали демку игры, и, довольные, сели смотреть за приемом работ. Вчерашний чекпоинт прошел идеально, я уверенно рассказывал про игру, про (нигде не показанный, но существующий в виде идеи) лор, про перспективы развития и всякие интересности.


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


Именно тогда я понял, что хорошего места нам не видать. С другой стороны, я быстро остыл, расслабился, и вспомнил все приятное, веселое и интересное, что было за эти дни. Пусть я и не получил необходимые мне деревянные, пусть я и спал по 3 часа 3 дня, но ни усталости, ни негатива этот временной отрезок у меня не вызывает. Было интересно посмотреть на чужие проекты, и, к моему сожалению, из тех, кто на две головы превосходил всех остальных участников, в топ-3 попал только один человек, остальные не задели даже десятку. Это не промах судей, скорее всего проблема все в том же самом — в интеграции бренда.


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

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

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

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

Небольшие спойлеры, что было решено изменить: мы портировали игру на мобильные устройства, дали её новое имя - From Inferno, практически полностью переделали графику и геймплей, прописали сюжет и лор, сменили место действия, нашли в команду художника и музыканта, которые, буквально, творят чудеса на своём поприще!

Ну и еще один спойлер:

А сейчас проект выглядит примерно так. И он уже выдаёт неплохой FPS на смартфонах! Наше творчество
А сейчас проект выглядит примерно так. И он уже выдаёт неплохой FPS на смартфонах! Наше творчество

Также будем рады, если вы подключитесь к нашим каналам в Discord (тык) и Telegram (клик). Там можно и просто пообщаться, и вопросы позадавать, и уникальный контент присутствует.

[1] Также был необязательный чекпоинт приблизительно в середине срока, где нужно было уже что-то продемонстрировать, чтобы получить дополнительные баллы после оценки жюри.

[2] Megascans Quixel предоставляет огромное количество абсолютно бесплатных фотореалистичных 3D моделей для использования в Unreal Engine 4 (в том числе в коммерческих проектах). Если кто-то еще не знал — очень рекомендуем ознакомиться.

Интересные ссылки:

1818
16 комментариев

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

6
Ответить

Спасибо, учтём!
К этой статье проблематично достать актуальные гифки, но в дальнейших - обязательно :)

Ответить

А сейчас проект выглядит примерно так. И он уже выдаёт неплохой FPS на смартфонах! Хм, а почему по увиденному на скриншоте фпс должен быть низким?
неплохой FPSЭто 60?

1
Ответить

Да, 60+

Для сравнения, во времена хакатона 60фпс можно было получить не на каждом ПК, а при "тупом" порте едва-ли набиралось 10-15 на мидл-энд смартфонах. При этом мы не стали пока что прибегать к способам, вроде простого понижения графики или разрешения рендеринга, обходясь именно оптимизацией.

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

1
Ответить

Круто, что продолжаете проект! :) Тоже участвовал, у нас выпали "гонки с червями в теле человека", поэтому продолжать не стали :D Хотя было здорово, интересный опыт, может тоже как-нибудь расписать в отдельной статье. В любом случае, успехов и довести до релиза!

1
Ответить

Спасибо!
А почитать, как вы выкрутились с такой темой - было бы интересно :)

1
Ответить

Комментарий недоступен

1
Ответить