Релиз Unity 2023.2 Tech Stream
November 21, 2023 . 10 минут на чтение статьиUnity 2023.2 Tech Stream уже готов к загрузке. Это последний релиз в цикле разработки 2023 года, и поэтому в нем пытаются успеть что-то исправить.
Разработчики осознают проблему, что не всем из названия сборок ясно, какую версию нужно использовать. Как и было анонсировано в Unite 2023 Keynote, лаконичность старых наименований возвращается: не будет больше версии Unity 2023 LTS, она станет называться Unity 6. Все релизы 2023 года, начиная с 2023.1 (июльский релиз) и вплоть до следующей LTS, будут называться как назывались — но только вплоть до появления Unity 6.
Мы скоро должны увидеть, как Unity переползает на новую схему наименований. 2023.2 Tech Stream сохранит своё имя, чтобы к нему всегда было легко вернуться. В Unity подчеркивают, что сборки Tech Stream полностью готовы и поддерживаются для использования в продакшене, вплоть до выпуска следующего большого релиза, и в этом можно не сомневаться. Тем не менее, они советуют бэкапить свои проекты перед обновлением на свежую версию, и внимательно читать гайды по миграции.
Чтобы приоткрыть завесу тайны, можно поглядеть на продуктовую часть презентации на Unite 2023, в которой разработчики обсуждают продвижение в сторону улучшения производительности графики, упрощения создания мультиплеера. Их волную возможности, которые даст в будущем использование ИИ, и они наются на стабильную поддержку всех платформ, включая веб на мобилках и XR.
В этой статье будет немного подробностей, но есть и другой путь — самостоятельно прочитать release notes. Кроме того, разработчики жаждут нашего фидбека — ведь, согласно легенде, именно на него основе они продолжают улучшать Unity Editor.
Рендеринг: быстрее, качественней, масштабней!
В 2023.2 появилось несколько кросс-платформенных улучшений производительности освещения, улучшенные атмосферные эффекты для High Definition Render Pipeline (HDRP) и новые продвинутые воркфлоу для VFX Graph, которые помогут художникам поднять реализм на новый уровень.
Производительность Adaptive Probe Volumes
Adaptive Probe Volumes (APV) сильно ускорились в рантайме и позволяют проходить цикл разработки быстрее. В особенности, для Universal Render Pipeline (URP) на мобилках.
Добавление стриминга с диска уменьшает количество тормозов. Пулинга CPU хорошо оптимизирован, что позволяет обрабатывать все пробы даже в очень больших сценах.
В этой статье будем называть "probes" мерзким словом "пробы", потому что правильное слово "зонды" не так часто употребляют в разговорной русской речи, предпочитая кальку с английского. Олсо, я предупредил.
Скрин: на HDRP-ассетах появилась опция Enable Disk Streaming
Раньше APV поддерживали только непрямое освещение с пиксельным контролем качества. Это плохая идея для множества слабых мобильных говноустройств, которые начинали безбожно тормозить и тротлить. Используя per-vertex quality settings можно устанавливать уровни качества непрямого освещения от световых проб, позволяя нормально обрабатывать на мобилках залитые светом области.
Стабильный релиз GPU Lightmapper
Возможность полноценно использовать GPU Lightmapper — огромный шаг вперед. Он позволяет моментально выпекать световые карты и пробы, которые слишком сложны для CPU Lightmapper. По сравнению с обработкой на CPU, можно делать всё то же самое в два раза быстрее, и это супер важно для больших сцен и световых карт с текстурами высокого разрешения.
Если же вы используете Static Global Illumination (GI), то новая фича Interactive Preview позволяет проще работать и разбираться с результатами прожарки света, подменяя собой режим освещения "Auto Generate".
Двигаем пробы после запекания
Если вы создаете модульный контент, включая световые пробы, раньше вы были ограничены доступом до позиций этих проб только на чтение. В этом релизе появилось новое API, позволяющее модифицировать их позиции даже после запекания.
Красивое небо в HDRP
HDRP Night Sky научилось в смену дня и ночи, появились звезды и небесные тела (например, Луна). Объемные Volumetric Clouds теперь куда меньше тормозят, благодаря использованию техники beer shadow maps, а самозатемнение стало выглядеть даже лучше прежнего.
Визуальное качество SpeedTree в HDRP улучшилось, благодаря использованию новой Transmission Mask. Это позволяет делать subsurface scattering только для листьев. Теперь можно удалить свет, бесполезно рассеиваемый корой деревьев и ветками. Точно так же, можно исправить слишком яркое освещение рекламных щитов, выбивающееся из освещения геометрии вокруг них.
Для декалей улучшили совместимость с Pathtracer Shader Graph. Графовые декали могут работать с прозрачными объектами, поэтому теперь можно создавать хитрые процедурные эффекты, такие как капли дождя, рябь, вычурную гравировку, грязь на стекле и многое другое.
Апгрейд VFX Graph
Уже в 2022 LTS, для HDRP появилось 6-полосное освещение. Теперь оно доступно и для URP. Это набор инструментов, позволяющий прожигать световые карты и симулировать освещение на спрайт-листах прямо в рантайме. Можно быстро собирать и настраивать эффекты типа дыма, облаков, пара, и всё это — в условиях разной освещенности.
Motion Vectors вместе с Object Motion Blur позволяют размывать объекты, перемещающиеся быстрее, чем скорость экспозиции камеры. На этом можно делать крутейшие визуальные эффекты, хорошо сочетающиеся с Temporal Anti-Aliasing.
Появился VFX Graph Templates and Wizard, который добавляет окно с преднастроенными шаблонами эффектов, которые можно использовать в качестве начальной точки для создания чего-то своего, уникального.
А еще, появился Custom HLSL Block, и тут уже всё в ваших руках. Что ты туда засунешь, то и будет. Например, можно запрограммировать движение через NN flocking, или запускать запустить из буфера.
Интеграция Shader Graph с интерфейсом
Среди разных изменений, есть интересная особенность — Shader Graph for UGUI. Фича позволяет создавать бесконечный массив анимированных эффектов, и с их помощью настраивать поведение и внешний вид интерфейса. Все это увеличивает производительность и уменьшает количество используемой оперативной памяти.
Скрин: можно выбрать Canvas в качестве нового Material Type. Graph Inspector работает как для всех способов: HDRP, URP, Built-in Render Pipeline.
Улучшения в платформе
Новые визуальные улучшения работают кроссплатформенно и призваны дать тот вау-эффект, которого так жаждут (и порядком заждались) геймеры. Неявно улучшается гейминг на мобилках, потому что движок стал стабильней работать на Android.
С появлением кроссплатформенного High Dynamic Range (HDR), можно использовать картинки с освещенностью, более схожей с натуральными условиями. HDR позволяет лучше сохранять контраст и качество линейного рендера и отображение на мобилках. И Unity Editor, и все Standalone Player-ы теперь полностью совместимы с HDR tone mapping. Это работает на всех пайплайнах рендеринга, на всех поддерживаемых платформах, включая мобилки и XR.
Inline ray tracing реализует аппаратно-ускоренную трассировку, эффекты и симуляцию. Их можно использовать в вычислительных шейдерах на платформах Windows с поддержкой DXR1.1, Xbox Series X|S и Playstation 5. Из шейдеров можно запускать обсчет лучей, обходить связанную Acceleration Structure и делать проверки на пересечения.
Партнерство с Google сослужило хорошую службу в улучшении инсталляции игр и работы движка на Android. Уменьшился размер загружаемых файлов. Стало понятней, как сделать работу движка более стабильной.
Теперь можно собирать группы Addressables в паки ассетов для Android. Этим ты получаешь плюшки динамической загрузки через Play Asset Delivery. Объединив это с Texture Compression Target Formatting, игроки получат текстуры, сразу преднастроенные для их мобильных устройств, и экономят на этом трафик. Об этом новом пакете можно почитать здесь.
Стало возможным работать с android:android.app.ApplicationExitInfo
(API для работы с причинами остановки приложения). Изучив полученную информацию, можно аккуратно выстроить диалог с (разгневанным) пользователем в случае падения или зависания приложения (ANR, Application Not Responding), собирать с пользователей всю такую аналитику, и даже адаптировать процесс выпуска релиза новой игры к возможным поломкам. Подробней об этом можно прочитать в документации.
Поддержка Meta Quest 3
Поддержка Meta Quest 3 добавлена в 2022 LTS, 2023.1 и 2023.2. Теперь можно делать VR-игры, используя привычные приемы, наработанные для предыдущих версий устройств Quest. Более того, используя AR Foundation, можно делать крутые приложения для mixed reality, смешивая реальный физический мир и цифровой рендер.
Новые шаблоны для AR, VR, MR
Добавились новые шаблоны проектов для mixed reality, virtual reality, и мобильной augmented reality. Эти шаблоны позволяет писать приложения под OpenXR, Meta Quest, Windows Mixed Reality, ARKit и ARCore. Основы можно изучить на примерах, использующих AR Foundation и XR Interaction Toolkit (XRI) для трекинга мира, пользовательского ввода и демонстракции интерактивности. Скачать их можно с Unity Hub, а подробней прочитать — в документации.
XR Interaction Toolkit
В XRI произошла куча изменений, позволяющих быстрее создавать интерактив. Обновлены фичи, построенные на отслеживании лучей, и теперь хватать объекты стало проще. Для упрощения создания кроссплатформенных игр, добавлены новые инструменты Gaze и Hand. Теперь можно, например: целиться взглядом, менять руки на контроллерах, показывать меню на запястье, и все в таком духе. Функциональность про влезание и вползание на предметы тоже улучшена.
Это всего лишь парочка улучшений, а подробней о них рассказано в документации на XRI 2.4 и XRI 2.5.
Мультиплеерные проекты
В Unity Transport улучшена поддержка WebGL и интеграция с Unity Gaming Services Relay.
В Netcode for GameObject появился новый инструмент Network Simulation tool, как понятно из названия — позволяет симулировать разную скорость сети.
Расширяемый UI
Свежее обновление UI Toolkit упрощает и делает более гибким связывание данных и элементов интерфейса. Это относится и к режиму редактора, и к режиму рантайма. Новая фича Runtime Bindings настраивается или через UI Builder, или напрямую из C# по API. Добавление UXML Serialization and Attributes позволяет быстро создавать собственные элементы интерфейса, уменьшая потребность в копипасте. Это происходит благодаря повсеместному использованию аттрибутов из C# и интеграции Custom Property Drawers с UI Builder.
Сам по себе UI Builder значительно обновлен. Например, появились фичи, показывающие источники стилей, упрощающие работу с канвасом и созданием UXML-объектов. В том числе, возможность редактировать сложные UI-компоненты типа многоколоночных TreeView и ListView. Появились новые контролы типа ToggleButtonGroup и TabView, а существующие виджеты посильно улучшены (например, добавлена поддержка иконок для Button-ов и настройка внешнего вида ListView и TreeView).
Scene View получил свежее контекстное меню, которое появляется по правому клику или горячей клавиши на клавиатуре. Это меню сделано на UI Toolkit и расширяется через C# API. Меню предназначено для самых популярных действий, и может быть доработано под специфику вашего проекта. К сплайнам добавили новые свойства хранения объектов и улучшили интерфейс редактирования базовых точек в Инспекторе. Новое контекстное меню помогает и в работе со сплайнами тоже.
Аудио
Добавлен Audio Random Container, или коротко — ARC. В его интерфейсе есть куча разных настроек рандомизации, и это значит, что мы продвинулись по пути создания звука без необходимости в написании кода. ARC доступен на уровне ассетов, и там можно накрутить амбиент, звуки ударов, клипы и циклы, и так далее. И всё это можно включать вручную, без необходимости запускать через скрипты.
Оптимизация
Для Unity Profiler появился новый модуль Highlights. С его помощью можно визуально искать бутылочные горлышки CPU/GPU, и использовать эту информацию как первый шаг на длинном пути оптимизации игры. В версии 2023.2 этот модуль не включен по умолчанию. Чтобы он включился, нужно открыть окно профилировщика, выбрать выпадашку Profiler Modules и выбрать там опцию "Highlights".
Что дальше
Найти список изменений можно в полных релиз ноутах, а в мануале расписано, как ими пользоваться.
Будьте настороже и бэкапьте свои проекты перед тем, как обновляться на новую версию! Познакомьтесь уже, наконец, с контролем версий. Если вам нужна помощь с обновлением, про это есть отдельный гайд. Если же вам важна максимальная стабильность и поддержка, то стоит пока остановиться на Unity 2022 LTS.
Если у вас есть какие-то мысли про Unity, техническая команда всегда готова выслушать обратную связь. Сделать это можно на форумах. Или можно выслать свою обратную связь напрямую в продуктовую команду, это делается через Unity Platform Roadmap. Возможно, продуктовая команда их даже читает.
Не забывайте подписаться на наши ресурсы, там есть ништяки:
- Откровения от Олега - Telegram-канал автора этого гайда
- Оправдания от Олега - Telegram-чат
- SmallTech Pro - Youtube-канал
- Telegram-канал Failover Bar - единственный в Санкт-Петербурге (а может, и в России вообще) бар для разработчиков. Мы здесь постоянно встречаемся и разговариваем про Java.