Godot Engine — бесплатный движок для разработки 2D- и 3D-игр, созданный в 2007 году двумя программистами из Аргентины — Хуаном Линьетски и Ариелем Мансуром. Изначально технологию использовали для разработки ПО, и называлась она не Godot, а Larvotor. В течение нескольких лет технология прошла множество итераций, а с ними менялись и названия: Legacy, NG3D, Larvita… И в 2014 году Godot вышел в открытый доступ и развивается до сих пор, благодаря активной поддержке сообщества и некоммерческой организации Godot Foundation.
На сегодняшний день Godot считается одним из самых популярных движков, наравне с Unity, Unreal Engine и Construct. Он подходит как для обучения, так и для создания коммерческих проектов в 2D и 3D. Программа поддерживает операционные системы Windows, macOS, Linux, BSD и Android, также есть возможность запуска редактора и работы в нём прямо из браузера. Экспорт проектов доступен на все вышеперечисленные платформы, а также на iOS.
Уникальность клиента Godot Engine в том, что он запускается автономно и не требует полноценной установки в операционную систему. Достаточно выбрать подходящую версию на сайте, скачать ZIP-архив, распаковать его и просто открыть исполняемый файл с префиксом stable_win64. Godot Engine можно установить и из Steam.
При запуске редактора Godot Engine появляется меню, где можно создать новый проект, загрузить существующий или перейти в библиотеку ассетов (требуется интернет-соединение). В последнем случае откроется окно со множеством ярлыков для загрузки плагинов, шаблонов и различных демосцен.
Архитектура движка Godot основана на узлах и сценах. Узлы — это основные блоки, связанные с наполнением будущей игры. Это изображения, звуки, анимации, таймеры, надписи и так далее. Например, на скриншоте ниже выбран узел Crows — это узел-родитель, который содержит несколько дочерних узлов. В данном случае под такими узлами подразумеваются все анимированные спрайты ворон на карте.
В развёрнутом списке можно точечно выбрать любой дочерний узел, и он выделится во вьюпорте для дальнейших манипуляций.
В Godot важна иерархия узлов: за каждым из них закреплена отдельная задача. Пользователю необходимо комбинировать узлы и таким образом постепенно формировать структуру будущей игры.
Сцены в Godot фактически выполняют роль органайзеров, где под одним корневым узлом собраны все остальные. После сохранения сцена начинает работать как новый тип узла, который в свою очередь также может стать дочерним узлом или просто одним из основных блоков новой сцены.
Выходит, в глобальном смысле клиент Godot — это редактор сцен. В зависимости от дизайна уровней может быть сколько угодно сцен, и тем не менее в структуре всегда есть основная сцена, которая загружается при запуске игры.
Программирование в Godot используют для расширения функций и возможностей узлов. Официально движок поддерживает четыре языка: GDScript, C#, а также C и C++. Последние два работают с помощью GDExtension (с версии 4.0). Благодаря сообществу также доступны внешние расширения для Rust, Nim, Python и JavaScript.
Интеграция столь большого количества языков позволяет гибко выстраивать архитектуру проекта и адаптировать её под разные задачи. Например, в рамках одной игры можно написать основную часть кода на GDScript, а для сложных алгоритмов использовать C#. Впрочем, можно ограничиться и одним языком.
Как уже отмечалось ранее, Godot Engine подходит для разработки игр в 2D и 3D. Для каждого вида графики в редакторе встроены собственные инструменты, функции и технологии рендеринга.
Для 2D-графики в Godot доступен собственный движок рендеринга и физики, который поддерживает множество функций, в том числе:
Для более удобной разработки 2D-сцен, уровней и элементов UI в редакторе доступен специальный 2D-режим с фиксированным углом обзора и системой координат X, Y.
Подход к разработке 3D-игр в Godot Engine значительно эволюционировал, начиная с версии 4.0. Сейчас движок поддерживает три вида рендеринга.
Вот некоторые из них:
Возможности 3D-графики уступают другим движкам. Инструменты для работы с 3D значительно эволюционировали, начиная с версии 4.0, но по-прежнему сильно ограничены по сравнению с тем, что предлагают Unity и Unreal Engine. Иными словами, Godot подходит для игр с упрощённой 3D-графикой. Если же ваш проект предполагает фотореалистичный визуальный стиль уровня AAA, лучше выбрать другой движок.
Ограниченный выбор ассетов и плагинов по сравнению с маркетплейсом Unity Asset Store и площадкой Fab. Во многом это связано с тем, что все дополнения в библиотеке ассетов Godot создаются сообществом на энтузиазме, а большинство производителей контента и дополнительных инструментов заинтересованы в первую очередь в коммерческой реализации своего контента.
Могут возникнуть сложности при импорте моделей и анимаций. И хотя встроенный инструмент для импорта моделей в формате FBX работает стабильнее, чем предыдущий FBX2glTF, при загрузке сложных анимаций всё равно могут возникать ошибки. К тому же стоит понимать, что этот процесс так или иначе технически осуществляется через конвертацию, и основным форматом остаётся .glTF (2.0).
Портирование на консоли требует сторонних решений. Данные девкитов не подлежат разглашению, что противоречит принципам открытой лицензии MIT. В результате портировать игру, созданную на Godot, придётся через издателя или компанию, которая предлагает соответствующие услуги. В этом случае данные о девкитах остаются у третьей стороны.
Godot по большей части ориентирован исключительно на соло-разработчиков и небольшие студии. У него нет приоритетной поддержки, инструментов для совместной работы, сервисов аналитики, интеграции востребованных решений (например, звуковых движков). К тому же, как упоминалось ранее, отсутствует прямая поддержка портирования на консоли, что важно для AA и AAA-проектов.
Godot — продвинутый, гибкий и бесплатный движок с прозрачными условиями. Его относительно простая архитектура, поддержка 2D и 3D и открытый исходный код вполне подойдут для инди-разработчиков, небольших команд, а также для преподавателей и студентов.
Если вы хотите быстро втянуться в цикл разработки и сделать полноценную игру без затрат на лицензии, несмотря на некоторые ограничения инструментов, — Godot вполне справится с такой задачей. И шоурилы игр на этом движке полностью это подтверждают.