После пяти месяцев разработки опубликован релиз свободного игрового движка Godot 4.2, подходящего для создания 2D- и 3D-игр. Движок поддерживает простой для изучения язык задания игровой логики, графическую среду для проектирования игр, систему развёртывания игр в один клик, широкие возможности анимации и симуляции физических процессов, встроенный отладчик и систему выявления узких мест в производительности. Код игрового движка, среды проектирования игр и сопутствующих средств разработки (физический движок, звуковой сервер, бэкенды 2D/3D рендеринга и т.п.) распространяются под лицензией MIT.
Исходные тексты движка были открыты в 2014 году студией OKAM, после десяти лет развития проприетарного продукта профессионального уровня, который использовался для создания и публикации многих игр для PC, игровых консолей и мобильных устройств. Движком поддерживаются все популярные стационарные и мобильные платформы (Linux, Windows, macOS, Wii, Nintendo 3DS, PlayStation 3, PS Vita, Android, iOS, BBX), а также разработка игр для Web. Готовые для запуска бинарные сборки сформированы для Linux, Android, Windows и macOS.
Основные изменения:
- Для разработчиков 2D-игр добавлена поддержка принудительного целочисленного масштабирования, позволяющая подучить квадратную пиксельную сетку, независимо от фактического соотношения сторон. Предоставлена возможность получения барицентрических координат нормали из точек пересечения объекта с лучом. Добавлены методы Rotate_toward и Angle_difference для корректной обработки вращения и углов. В узлы Line2D добавлено свойство “closed” для создания замкнутых линий с непрерывным заполнением.
- Проведена работа по повышению надёжности системы анимации. Переработаны и унифицированы узлы AnimationPlayer и AnimationTree, общие части которых выделены в промежуточный класс AnimationMixer. Добавлена опция для детерминированного смешивания. В предпросмотр анимации добавлен режим кальки (onion skinning), включающий показ полупрозрачных наложений с прошлыми и следующими кадрами анимации.
- Возможности “запекания” навигационной сетки (baking, преобразование в статичную форму) для 2D приближены к возможностям, ранее доступным в 3D-навигации, например, для 2D-сеток реализована поддержка работы с физическими телами, экземплярами полигональных сеток, простыми многоугольниками и тайловыми картами (tilemap). В серверы 2D- и 3D-навигации добавлена поддержка многопоточного запекания мэшей.
- Проведён рефакторинг кода для работы с тайлами и тайловыми картами. Оптимизированы операции группировки блоков и сортировки по оси Y, позволившие значительно сократить время обновления тайлов. Выполнена работа по повышению удобства создания тайловых карт и их использования. Добавлен инструмент для переворота и поворота тайлов при их размещении. Улучшены инструменты для редактирования многоугольников и тайловых сцен.
- В редакторе сценариев GDScript появилась возможность создания именованных областей кода для сворачивания блоков во время редактирования и упрощения навигации. В отладчике скриптов добавлена полная поддержка многопоточного кода, стека исполнения и точек останова. В скриптах на базе C#/.NET реализована поддержка платформ Android (требуется .NET 7.0+) и iOS (требуется .NET 8.0). В скриптах GDScript расширена поддержка статически типизированного кода, добавлена поддержка строковых литералов r-string (raw string), расширены возможности оператора match.
- В 3D viewport улучшена поддержка управления трансформацией в стиле Blender, используя мышь и горячие клавиши. Показ расширенной визуальной информации в 3D viewport теперь осуществляется только для выбранных объектов. Добавлены дополнительные индикаторы для таких элементов, как декали и объём тумана. Улучшена работа с гизмо (gizmo) – любую сторону объёмных форм теперь можно расширять по-отдельности в окне просмотра.
- Улучшены контекстное меню и всплывающие подсказки в панелях “Инспектирование” и “Сигналы”. В редактор тем добавлены подсказки с описанием свойств. В панели работы с файловой системой появилась возможность наглядного выделения каталогов через назначения им разных цветов. Переработан интерфейс редактора ресурсов градиентов. В редакторе областей текстур унифицирована работа со всеми поддерживаемыми ресурсами, включая стили и атласы.
- В библиотеке ассетов улучшен вывод результатов поиска и добавлена возможность выбора иного каталога для установки дополнения или ресурса.
- В менеджере проектов переработано размещение основных элементов управления и модернизирован интерфейс импорта проекта.
- Расширены возможности по разработке плагинов к редактору. Обеспечен доступ ко всей функциональности редактора через класс EditorInterface.
Реализованы удобные методы для прямого доступа к 2D- и 3D-вьюпортам. Добавлена возможность вывода диалога с предупреждением о несохранённых изменениях. - Продолжено развитие экспериментальной системы расширений GDExtension, позволяющей использовать низкоуровневые языки, такие как C++, в качестве языков создания скриптов для игр, без пересборки движка и без внесения изменений в код. Добавлена возможность использования GDExtensions при экспорте в Web.
- В интерфейсе пользователя изменено управление фокусом. Реализована возможность передачи фокуса на отдельные вкладки в панели вкладок, в том числе при навигации с использованием клавиатуры. В узлы Control добавлен метод для поиска следующего соседнего фокусируемого элемента.
Значительно переработаны узлы построения графов (GraphEdit и GraphNode). Расширены возможности по настройке панели инструментов основного узла GraphEdit. - Добавлена возможность изменения типа импорта ассетов на лету с автоматическим обновлением сцен и ресурсов, не требующим перезапуска редактора. Расширены доступные параметры импорта и предоставлена возможность изменения физических свойств импортируемых объектов, а также параметров теней и видимости. Добавлена возможность предпросмотра анимации в диалоговом окне импорта. Расширена поддержка импорта ассетов из Blender в формате GLTF. Добавлена поддержка импорта изображений в формате KTX.
- Внесены оптимизации, нацеленные на повышение производительности рендеринга. Для ускорения работы на мобильных устройствах осуществлено разделение растровых барьеров на вершинные и фрагментные компоненты.
Ускорена генерация зашумлённых текстур. Добавлен предварительный проход для вычисления глубины. Сокращено время загрузки и компиляции шейдеров. Оптимизировано хранение полигональных сеток в памяти. Добавлена поддержка сжатия полигональных сеток для сокращения пропускной способности при их передаче. - Добавлена возможность создания своих текстурных объектов (пример использования вычислительных шейдеров для создания текстуры с эффектом воды).
- Добавлен API для вызова кода в потоке рендеринга, что может потребоваться, например, когда нужно синхронизировать вычислительный шейдер с рендерингом.
- Добавлена поддержка версии 2.2 технологии суперсэмплинга AMD FSR (FidelityFX Super Resolution), использующей алгоритмы пространственного масштабирования и реконструкции деталей для снижения потери качества изображения при увеличении масштаба и преобразования в более высокое разрешение.
- Предложен новый подавитель шумов JNLM, использующий карты освещения (lightmapper) и вычислительные шейдеры. JNLM значительно быстрее ранее применявшейся библиотеки устранения шумов OIDN (Open Image Denoise), но в некоторых ситуациях уступает по качеству.
- В методы рендеринга Forward+ и Mobile добавлена поддержка 2D-отрисовки в расширенном динамическом диапазоне яркости (HDR), позволяющей реализовать в 2D-играх некоторые 3D-эффекты, такие как свечение. В методе рендеринга Compatibility добавлена поддержка трёхмерных теней.
- Для macOS и Windows предложен новый драйвер OpenGL-рендеринга, использующий прослойку ANGLE, транслирующую вызовы OpenGL в API Direct3D 11 и Metal.
- Система симуляции частиц переработана для упрощения сопровождения и расширения управления движением частиц. Например, теперь можно анимировать и наследовать скорость движения, а также изменять число испускаемых частиц. Добавлен инструмент для преобразования кода генерации частиц, использующего CPU, на эквивалентный код, использующий GPU.
- Добавлена поддержка использования родных для Linux, macOS и Windows диалогов выбора файлов, а также возможность копирования и вставки изображений через буфер обмена.
- Переработана архитектура Godot для платформы Android, которая избавлена от привязки к компоненту Android Fragment, что позволило сократить время запуска приложений и игр, и реализовать возможность работы с несколькими окнами.
- Налажено формирование официальных Linux-сборок редактора Godot для 32- и 64-разрядных платформ ARM.