Выпуск открытого игрового движка Godot 3.2
После 10 месяцев разработки опубликован выпуск свободного игрового движка Godot 3.2, подходящего для создания 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.2 на Godot 4.0 потребует переработки приложений из-за нарушения совместимости на уровне API, но для ветки Godot 3.2 будет обеспечен длительный цикл поддержки, срок которого будет зависеть от востребованности данной ветки пользователями. В промежуточные выпуски 3.2.x также не исключается портирование не влияющих на стабильность новшеств из ветки 4.x, таких как поддержка AOT-компиляции, ARCore, DTLS и платформы iOS для проектов на C#.
Основные новшества Godot 3.2:
- Добавлена поддержка шлемов виртуальной реальности Oculus Quest, реализованная на базе плагина для платформы Android. Для разработки систем дополненной реальности для iOS добавлена поддержка фреймворка ARKit. Для Android развивается поддержка фреймворка ARCore, но она пока не готова и будет включена в одном из промежуточных выпусков 3.3.x;
- Переработан интерфейс визуального редактора шейдеров. Добавлены новые узлы для создания более продвинутых шейдеров. Для шейдеров, реализуемых классическими скриптами, добавлена поддержка констант, массивов и модификаторов "varying". Многие шейдеры, специфичные для бэкенда OpenGL ES 3.0, портированы для OpenGL ES 2;
- Поддержка физически корректного рендеринга материалов (PBR) синхронизирована с возможностями новых движков PBR-рендеринга, таких как Blender Eevee и Substance Designer, для обеспечения сходного отображения сцены в Godot и используемых пакетах 3D-моделирования;
- Проведена оптимизация различных настроек рендеринга для повышения производительности и увеличения качества картинки. В бэкенд GLES3 перенесены многие возможности из GLES3, включая поддержку метода сглаживания MSAA (Multisample anti-aliasing) и различные эффекты постпроцессинга (свечение, DOF-размытие и BCS);
- Добавлена полная поддержка импорта 3D-сцен и моделей в формате glTF 2.0 (GL Transmission Format) и добавлена начальная поддержка формта FBX, которая позволяет импортировать сцены с анимацией из Blender, но пока несовместима с Maya и 3ds Max. Добавлена поддержка скинов каркасов при импорте сцен через glTF 2.0 и FBX, позволяющая использовать один каркас в нескольких мешах. Работа по улучшению и стабилизации поддержки glTF 2.0 выполнена совместно с сообществом разработчиков пакета Blender, в котором улучшенная поддержка glTF 2.0 будет предложена в выпуске 2.83;
- Сетевые возможности движка расширены поддержкой протоколов WebRTC и WebSocket, а также возможностью использовать UDP в режиме multicast. Добавлен API для использования криптографических хэшей и работы с сертификатами. Добавлен графический интерфейс для профилирования сетевой активности. Началась работа по созданию порта Godot для WebAssembly/HTML5, который позволит запускать редактор в браузере через Web;
- Переработан плагин для платформы Android и система экспорта. Теперь для формирования пакетов для Android предлагается две отдельные системы экспорта: одна с предварительно собранным движком, а вторая позволяющая формировать собственные сборки на основе кастомизированных вариантов движка. Настройку собственных сборок можно производить на уровне плагина для Android, без ручной правки исходного шаблона;
- В редактор добавлена поддержка выборочного отключения отдельных возможностей, например, можно убрать кнопки для вызова 3D-редактора, редактора скриптов, библиотеки ресурсов, узлов, панелей, свойств и других элементов, которые не требуются разработчику (скрытие лишнего позволяет заметно упростить интерфейс);
- Добавлена начальная поддержка интеграции с системами управления исходным кодом и реализован плагин для поддержки Git в редакторе;
Предоставлена возможность переопределения камеры для запущенной игры через окно в редакторе, что даёт возможность оценки различных режимов в игре (свободный обзор, инспектирование узлов и т.п.);
- Предложена реализация сервера LSP (Language Server Protocol) для языка GDScript, позволяющая передавать информацию о семантике GDScript и правилах автодополнения кода во внешние редакторы, такие как VS Code plugin и Atom;
- Внесены многочисленные улучшения во встроенный редактор скриптов GDScript: добавлена возможность установки закладок на позиции в коде, реализована панель minimap (для быстрого обзора всего кода), улучшено автодополнение ввода, расширены возможности режима визуального проектирования скриптов;
- Добавлен режим создания псевдо-3D игр, позволяющий использовать эффект глубины в двухмерных играх через определение нескольких слоёв, формирующих фиктивную перспективу;
- В 2D-редактор возвращена поддержка атласов текстур;
- В GUI модернизирован процесс расстановки якорей и границ областей;
- Для текстовых данных добавлена возможность наблюдения на лету за изменением параметров эффектов, обеспечена поддержка тегов BBCode и возможность определения собственных эффектов;
- Добавлен генератор звуковых потоков, позволяющий создавать звуковые волны на основе отдельных кадров и спектрального анализатора;
- При помощи библиотеки V-HACD реализована возможность разложения вогнутых мешей на точные и упрощённые выпуклые части. Данная возможность значительно упрощает генерацию форм столкновений для существующих 3D-мешей;
- Реализована возможность разработки игровой логики на языке C# с использованием Mono для платформ Android и WebAssembly (ранее C# поддерживался для Linux, Windows и macOS). На базе Mono 6.6 реализована поддержка C# 8.0. Для C# также реализована начальная поддержка упреждающей компиляции (AOT, ahead-of-time), которая добавлена в кодовую базу, но пока не активирована (для WebAssembly пока применяется интерпретатор). Для редактирования кода C# реализована возможность подключения внешних редакторов, таких как MonoDevelop, Visual Studio for Mac и Jetbrains Rider;
- Заметно расширена и улучшена документация. Опубликован частичный перевод документации на русский язык (переведено вводное руководство по началу работы).