Немного о том, как я делаю игру и какими инструментами пользуюсь.
Карты мыслей
Начну не с технических инструментов, а с ментальных. Как придумывать игру? Я пользуюсь для этого сервисом mindmeister.com. Это отличный инструмент для структурирования своих мыслей.
Когда мне приходит какая-то идея, я добавляю ее в карту. Скорее всего не все идей получится реализовать, а какие-то придется пересмотреть, но это здорово помогает и мотивирует. Глядя на свою карту (ниже) я больше верю что доведу игру до конца.
CastleDB
Пожалуй самая интересная часть это конфиги игры. Кто-то хранит данные в экселе или гугл таблицах, другие – в xml\json\ini. Недостатки таких методов очевидны – целостность данных можно проверить только в рантайме. Геймдизайнер запросто может ошибиться с именем индетефикатора или он будет удален и в лучшем случае игра упадет при загрузке конфигов, а в худшем во время игры.
Юнити позволяет хранить такие вещи в ScriptableObject это полностью решает проблемы выше. Но лично на мой вкус не очень удобно настраивать связи между множеством объектов, приятнее когда все в одном месте и перед глазами.
Третий вариант – использование БД или разработка своего инструментария. Это отличный вариант, но подходит скорее не для инди игры, а для энтерпрайза.
Мой ответ – CastleDB он решает большинство проблем выше и еще кое что, но об этом ниже. CastleDB позволяет создавать таблицы сущностей и создавать связи между ними. Данные храняется в простом json. И легко импортируются. Если у меня когда-то появится геймдизайнер, уверен он будет доволен.
Defold
В качестве игрового движка я использую Defold. Почему? Просто интересно попробоваться что-то новое и отдохнуть от юнити. В качестве языка программирования в дефод используется lua.
Хочу только сказать что на дефолде приятно писать, я как будто отдыхаю =)
Haxe
Haxe это кросплатформенный язык программирования, который позволяет генерировать код под множество других языков. Таким образом можно генерировать один код, например, на C# и NodeJS.
Haxe является типизированным языком с такими приятными вещами как ADT. В то же время lua это динамический язык, а я жуть как боюсь таких языков. Haxe позволяет генерировать код для lua. Таким образом я пишу на defold на типизированном языке.
Второй плюс – это тесная интеграция с CastleDB. Haxe позволяет вытаскивать структуру таблиц из json castleDb и генерировать на их основе классы. Таким образом я еще получаю и статически типизированный json.
Другое
Есть еще несколько инструментов, про которые я не могу ничего рассказать: