20

Age of Robots - Игра для хакатона

В конце сентября 2023 пришло письмо о проведении хакатона и я решил в нём поучаствовать. Хакатон немного нестандартный, не два-три дня как обычно проводят, а аж целых 2 недели. Начало было 4 октября, а окончание 18. На момент написания поста результатов еще никаких нет кроме того что игра опубликована.

Age of Robots - Игра для хакатона Gamedev, Idle игры, Idle, HTML, Javascript, Яндекс Игры, Длиннопост

Зарегистрировался и осталось подождать начала, о котором я благополучно забыл. Вечером 7 октября внезапно вспомнил про него, а уже прошло 3 дня с начала, и решил всё таки поучаствовать несмотря ни на что.

Команда за это время не подобралась, да и я особо не старался, поэтому пришлось участвовать в соло команде. Выбрал трек "Игры" и начал.

Идея

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

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

Роботов можно назначать работать в постройки. Постройки приносят ресурся или производят опять же роботов. У роботов есть параметр редкости и каждый созданный робот случайным образом создается из списка доступных типов роботов.

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

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

Что по технологиям?

Несколько раз пробовал пользоваться ECS паттерном и библиотеками в Unity, но всё никак не мог привыкнуть. Давненько смотрел доклады и помнил что это очень удобно для разработки игр. Сейчас был хороший повод использовать этот подход. Немного погуглив библиотеки для JavaScript, а было решено писать на нём, решил остановиться на Ape ECS.

Быстренько скопипастил систему сборки из Immortal Knight и начал изучать Ape ECS. На удивление в этот раз как-то всё было более понятно и стало получаться. Без ошибок не обошлось, пытался использовать паттерн не по назначению, превращяя ECS в EC, но вовремя одумался и всё получилось более-менее неплохо.

Для UI решил оставить React из Immortal Knight, т.к. к Phaser еще не до конца привык, быстрее было сделать на обычных div'ах и CSS.

Age of Robots - Игра для хакатона Gamedev, Idle игры, Idle, HTML, Javascript, Яндекс Игры, Длиннопост

Один из ранних скриншотов интерфейса

Графика

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

А ведь сейчас как раз такой расцвет генеративных моделей изображений. Самым простым способом было взять Stable Diffusion XL 1.0 с Pixel Art XL. Интерфейсом послужил ComfyUI.

В итоге получились вот такие изображения:

Роботы всех видов и размеров, а так же здания

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

Процесс

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

Важной частью, и одновременно самой долгой, для меня оказалось придумывать сценарий и реализовывать его в виде квестов и технологий для изучения. В итоге в игре получилось 20 квестов и 20 технологий.

Ну и куда же без небольших приколов в игре? У всех роботов интересные названия, местами в описаниях зданий или технологий есть отсылки. Например "Лаборатория GPT-9000" или "Шахтёр BTC-25". Можете сами поискать.

Что дальше?

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

Поиграть в Age of Robots можно на Яндекс Играх https://yandex.ru/games/app/262827

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

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


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"