30.07.2021

Выпуск открытого игрового движка Godot 3.3

После 7 месяцев разработки опубликован выпуск свободного игрового движка Godot 3.3, подходящего для создания 2D- и 3D-игр. Движок поддерживает простой для изучения язык задания игровой логики, графическую среду для проектирования игр, систему развёртывания игр в один клик, широкие возможности анимации и симуляции физических процессов, встроенный отладчик и систему выявления узких мест в производительности. Код игрового движка, среды проектирования игр и сопутствующих средств разработки (физический движок, звуковой сервер, бэкенды 2D/3D рендеринга и т.п.) распространяются под лицензией MIT.

Исходные тексты движка были открыты в 2014 году студией OKAM, после десяти лет развития проприетарного продукта профессионального уровня, который использовался для создания и публикации многих игр для PC, игровых консолей и мобильных устройств. Движком поддерживаются все популярные стационарные и мобильные платформы (Linux, Windows, macOS, Wii, Nintendo 3DS, PlayStation 3, PS Vita, Android, iOS, BBX), а также разработка игр для Web. Готовые для запуска бинарные сборки сформированы для Linux, Windows и macOS.

В отдельной ветке развивается новый бэкенд рендеринга на базе графического API Vulkan, который будет предложен в следующем выпуске Godot 4.0, вместо предлагаемых ныне бэкендов рендеринга через OpenGL ES 3.0 и OpenGL 3.3 (поддержка OpenGL ES и OpenGL будет сохранена через обеспечение работы старого бэкенда OpenGL ES 2.0/OpenGL 2.1 поверх новой архитектуры рендеринга на базе Vulkan). Переход с Godot 3.x на Godot 4.0 потребует переработки приложений из-за нарушения совместимости на уровне API, но для ветки Godot 3.x будет обеспечен длительный цикл поддержки, срок которого будет зависеть от востребованности строго API пользователями.

Ветка Godot 3.3 полностью совместима с Godot 3.2 и продолжает развитие стабильных выпусков движка, для которых будет обеспечен длительный цикл поддержки. Изначально вместо Godot 3.3 планировалось выпустить обновление 3.2.4, но версии 3.2.x воспринимались пользователями как корректирующие, несмотря на портирование из ветки 4.0 новых возможностей, поэтому проект перешёл на классическую схему семантического версионирования. В частности, обновление третьей цифры теперь будет обозначать наличие только исправлений, второй — включение новой функциональности и первой — наличие изменений, влияющих на совместимость. Ветка 3.x.x будет сопровождаться параллельно с 4.x.x до тех пор, пока Godot 4.x не будет полностью стабилизирован и адаптирован для всего актуального оборудования.

Godot 3.3 примечателен добавлением следующих новшеств:

  • Подготовлен вариант редактора, работающий в web-браузере.
  • Добавлена возможность экспорта игр для платформы Android в формате AAB (Android App Bundle), в дополнение к пакетам APK. Формат AAB позволяет организовать загрузку только тех нативных библиотек, которые необходимы для работы на текущем устройстве (например, armeabi-v7a или arm64-v8a). Для платформы Android также реализована возможность встраивания в приложения элементов на базе движка Godot в форме субкомпонентов (subview), использующих часть окна. Также добавлена поддержка слепых областей экрана (скруглений и выемок под камеру), событий мыши и ввода с внешней клавиатуры.
  • Предложен новый API для сборки и распространения плагинов для платформы iOS, позволяющий вынести плагины (ARKit, GameCenter, InAppStore) в отдельный репозиторий и развивать их независимо от движка Godot. Ранее данный API был реализован для платформы Android.
  • Улучшены средства экспорта игр для Web (платформа HTML5). Для запускаемых в браузере игр добавлена поддержка многопоточности и скриптов GDNative, но из-за ограничений платформы HTML5 их реализация несовместима с вариантами для нативных игр. Кроме того, реализация потоков завязана на API SharedArrayBuffer, который доступен не во всех браузерах. Предоставлены три отдельных режима экспорта — Regular, Threads и GDNative. В многопоточном профиле дополнительно добавлена поддержка API AudioWorklet, позволяющая добиться более качественного вывода звука без блокировки основного потока. Значительно улучшена поддержка геймпадов и виртуальных клавиатур.
  • Добавлена поддержка сборки игр для нового оборудования Apple, оснащённого ARM-чипом M1. Добавлена поддержка прикрепления цифровых подписей для исполняемых файлов, генерируемых для macOS.
  • Из ветки 4.0 перенесён модернизированный API для организации многопоточности, в котором задействованы возможности стандарта C++14, повышена надёжность работы на разных платформах и проведена оптимизация производительности.
  • Из ветки 4.0 перенесена оптимизация, использующая структуру BVH (Bounding Volume Hierarchy) вместо метода Octree для динамического пространственного разделения при отрисовке. BVH теперь используется по умолчанию и решает многие проблемы с производительностью.
  • Задействована унифицированная реализация 2D-батчинга (Batching, оптимизация для снижения вызовов отрисовки за счёт учёта взаимного расположения объектов), которая может применяться как для OpenGL ES 3, так и для OpenGL ES 2. Сама оптимизация теперь охватывает больше объектов, включая линии и многоугольники.
  • Добавлен новый построить карт освещения (lightmapper), применяющий метод трассировки пути и поддерживающий подавление шумов при помощи библиотеки oidn (Open Image Denoise). Новый lightmapper использует для вычислений CPU и решает большую часть проблем с качеством, свойственных старому обработчику. Дополнительно подготовлен вариант lightmapper, использующий GPU, но он завязан на API Vulkan и появится только в ветке 4.0.
  • Из ветки Godot 4.0 перенесены многие улучшения, связанные с рендерингом, такие как быстрый программный скининг, оптимизированные трансформации скрытых 3D-объектов, настраиваемое число источников света для каждого объекта и улучшенная отрисовка теней при помощи PCF-фильтра.
    [embedded content]
  • В движке симуляции физических процессов улучшена обработка различных видов столкновений.
  • В редактор добавлены полноценные возможности для копирования и вставки узлов, допускающие перенос между разными сценами.
  • Улучшен режим инспектирования, в котором обеспечено визуальное выделение субресурсов.
  • Добавлена поддержка определения настроек по умолчанию для импортируемых ресурсов.
  • Проведена работа по повышению удобства работы в 3D-редакторе, в том числе добавлена бесконечная динамическая трёхмерная сетка и значительно улучшена реализация вращения и выделения при помощи гизмо
    (указатель осей координат).
  • В средства групповой работы добавлена защита от внесения изменений в сцены, уже открытые другими пользователями (выводится предупреждение, если при сохранении обнаружены более новые версии открытых файлов).
  • Улучшен импорт из файлов в формате FBX.
  • Добавлен плагин OpenXR с поддержкой одноимённого стандарта для создания приложений виртуальной и дополненной реальности. В порт HTML5 для создания игр на базе технологий виртуальной реальности добавлена поддержка спецификации WebXR.

    [embedded content]

  • Добавлена поддержка загрузки и воспроизведения звука в формате MP3 (ранее не поддерживался из-за патентов).
  • В GraphEdit добавлена поддержка мини-эскиза всей структуры (minimap), отображаемого в нижнем правом углу и позволяющего сразу охватить взглядом все узлы.

Источник.