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


Иллюстрация: Godot Engine / Дима Руденок для Skillbox Media
Если вы когда-нибудь задумывались о разработке игр, но освоение игрового движка казалось вам слишком сложным, возможно, стоит обратить внимание на Godot Engine. В настоящий момент это одна из самых перспективных технологий с открытым исходным кодом, к которой присматривается всё больше инди-разработчиков. В этом материале мы рассмотрим основные особенности Godot Engine и его преимущества и недостатки.
Содержание
- Что такое Godot Engine
- Как установить Godot Engine
- Система узлов и сцен в Godot Engine — как всё устроено
- Языки программирования в Godot Engine
- Работа с 2D и 3D в Godot Engine
- Преимущества и недостатки Godot Engine
Что такое Godot Engine
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
Уникальность клиента Godot Engine в том, что он запускается автономно и не требует полноценной установки в операционную систему. Достаточно выбрать подходящую версию на сайте, скачать ZIP-архив, распаковать его и просто открыть исполняемый файл с префиксом stable_win64. Godot Engine можно установить и из Steam.
Примечание
Второе приложение с префиксом -stable_win64_console — это версия, где помимо самого редактора запускается дополнительное окно с консольным выводом. Как правило, её используют продвинутые пользователи для отладки скриптов.
Система узлов и сцен в Godot Engine — как всё устроено
При запуске редактора Godot Engine появляется меню, где можно создать новый проект, загрузить существующий или перейти в библиотеку ассетов (требуется интернет-соединение). В последнем случае откроется окно со множеством ярлыков для загрузки плагинов, шаблонов и различных демосцен.

Скриншот: Godot Engine / Godot Engine

Скриншот: Godot Engine / Godot Engine
Архитектура движка Godot основана на узлах и сценах. Узлы — это основные блоки, связанные с наполнением будущей игры. Это изображения, звуки, анимации, таймеры, надписи и так далее. Например, на скриншоте ниже выбран узел Crows — это узел-родитель, который содержит несколько дочерних узлов. В данном случае под такими узлами подразумеваются все анимированные спрайты ворон на карте.

Скриншот: Godot Engine / Godot Engine
В развёрнутом списке можно точечно выбрать любой дочерний узел, и он выделится во вьюпорте для дальнейших манипуляций.

Скриншот: Godot Engine / Godot Engine
В Godot важна иерархия узлов: за каждым из них закреплена отдельная задача. Пользователю необходимо комбинировать узлы и таким образом постепенно формировать структуру будущей игры.
Сцены в Godot фактически выполняют роль органайзеров, где под одним корневым узлом собраны все остальные. После сохранения сцена начинает работать как новый тип узла, который в свою очередь также может стать дочерним узлом или просто одним из основных блоков новой сцены.

Скриншот: Godot Engine / Godot Engine
Выходит, в глобальном смысле клиент Godot — это редактор сцен. В зависимости от дизайна уровней может быть сколько угодно сцен, и тем не менее в структуре всегда есть основная сцена, которая загружается при запуске игры.
Языки программирования в Godot Engine
Программирование в Godot используют для расширения функций и возможностей узлов. Официально движок поддерживает четыре языка: GDScript, C#, а также C и C++. Последние два работают с помощью GDExtension (с версии 4.0). Благодаря сообществу также доступны внешние расширения для Rust, Nim, Python и JavaScript.
Интеграция столь большого количества языков позволяет гибко выстраивать архитектуру проекта и адаптировать её под разные задачи. Например, в рамках одной игры можно написать основную часть кода на GDScript, а для сложных алгоритмов использовать C#. Впрочем, можно ограничиться и одним языком.
Создатели движка рекомендуют начинающим пользователям сперва освоить программирование в Godot на GDSсript, так как язык изначально создан для этого движка. Его синтаксис по сравнению с другими достаточно простой, что позволяет сократить объём файлов, а также ускорить процессы компиляции и загрузки. Отмечается некоторое сходство с Python, Lua и Squirrel, так как разработчики GDSсript вдохновлялись именно этими языками программирования.
Более подробную информацию о программировании на GDScript можно узнать из официального справочника.
Работа с 2D и 3D в Godot Engine
Как уже отмечалось ранее, Godot Engine подходит для разработки игр в 2D и 3D. Для каждого вида графики в редакторе встроены собственные инструменты, функции и технологии рендеринга.
Для 2D-графики в Godot доступен собственный движок рендеринга и физики, который поддерживает множество функций, в том числе:
- тайловые карты — в контексте Godot под этим подразумевается сетка из плиток для создания игрового уровня. С помощью узла TileMapLayer можно распределять небольшие фрагменты изображений словно кистью — вместо того, чтобы перемещать каждый элемент вручную;
- частицы;
- динамическое 2D-освещение сцены;
- физику и коллизии;
- продвинутую систему слоёв и модификаторов — CanvasItem;
- систему анимаций, в том числе анимирование на основе 2D-скелетов и вырезной анимации.
Для более удобной разработки 2D-сцен, уровней и элементов UI в редакторе доступен специальный 2D-режим с фиксированным углом обзора и системой координат X, Y.

Скриншот: Godot Engine / Godot Engine
Подход к разработке 3D-игр в Godot Engine значительно эволюционировал, начиная с версии 4.0. Сейчас движок поддерживает три вида рендеринга.
- Forward+ — для десктопных платформ. Использует графические API Vulkan, Direct3D 12 и Metal (для систем Apple).
- Mobile — несмотря на название, подходит не только для мобильных проектов, но и для десктопных, если будущая игра не предполагает графических изысков. Использует те же API, что и Forward+.
- Compatibility (GL Compatibility) — предназначен для десктопных и мобильных платформ со слабой конфигурацией и использует API OpenGL.
Для работы с 3D-графикой существует специальный режим с трёхмерным вьюпортом, где ассетами можно манипулировать в пространстве трёх осей (X, Y, Z). Помимо рендеринга, 3D-редактор поддерживает множество актуальных функций.
Вот некоторые из них:
- PBR-материалы, то есть материалы с учётом физических свойств поверхности;
- различные типы затенения;
- помимо подхода с использованием текстур Metallic и Roughness, доступно ORM-текстурирование. Под ним подразумевается метод, при котором текстуры Ambient Occlusion, Metallic и Roughness объединены в одну карту. За каждым из свойств закреплён отдельный цветовой канал — красный, синий или зелёный;
- освещение в реальном времени;
- постобработка и спецэффекты (объёмный туман, частицы, анимированные шейдеры неба и так далее);
- базовые инструменты для создания примитивов, включая процедурную геометрию;
- физика в 3D: твёрдые тела (rigid bodies), коллизии, физика транспортных средств (аркадная), рэгдолл-система;
- импорт моделей в расширениях .glTF(2.0), .fbx (с версии 4.3 по умолчанию встроен импорт с помощью инструмента Ufbx Importer), .dae, .obj (для статических объектов);
- внутриигровые камеры с отображением в перспективе и в ортографическом режиме и с усечённым пространством;
- поддержка VR и AR.

Скриншот: Godot Engine / Godot Engine
Более подробно обо всех функциях для проектов в 3D можно узнать в официальной документации.
Преимущества и недостатки Godot Engine
Знание всех нюансов Godot поможет разработчику разобраться, отвечает ли движок его текущим запросам и требованиям для создания игры.
Преимущества Godot Engine
Простой и независимый клиент с поддержкой русского языка. Он не требует установки в операционную систему и быстро грузится, равно как и проекты в нём. Кроме того, у клиента относительно невысокие системные требования.
Прозрачные условия. Godot распространяется по лицензии MIT — это значит, что его можно использовать абсолютно бесплатно, в том числе иметь полный доступ к исходному коду движка, модифицировать его и создавать на нём коммерческие проекты.
Нет доплат за сервисы и лицензионных отчислений — и, вероятнее всего, в ближайшем будущем не произойдёт никаких изменений в этой политике, что порой характерно для коммерческих движков. Впрочем, пользователь может добровольно поддержать упомянутую выше Godot Foundation.
Кроссплатформенность. Помимо экспорта в Windows, macOS, Linux, Android, iOS, HTML5 и WebGL, с версии 4.0 запускать проект и вносить в него изменения можно с разных устройств, что обеспечивает комфортное тестирование.
Архитектура, построенная на узлах. Древовидная иерархия позволяет структурировать блоки с контентом и использовать модульный подход в сборке сложных сцен.
Редактор, в котором удобно работать как с 2D, так и с 3D. При этом движок предлагает разнообразный набор функций под самые разные игры — от пиксельного платформера до реалистичного симулятора-головоломки.

Скриншот: игра PVKK: Planetenverteidigungskanonenkommandant / Bippinbits
Поддержка расширений и модификаций. Помимо официального модуля GDExtention, позволяющего писать классы и скрипты для интеграции в движок, пользователь может создавать собственные расширения, без необходимости пересобирать само ядро.
Недостатки Godot Engine
Возможности 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 вполне справится с такой задачей. И шоурилы игр на этом движке полностью это подтверждают.