## Godot Engine - кроссплатформенный игровой движок Godot Engine — открытый кроссплатформенный игровой движок для разработки 2D/3D-видеоигр и приложений для ПК, мобильных устройств, веб-платформ. Адаптирован ко всем распространенным операционным системам, включая Linux, macOS, Windows, Android и iOS. ![](godot.png) Godot разработали в 2007 году два программиста из Аргентины — Хуан Линецкий и Ариэл Манзур. Первоначально его использовали несколько игровых студий Латинской Америки. В 2014 году разработчики выложили движок на GitHub по лицензии MIT. В декабре того же года вышла первая стабильная версия 1.0. С этого момента началось развитие проекта и его распространение в других странах. ## Возможности Godot Встроенный функционал «Годо» позволяет разработчику с нуля создать полноценную игру или приложение без использования внешних инструментов. > Работа с двух и трехмерной графикой Поддержка эффектов отражения, динамических теней, статичного и динамичного глобального освещения, полноэкранной постобработки (засветки, глубины резкости, гамма-коррекции и т.д.). > Поддержка реалистичной физики Системы частиц (дыма, тумана, пара, взрывов и т.д.), свойств динамичных и статичных тел, столкновений и разрушений, трассировки лучей и других физических процессов. > Работа с анимацией Опции создания скелетной анимации, наложения объектов, кат-сцен в реальном времени. > Сетка навигации (Navigation mesh) Алгоритм нахождения игровым агентом оптимального маршрута в сложном пространстве. >Поддержка мультимедиа Воспроизведение аудио и видеофайлов с помощью подключаемых кодеков Theora, OGG Vorbis, WAV. > AR/VR Встроенный мобильный интерфейс дополненной и виртуальной реальности с использованием 3DOF-датчиков на телефоне. > Подключение устройств ввода Клавиатуры, мыши, геймпада и сенсорного экрана. > Процедурная генерация Автоматическое создание внутриигрового контента (окружения, NPC, объектов, оружия и т.д.) с помощью алгоритмов. > Поддержка языков «Годо» имеет свой собственный высокоуровневый язык программирования GDScript, также можно использовать С# и C++. Возможности Godot можно расширить с помощью плагинов и сторонних приложений. Например, движок позволяет импортировать сцены из Blender с настроенным освещением, камерами, физикой столкновений, анимированными персонажами и т.д. Также есть возможность подключать разработанные самостоятельно или сторонние плагины виртуальной/дополненной реальности, кодеки для воспроизведения видео и аудио, визуальные редакторы. ## Ключевые концепции Godot Работа движка Godot основана на представлении игры как дерева узлов, которые группируются в сцены и взаимодействуют друг с другом с помощью сигналов и других способов. > Узлы Минимальные функциональные единицы игровой архитектуры, «кирпичики», из которых собирается вся игра. Каждый узел может выполнять несколько специализированных функций и имеет следующие атрибуты: ``` • Уникальное наименование. • Изменяемые свойства. • Способность расширяться и получать новые функции. • Обратную связь для обработки кадров. • Способность присоединяться к другим узлам в качестве дочернего. ``` Узлы различаются по своему назначению. Одни показывают изображение, другие отображают 3D-модели, третьи воспроизводят звук. Подключая один узел к другому, можно получать дерево узлов, обладающее более сложным функционалом. На этом строится основной принцип разработки игры. > Сцены Это дерево иерархически соединенных друг с другом узлов. Имеет следующие атрибуты: ``` • Один корневой узел, к которому, подобно ветвям, подсоединяются дочерние. • Возможность сохранения на диск и загрузки обратно в редактор. • Возможность создания экземпляров (реплик). • Возможность подгружать одни сцены в другие в runtime. ``` Сценами могут быть персонажи, оружие, локации, целые уровни и другие объекты игрового мира, пользовательский интерфейс в приложениях и т.д. Они обладают двумя важными свойствами: ``` • Выступают в качестве префабов — «заготовок», задающих изначальную структуру и свойства для экземпляров. • Вкладываются друг в друга — например, персонажа можно разместить на уровне, а в руки ему дать оружие или магический посох. ``` > Дерево сцен Это совокупность иерархически связанных сцен. Создаваемый в Godot проект (игры, приложение) — последовательность их выполнения. А сам движок — редактор, в котором разработчик продукта определяет порядок и способ исполнения взаимосвязанных сцен. При запуске проекта сначала инициируется основная (корневая) сцена, которая последовательно запускает остальные. > Сигналы Это сообщения, отправляемые узлами, когда с ними совершается какое-либо действие. Например, когда пользователь кликает на кнопку, она испускает сигнал. Подключенные узлы реагируют на него и вызывают ответную функцию. При этом узлы, взаимодействующие с помощью сигналов, не ссылаются друг на друга. Это ограничивает их связанность и делает код более гибким. Вместо программирования по строгим шаблонам Godot предлагает разработчику более гибкий, интуитивно понятный метод создания игр и приложений. Но для использования потенциала движка потребуется знать основы объектно-ориентированного программирования. ## Преимущества Godot > Простота Godot — сравнительно простой в освоении и использовании игровой движок. Работать с ним могут как опытные разработчики, так и начинающие энтузиасты. Встроенный язык программирования GDScript имеет почти такой же синтаксис, что и Python, и прост для изучения. Интуитивно понятный редактор, возможность интеграции со сторонними плагинами и приложениями также снижают порог вхождения. Дополнительные функции, шаблоны, плагины и прочий контент можно скачивать по мере необходимости, не перегружая компьютер. Особенность «Годо» — одинаковый уровень производительности движка и созданных с его помощью игр. > Поддержка сторонних языков В ядро Godot уже встроена возможность работы на GDScript, C# и C++. Также модуль GDNative позволяет привязать к ядру движка код, написанный на других языках программирования. С помощью системы VisualScript программировать можно без кода, работая на уровне узлов. Это подходящий вариант для новичков не только в геймдеве, но и в программировании в целом. > Гибкость Система деревьев узлов и сцен позволяет разрабатывать игры на интуитивно понятном уровне. Хотя тем, кто работал с другими игровыми движками, подход кажется непривычным. > Независимое 2D и 3D Godot создавался как двухмерный игровой движок, 3D-редактирование появилось позже. Разработчики оставили для каждого режима свой редактор, а не стали использовать псевдодвухмерный. Возможность работы с пиксельным 2D упрощает разработку и оптимизацию двухмерных игр. Это ценят разработчики небольших инди-проектов. > Открытый исходный код Godot — бесплатное программное обеспечение, распространяемое по лицензии MIT. Созданные игры и приложения являются собственностью разработчика. Кроме того, открытость движка способствует появлению множества расширений и инструментов. При отсутствии функции в ядре «Годо» ее можно получить, скачав подходящее дополнение с официального сайта или ресурсов, входящих в экосистему. > Кроссплатформенность Godot существует в версиях для Windows, Mac, Linux, Android, iOS. Также есть поддержка универсальной платформы UWP от Microsoft, на которой можно разрабатывать приложения для Windows 10, Windows Mobile, Xbox One и виртуальной среды HoloLens без необходимости переписывать код под каждую ОС. > Обширная документация По «Годо» есть множество информационных материалов (мануалов, справочников, статей и т.д.) от официальных разработчиков, сторонних профессионалов и энтузиастов-любителей. На любой вопрос по работе с движком можно найти ответ в сообществе. ## Недостатки Godot > Недостаточная проработка 3D По этому параметру Godot уступает конкурентам вроде Unity или Unreal Engine. «Годо» развивался как 2D-движок, трехмерный редактор был добавлен позже. В последних версиях работа с 3D значительно улучшена. > Сложности с разработкой консольных приложений Разработчики отмечают проблемы при создании или портировании «Годо»-игр на консоли. Это требует использования сторонних инструментов и большого опыта. Одна из возможных причин проблемы — закрытый характер консольных инструментов, что противоречит открытости самого движка. ## Литература [Godot Engine — открытый кроссплатформенный игровой движок для разработки 2D/3D-видеоигр и приложений для ПК, мобильных устройств, веб-платформ.](https://blog.skillfactory.ru/glossary/godot-engine/)