Разработчики выпустили релиз опенсорсного игрового движка Godot 4.0 для создания 2D- и 3D-игр. Он поддерживает язык задания игровой логики, графическую среду для проектирования игр, систему развёртывания в один клик, анимацию и симуляцию физических процессов, а также встроенный отладчик.
![](https://habrastorage.org/getpro/habr/upload_files/194/385/043/194385043a44c40230d0a64921edf81c.jpg)
Код игрового движка распространяются под открытой лицензией MIT. Он поддерживает стационарные и мобильные платформы (Linux, Windows, macOS, Wii, Nintendo 3DS, PlayStation 3, PS Vita, Android, iOS, BBX), а также веб-разработку. Готовые для запуска бинарные сборки сформированы для Linux, Android, Windows и macOS.
Основные изменения в Godot 4.0 включают:
два новых бэкенда рендеринга (кластеризованный и мобильный) на базе графического API Vulkan. Для старых и маломощных устройств интегрирован бэкенд обеспечения совместимости на базе OpenGL. Для динамической отрисовки с более низким разрешением появилась технология суперсэмплинга AMD FSR (FidelityFX Super Resolution). Реализован движок рендеринга на базе Direct3D 12;
![](https://habrastorage.org/getpro/habr/upload_files/005/d8d/7e9/005d8d7e9e266c09db44fa1892b3f372.png)
возможность работы с интерфейсом в многооконном режиме;
![](https://habrastorage.org/getpro/habr/upload_files/d6c/6a1/718/d6c6a17185bda7baf8bd90ede417c76e.png)
новый редактор интерфейсов пользователя и виджет визуального проектирования;
![](https://habrastorage.org/getpro/habr/upload_files/8c8/256/31a/8c825631a752839d51e6d78902b2abe2.png)
новый редактор тем оформления;
обновлённую систему управления освещением и тенями с технологией глобального освещения SDFGI (Signed Distance Field Global Illumination);
![](https://habrastorage.org/getpro/habr/upload_files/b85/042/a3f/b85042a3f70e46d7db5e7ed77f85a95b.png)
узел VoxelGI для наполнения сцены отражённым светом вместо GIProbe. Для маломощного оборудования рендеринг доступен при помощи карт освещения;
![](https://habrastorage.org/getpro/habr/upload_files/478/816/e76/478816e760d9069aec292c85d0cefac5.png)
автоматическое окклюзивное обрезание (occlusion culling), динамически определяющее и удаляющее модели, скрытые за другими поверхностями;
![](https://habrastorage.org/getpro/habr/upload_files/32c/8ef/8bf/32c8ef8bfb435d60da327e9a82347262.png)
режим SSIL (Screen Space Indirect Lighting) для повышения качества рендеринга на высокопроизводительном оборудовании за счёт улучшения обработки тёмных областей и непрямого освещения. Дополнительные настройки имитации рассеянного непрямого освещения при помощи техники SSAO (Screen Space Ambient Occlusion) позволяют выбирать уровень влияния прямого света;
реалистичные единицы освещённости, чтобы корректировать интенсивность света и использовать для управления яркостью финальной сцены штатные настройки камеры;
новые инструменты для редактирования уровней для двумерных игр. Добавлен новый редактор тайловых карт (tilemap) с поддержкой слоёв, автозаполнением ландшафта, рандомизированной расстановки и гибким выделением объектов. Унифицирована работа с тайловыми картами и наборами фрагментов для построения карты (tileset), появилось автоматическое расширение фрагментов в наборе для исключения пробелов, добавлена новая функция расстановки объектов на сцене;
возможность использования групп холста при 2D-отрисовке. Добавлено свойство Clip Children, позволяющее использовать любой 2D-элемент в качестве маски. Метод сглаживания MSAA (Multisample Anti-Aliasing) внедрён для повышения качества изображений и создания более гладких краев;
![](https://habrastorage.org/getpro/habr/upload_files/efe/da6/99c/efeda699c15db222408af3257ee22025.png)
улучшенную работу с освещением и тенями в 2D-играх и повышение производительности при использовании нескольких источников света. Появилась возможность имитации трёхмерности через изменение уровня освещения на картах нормалей;
![](https://habrastorage.org/getpro/habr/upload_files/a6a/7ee/83d/a6a7ee83d545704e7fca29be2ff33c12.png)
эффект объёмного тумана с техникой временной репроекции для достижения реалистичного вида и высокой производительности;
![](https://habrastorage.org/getpro/habr/upload_files/30b/1d7/339/30b1d733951350976621fb8f3ed27ea3.png)
шейдеры облаков, позволяющие динамически генерировать их в режиме реального времени;
![](https://habrastorage.org/getpro/habr/upload_files/947/61b/52b/94761b52b96c466ae1188e7ef3940c97.png)
поддержку метода проецирования материала на поверхность;
эффекты на базе частиц, использующие GPU и поддерживающие аттракторы, столкновения, шлейфы и излучатели;
новые возможности интерфейса для визуального редактирования шейдеров;
расширение языка шейдеров, где появилась поддержка структур, макросов препроцессора, подстановки шейдеров, унифицированных массивов и использования "varying" для передачи данных из обработчика фрагмента в обработчик освещения;
возможность применения вычислительных шейдеров, использующих GPU для ускорения алгоритмов;
улучшенную систему статической типизации в языке сценариев GDScript, добавление нового синтаксиса определения свойств, предложены ключевые слова await и super, добавлены операции map/reduce, реализована новая система аннотаций, появилась возможность использования unicode-символов в именах переменных и названиях функций. Появился инструмент для автоматической генерации документации. Повышена производительность и стабильность GDScript runtime. Появилась возможность показа сразу нескольких ошибок и добавлены новые предупреждения для типовых проблем;
новые возможности разработки игровой логики на языке C# с поддержкой платформы .NET 6 и языка C# 10. Для скалярных значений задействованы 64-разрядные типы. Многие API переведены с типов int и float на long и double. Появилась возможность определения сигналов в форме событий C#. Добавлена возможность разработки расширений GDExtensions на C#;
экспериментальная поддержка расширений (GDExtension) для увеличения возможностей движка без его пересборки и без внесения изменений в код;
собственный движок симуляции физических процессов Godot Physics, оптимизированный для решения задач игр;
новую систему отрисовки текста, предоставляющая с большим контролем за его обрезкой и переносом;
инструменты для локализации и работы над переводом;
отдельный диалог для импорта 2D- и 3D-ресурсов с предпросмотром и изменением настроек импортируемой сцены, материалов и физических свойств;
![](https://habrastorage.org/getpro/habr/upload_files/b9b/875/b01/b9b875b01a7d448a3155ef01d24ddc5f.png)
новые виджеты редактора, такие как панель для отката изменений и новый диалог выбора цвета и обновления палитры;
интерфейс инспектирования, панель управления сценой и редактор скриптов с улучшенной подсветкой синтаксиса, возможностью отображения нескольких курсоров, средствами для редактирования форматов JSON и YAML;
новые возможности редактора анимации с поддержкой смешивания фигур и процессами на базе кривой Безье. В коде для 3D-анимации реализована поддержка сжатия для сокращения потребления памяти и расширены возможности для создания сложных анимаций;
![](https://habrastorage.org/getpro/habr/upload_files/06f/2be/e00/06f2bee003636d3b0cd2e76a681084b5.png)
режим создания фильмов с покадровым рендерингом сцены с максимальным качеством для создания заставок и записи видео;
расширенную поддержку 3D-шлемов и платформ виртуальной реальности. В основной состав движка встроена поддержка стандарта OpenXR, в Windows и Linux обеспечена поддержка SteamVR, Oculus и Monado;
улучшенную стабильность подсистемы для организации сетевой игры и упрощённый процесс разработки многопользовательских игр;
новые возможности звуковой системы с поддержкой полифонии, API для синтеза речи и возможностью зацикливания звука;
возможность запуска интерфейса Godot на Android-планшетах и в браузере;
![](https://habrastorage.org/getpro/habr/upload_files/243/f11/bec/243f11bec726f8f365e3eea23a483480.png)
новую систему сборки игр для различных архитектур CPU. Теперь можно выполнить сборку для Raspberry Pi, Microsoft Volterra, Surface Pro X, Pine Phone, VisionFive, ARM Chromebook и Asahi Linux;
изменения в API, которые нарушают совместимость. Переход с Godot 3.x на Godot 4.0 потребует переработки приложений, но для ветки Godot 3.x обеспечен длительный цикл поддержки.