После четырёх месяцев разработки опубликован релиз свободного игрового движка Godot 4.1, подходящего для создания 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.
Основные изменения:
- В графическом интерфейсе появилась возможность отсоединения в отдельные плавающие окна документации и редакторов скриптов, включая редактор шейдеров, для перемещения их на другие экраны. Обеспечено запоминание раскладки окон интерфейса, что позволяет вернуться к тому же расположению окон после закрытия и повторного открытия редактора.
- Добавлена поддержка экспорта в интерфейс инспектирования типизированных массивов и связанных с ними наборов узлов.
- В менеджер проектов для упрощения навигации по большому числу проектов добавлены возможности привязки тегов к проектам и фильтрации проектов по тегам.
- В системе рендеринга переработана реализация завихрения частиц, используемая в играх для создания эффектов раскидывания элементов.
- Добавлены новые 3D-текстуры с визуальным шумом (NoiseTexture3D), позволяющие управлять плотностью объёмного тумана и делать его менее насыщенным в определённых местах, или имитировать ветер, воздействующий на частицы.
- Полностью переделан алгоритм избегания столкновений при использовании AI-навигации, который избавлен от привязки к одной поверхности и теперь может применяться как в 2D, так и в 3D. Предоставлена возможность назначения приоритетов и определения слоёв, определяющих кто кого должен избегать.
- Задействован основанный на быстрых хэшах алгоритм определения элементов дерева узлов, который позволил в несколько раз ускорить выполнение операций добавления и удаления узлов, наиболее важных для обеспечения высокой производительности сложных игр, активно манипулирующих узлами. Ценой данной оптимизации стало небольшое замедление редко используемых операций с узлами и повышение потребления памяти базовым классом Node примерно на 10%.
- Добавлена экспериментальная поддержка многопоточной обработки сцен.
Проведена работа по устранению проблем и ограничений, связанных с многопоточной загрузкой. В настройки узлов добавлены опции для выбора режима последовательной или параллельной обработки. - В бэкенде рендеринга на базе графического API Vulkan включено кэширование результатов компиляции графических конвейеров (pipeline), которое дополнило ранее доступное кэширование шейдеров.
- Предложено несколько способов решения проблемы с размещением модели задом-наперёд после импорта: изменение направлений передней и задней камер в редакторе и добавление в функцию look_at() флага для использования пространства модели в качестве ориентира для выбора направления.
- Включён по умолчанию режим сглаживания дельта-кадров (кадры, содержащие данные об изменениях относительно предыдущего кадра), позволяющий повысить плавность движений и игрового процесса.
- В языке сценариев GDScript реализована возможность создания статических переменных для совместного доступа к общем данным из нескольких экземпляров одного скрипта, что позволяет обойтись без использования ресурсов и автозагрузки. Для определения статической переменной следует использовать ключевое слово static перед определением переменной вначале скрипта.
- Переделана поддержка автоматической генерации документации для именованных классов. Добавлена возможность указания документирующих строк рядом с определением переменной или функции, а не в предыдущей строке.
- Проведена работа по доведению возможностей скриптов на C# до паритета с возможностями GDScript. Добавлена возможность определения типа узла, используемого в редакторе, через добавление атрибута “[GlobalClass]” в скрипт. Также добавлена поддержка атрибута “[Icon]” для привязки к глобальному классу своей пиктограммы.
- Продолжено развитие экспериментальной системы расширений (GDExtension), которые можно использовать для расширения возможностей движка без его пересборки и без внесения изменений в код. Возможности GDExtension приближены к функцилнальности
скриптов на GDScript и C#. Добавлена поддержка создания при помощи GDExtension узлов шейдера и плагинов для редактора. - Закрыто более 900 сообщений об ошибках, отправленных после выпуска Godot 4.0.