«Первый геймджем и первая игра» или как обычному программисту все-таки начать делать игры

Сначала самое интересное — ролик и сcылка на билд

Time Freeze gameplay demo

Привет DTF! меня зовут Рафаэль и я профессиональный программист. Еще в детстве, как и многие, я выбрал эту профессию только потому, что мечтал делать игры. Но жизнь интересная штука и часто мы не следуем мечте, в силу разных причин. Поэтому за всю свою профессиональную карьеру так и ни разу не приступил к разработке игр. Вместо этого писал код для всякого, но только не для игр. Но после того как узнал о хакатоне от DTF и Azur Games окончательно решил — пришло время делать игры!

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

В итоге нас было пятеро. И назвались «I’m a bear maw!»

  • Программист
  • Художник
  • 3 помощника-многостаночника

Идея

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

  • 60 секунд на сессию (самое главное условие);
  • Реиграбельность (указано в задании);
  • Изящно прикрученный таймер к механике (на основе комментария от организаторов);
  • 2d — графика (С ней всегда проще);
  • Целевая платформа PC/Consoles (мы не любим мобилки);
  • Внутреннее ощущение крутости (субъективный, но самый главный критерий).

Мы потратили на брейншторм более двух часов и уже почти решились делать симулятор разговоров по телефону, но одна фраза брошенная моим другом позволила родиться идеи которая удовлетворила (как нам кажется) все условия. Фраза звучала примерно так: «А что если мы 60 секунд что-то делаем, а потом просто смотрим?». Звучит запутано, но в моей голове заиграла мелодия Sweet Dreams и всплыла вот эта сцена:

Ртуть спасает школу мутантов

Все стало сразу понятно!

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

Движок

Раньше я совсем немного изучал разные движки, Unreal, Unity, Game Maker Studio, но выбор пал на Godot. Причины:

  • Очень легковесный. Исполняемый файл весит 65mb, запуск происходит мгновенно;
  • Минималистичный и функциональный. Есть все что нужно, для создания прототипа;
  • Разнообразие языков. Можно писать на собственном языке GDScript, можно на C#, а можно и прикрутить другие, например D;
  • Отличная документация;
  • Экспорт билда на все популярные платформы.

Язык

Раньше приходилось писать на C# и я думал, что буду использовать его для разработки, но язык очень многословный и вскоре резко пришлось переключиться на GDScript. Я никогда до этого на нем не писал, он похож на Python, но и на Python за жизнь написал строчек 40. Язык оказался достаточно легким и понятным. Плюс его тесная интеграция с движком и редактором сыграла нам на руку.

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

Графика

Вот здесь я облажался. Изначально мы хотели точно такую же камеру как в hotline miami, угол которой был бы идеальным для нашей игры. Но мне так не нравилось как выглядят персонажи при таком ракурсе, посему принял решение изменить угол на манер Escapist. Но игра же с физикой… А художник уже получил задание рисовать… Дурная моя голова! Пришлось всем с этим смириться и сделать заметку — такая игра лучше бы смотрелась в 3d.

Процесс разработки

Протекало все безумно.

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

С опытом предыдущего дня, я понял, что часть задумок просто не смогу реализовать за приемлемое время, что очень печально, ведь мы много всего придумали. Еще нашли баги, некоторые очень противные.

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

Часть времени я потратил на то, чтобы объяснить одному из помощников как работать с гитом и Godot, для того, чтобы он начал проектировать уровень, пока сам пишу код и правлю баги, найденные другим.

Часто просто выкрикивал в дискорд разные фразы в духе: «Найдите 2 звука смерти людей!», «Срочно нужна раковина и нож!», «Хочу нагнетающий саундрек!», а друзья сразу подхватывали и присылали кучу вариантов, оставалось только выбрать.

После того, как уровень был готов в отдельной ветке, нужно было его подлить в мою, где были уже готовы все части игры кроме уровня. Но т.к мы изначально не настроили git для Godot, смерджить гладко не получалось. На часах уже 4 утра понедельника, скоро на работу, а дизайнер уровня уснул прямо за компом и громко храпел… Пришлось переносить все в ручную.

Как только перенес весь уровень, запустил игру и попробовал его пройти. «Ну и хардкорную игру мы сделали» — подумал я. Поэтому, на всякий случай, добавил еще пару стульев, outline shader для объектов с которыми можно взаимодействовать, собрал проект в исполняемый файл, записал видео и загрузил работу в личный кабинет.

5:41 на часах. Я пошел спать, ведь через 3 часа просыпаться на работу.

Выводы

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

Еще мы в восторге от идеи игры и теперь я разбираюсь в Unreal, чтобы сделать прототип этой же механики, но в 3d и от первого лица.

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

1313
1 комментарий

Мне кажется, 2д варианту сильно бы помогли тени, хотя бы круглые.
Энивей, идея клёвая, удачи!

2
Ответить