Почему я использую собственный движок 3D игр
В 2017 году я создал движок 3D игр YUME и выпустил на нём игру Speebot. Сегодня я использую тот же самый движок для разработки своей следующей игры.
Изначально я писал движок частично в качестве учебного опыта, частично в качестве эксперимента. Люди иногда спрашивают меня, почему я продолжаю использовать его вместо того, чтобы переключиться на что-то популярное, такое как Unity или Unreal. Я упоминал некоторые из своих причин в прошлом, но подумал, что должен написать краткий пост, отвечающий на этот вопрос.
Эффективный рабочий процесс
Я создал свои инструменты, чтобы быстрее разрабатывать игры. YUME поддерживает то, что я называю "горячей загрузкой ресурсов" — это возможность обновлять и тестировать карты, модели, скрипты, текстуры, звуки и другие ресурсы во время игры. По сути, это означает, что я могу разрабатывать игру, не выходя из неё.
У моего движка есть свой язык сценариев, который упрощает проектирование и тестирование игровой логики. Теперь это быстрый и безболезненный процесс.
Сам движок написан на Haxe, поэтому, когда мне нужно внести изменения в код, пересборка проекта занимает всего несколько секунд.
Отличная документация
Все технологии, которые я использую, очень хорошо документированы. Существует бесчисленное множество ресурсов и сообществ, посвящённых OpenGL, Haxe, SDL, C++ и дизайну игр в целом.
Никакого ада зависимостей
Игровые движки — это сложное программное обеспечение, в котором по понятным причинам могут быть ошибки. Когда ошибка в стороннем движке затрагивает разработчика игры, то всё, что он может сделать, это сообщить о проблеме и ждать, пока создатели движка исправят её. Это также относится к любым плагинам, которые может использовать игра.
Это проблема коммерческих движков. С движками с открытым исходным кодом всё не так плохо, потому что они позволяют любому пользователю погрузиться в исходный код и исправить ошибку самостоятельно. Но и здесь могут быть проблемы, так как приходится копаться в чужом коде.
В некоторых случаях обновление версии игрового движка может привести к новым проблемам, которые могут быть очень неприятными и болезненными.
Легче отлаживать и модифицировать
Написание программы с нуля приводит к хорошему пониманию каждого компонента. Расширять и отлаживать такие программы намного проще, чем разбираться в чужом коде (если этот код вообще доступен).
Оптимизация
Большинство популярных движков имеют тенденцию быть универсальными, что приводит к ресурсным расходам на функции, которые не нужны игре. Это проектное решение, которое естественным образом приводит к раздуванию кода и снижению производительности.
Разработчики часто игнорируют эту проблему, говоря, что компьютеры становятся всё более мощными, и поэтому оптимизация программ больше не важна. Я с этим не согласен.
Текущая версия YUME адаптирована специально для той игры, над которой я работаю. Поскольку я могу сосредоточиться лишь на функциях, которые нужны именно моей игре, в конечном итоге она превосходит обычные движки по экономии ресурсов. Это означает, что я могу добавить больше движущихся элементов в игру, а также лучше поддерживать более старые компьютеры.
Нет лицензий
Мне не нужно иметь дело с дополнительными лицензиями, комиссионными платами, контрактами и условиями обслуживания.
Движок уже готов
Помимо исправлений, улучшений и новых функций, ядро моего движка уже готово, и мне не нужно создавать его снова. Всё, чем я сейчас занимаюсь — это создание игрового контента. Переход на другой движок в этот момент только бы замедлил меня.
Это интересно
Проект такой сложности является большой инженерной задачей. Очень приятно создавать и улучшать инструмент, которым я пользуюсь каждый день.
Сейчас я близок к завершению своего второго проекта на этом движке — сюжетной приключенческой головоломки под названием Phantom Path:
У игры есть страница в Steam. Также доступна демо версия!