Как разрабатывать игру, используя только бесплатное ПО. Пайплайн безумцев-энтузиастов

Смотрим на мир бесплатного софта
Смотрим на мир бесплатного софта

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

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

Движок

Godot Engine
Godot Engine

Antioma - это нарративная Point-n-Click адвенчура, поэтому главной задачей для нас было рассказать историю. Однако мы не хотели оставить игроков совсем без геймплея, поэтому решили делать что-то похожее на олдскульные квесты, но без адского пиксель-хантинга и неочевидных головоломок. Для этого мы могли бы использовать, например, RPG Maker, но наша задумка и количество механик не соответствовали возможностям движка. Поэтому выбор пал на Godot (еще до того, как это стало мейнстримом).

Как разрабатывать игру, используя только бесплатное ПО. Пайплайн безумцев-энтузиастов

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

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

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

Графика

Это же основа
Это же основа

Если с движком мы определились легко, то в случае с графикой все-таки начали с платного ПО. Первые концепты и прототипы отрисовывались по большей части в Photoshop. Но когда стало понятно, что планируем долго разрабатывать игру и выпускать ее в Steam, приняли решение найти бесплатную альтернативу. Ей оказалась Krita, которая способна заменить почти любой софт для рисования (если говорить про растер, хотя и вектор там тоже есть, но о нем ничего конкретного сказать не можем). По сути тот же функционал, но с открытым исходным кодом и нулевой платой - ни единоразовой покупки, ни подписки. Наименее проблемное ПО из всего пайплайна, идеально подходит под любую из наших задач (напоминаю, что мы делаем 2D адвенчуру). Не вся команда в нем работает, но большая часть использует именно Krita.

Результат работы в Krita
Результат работы в Krita

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

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

Без анимации ему грустно
Без анимации ему грустно

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

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

Для трейлера мы тоже использовали DragonBones
Для трейлера мы тоже использовали DragonBones

И тут в игру вступает еще один инструмент с открытым исходным кодом - Free TexturePacker. Это легковесная утилита для работы с текстурами и спрайтлистами. Пайплайн выглядел следующим образом - персонаж анимируется в DragonBones, после чего анимация экспортируется как спрайтлист, а спрайтлист в свою очередь уже перепаковывается в Free TexturePacker под нужды движка. И все, кто имел хотя бы минимальное отношение к разработке игр, уже понимает проблему. У вас что ли все костные анимации лежат спрайтлистами? Да. И это негативно влияет на производительность, а также длительность загрузок. Однако в случае нашего проекта это не так заметно, а ради полной бесплатности и открытости кода этим можно пожертвовать. Скорее всего, игроки даже не столкнутся с проблемой, а мы при этом ничего не потратили на ПО, выглядит как неплохая сделка.

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

Казалось бы, вот же крутое решение, и оно действительно так, пока не начинаешь работать с этим плагином на регулярной основе. Godot DragonBones - классический пример плагина, который поддерживает по большей части один человек, из-за чего стабильность оставляет желать лучшего. Анимации классно воспроизводятся, ничего не весят и выглядят очень плавно. Однако заплатили мы за это нашими нервами и временем.

Типичный Godot Dragonbones
Типичный Godot Dragonbones

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

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

Кстати, мы участвуем в Steam Next Fest, можете заценить демо нашей игры по ссылке, а полный релиз произойдет уже совсем скоро.

2222
44
33