Godot, кроссплатформенный игровой движок с открытым исходным кодом, постепенно набирает популярность с момента своего первого стабильного выпуска в 2014 году. В связи с неизбежным выпуском Godot 4.0 многие разработчики игр с нетерпением ждут долгожданного выпуска бета-версии 15 сентября.
Какими будут новые возможности Godot 4.0? Какие будут отличия от Unity?
От нового API рендеринга и физического движка до новых узлов, функций GDScript и поддержки API .NET 6 — Godot 4.0 может решить многие проблемы прошлых версий.
Новый API рендеринга
Godot переходит с рендерера OpenGL на Vulkan. Это означает, что освещение в 3D-сценах будет выглядеть значительно лучше.
При сравнении большого количества вызовов отрисовки средство визуализации Vulkan лучше справляется с открытым миром и большим количеством объектов. Рендерер OpenGL, с другой стороны, имеет тенденцию нагружать ресурсы и создавать "узкие места".
Наряду с новым API рендеринга появляются новые узлы, которые добавляют больше деталей в 3D-сцены:
- Узел VoxelGI — это капитальный ремонт старой системы глобального освещения. Это позволяет получить более тонкое освещение в небольших и средних помещениях.
- Узел Signal Distance Field Illumination позволяет создавать большие открытые миры с лучшими тенями объектов, преломлением света и многим другим.
- Узел FogVolume позволяет разработчикам писать шейдеры для сложных деталей тумана и дымки.
Хотя это и не новый узел, внедрение шейдеров Sky позволяет использовать шейдеры для скайбокса, что приводит к динамическому позиционированию и обновлению в реальном времени.
Есть много мелких улучшений, таких как частицы на основе графического процессора, дополнения к сценариям шейдеров и новые методы оптимизации. Но самые значительные изменения стоит изучить подробнее.
Новая физика
При развертывании физики в 3D-сценах Godot исторически полагался на движок Bullet. До этого момента. Встречайте физический движок Godot!
Некоторые новые функции включают новые формы столкновения и повторную реализацию мягких тел. Это позволяет быстро создавать прототипы и реалистичнее манипулировать объектами. Кроме того, поддержка многопоточности означает больше оптимизации; все эти изменения сопровождаются меньшими затратами на производительность.
Новый узел CharacterBody, заменяющий KinematicBody, обеспечивает повышенную гибкость и дополнительные возможности. Исправление ошибок, связанных с дрожанием и странным поведением при движении, — это Godot-send. Результат? Более стабильные и последовательные модели движения — даже при странных формах столкновений или экстремальных картах высот.
Новая навигационная система полностью заменяет узловую систему на серверную, повышая удобство использования без ущерба для производительности.
Новые функции "качества жизни" в GDScript
Благодаря полной переработке в бета-версии GDScript стал быстрее. Кроме того, добавляются более широко применимые функции и общие улучшения:
- Теперь вы можете обращаться с функциями как с переменными и использовать анонимные функции.
- Общие улучшения синтаксиса позволяют создавать более согласованный код.
- Вы можете указать определенные типы для массивов, чтобы уменьшить количество ошибок.
- Ключевые слова await и super заменяют старый, менее понятный код в отношении времени и наследования.
Если вы работаете в команде или пересматриваете старый проект, вы обнаружите, что плохо названные переменные могут раздражать. Чтобы бороться с этим, скрипты теперь автоматически генерируют полезную документацию. При наведении указателя мыши на экспортированные переменные в Docker можно получить полезные описания переменных.
C# и поддержка .NET 6
Поддержка .NET 6 в основном завершается бета-версией. Если вы хотите придерживаться C# из своих предпочтений или производительности, есть много новых возможностей, которых стоит ожидать в новой версии.
При использовании .NET 6 по умолчанию используется C# 10. Новая зависимость от генераторов исходного кода означает, что если в вашем коде есть проблема, Godot выдаст ошибку во время компиляции, а не во время выполнения. Это сэкономит время, особенно если в игре есть ошибка.
Теперь вы можете объявлять сигналы ( как события C# ) для более согласованного кода сигналов. Активная разработка также направлена на написание GDExtension на C#. Одним из примеров является то, что классы C# регистрируются так же, как и встроенные классы. Это поможет улучшить поддержку узлов C#. Наконец, Godot 4.0 представит единую унифицированную загрузку, поэтому пользователям C# не нужно специально загружать версию Mono.
Godot 4.0 лучше, чем Unity?
Бета-версия — это всего лишь бета-версия, то есть она все еще нестабильна. Есть много ошибок, которые разработчики должны найти и исправить. Тем не менее, Godot постепенно становится более устоявшимся и приземленным движком с функциями Unity. Тем не менее, важно понимать, что, хотя Godot и Unity являются игровыми движками, они ориентированы на разные аудитории.
В последние годы Unity сосредоточилась на VFX и гиперреалистичных 3D-сценах. Тем временем, разработчики используют Godot для прототипирования и создания небольших, часто 2D-игр. Это не означает, что использование одного из движков ограничивает вас. Опыт работы с обоими движками полезен, поэтому вы действительно понимаете, какой из них лучше всего подходит для ваших нужд.
Хотя это сложно определить количественно, сообщество Godot — одна из его лучших особенностей. Вы найдете поддерживающих разработчиков, которые будут рады поделиться своими знаниями.
Будущее: что Godot 4.0 означает для разработчиков игр
Godot 4.0 интегрирует функции "качества жизни", отсутствующие в 3.5, а также привнесет желаемые функции из других движков.
Поскольку Godot 4.0 может привести к повышению производительности игр, в будущем он должен набрать обороты. Различные функции и улучшения могут быть интегрированы в проекты для их оптимизации или улучшения детализации мира.
Видя эти совершенно новые нововведения, можно предположить, что движок будет продолжать расти. Поэтому всякий раз, когда вы чувствуете желание участвовать в каламбурах Сэмюэля Беккета, помните, что первая версия Godot 4.0 Alpha была выпущена только 17 января 2022 года.
Статья - перевод