Adaptive Performance 4.0 входит в версию Unity 2022.1 Tech Stream и максимально повышает производительность систем Android, в особенности – для смартфонов от Samsung. При помощи 4 главных настроек (масштабирование, физика, надписи, слои), можно провести существенную оптимизацию и заметно повысить производительность игры.
В этой статье мы рассмотрим основные аспекты работы и особенности настройки Adaptive Performance 4.0.
Визуальный сценарий
Adaptive Performance легко использовать для работы с визуальными сценариями. Это поможет в масштабировании вашего приложения и поможет увеличить срок службы батареи. Сразу после установки Adaptive Performance 4.0, система визуальных сценариев Unity отобразит модули для доступа к метрикам Adaptive Performance, при этом вам не понадобится добавлять что-то с использованием C#.
То есть нужные модули будут активированы автоматически, все что понадобится – просто добавить Adaptive Performance в проект со своими графиками визуальных сценариев и перекомпилировать модули. (Подробную инструкцию смотрите в официальной документации о Adaptive Performance)
После перекомпиляции Unity воссоздаст блоки Adaptive Performance и вы сможете добавлять новые блоки в свой график. Для этого нужно нажать правой кнопкой мыши по фону любого графика скрипта, а потом перейти в подменю Adaptive Performance, чтобы определить устройства.
Частицы в Boat Attack
Приводим пример того, как можно использовать Adaptive Performance в визуальном сценарии. На картинке ниже мы видим фрагмент Boat Attack, где все частицы отключены при «неизбежном дросселировании» и включены, если нет предупреждений. Мы можем масштабировать эффекты от брызга волн, дыма от двигателя лодки, так как они сильно нагружают ЦП и ГП. Это повысит производительность, при этом изменения в самой игре будут минимальными.
Каждый раз, когда происходит изменение теплового предупреждения, мы заставляем Систему частиц перебирать его, затем останавливаем Систему частиц или перезапускаем ее снова. Но все это можно настроить под нужды конкретной игры. Например, вместо того, чтобы полностью отключать эффекты, вы можете масштабировать количество эмиттеров или качество исходных изображений.
Все Adaptive Performance API тщательно проработаны в виде визуальных сценариев. (Полный список API и более детальную информацию можно найти в документации по интеграции визуальных сценариев.)
Скейлеры
В добавок к уже существующим масштабаторам, теперь в Adaptive Performance 4.0 появились еще четыре новых масштабатора. Это:
- Масштабирование отбраковки слоев
- Скейлер декалей
- Пользовательский масштабатор
- Масштабатор физики
В итоге можно выделить целый список преимуществ системы индексаторов и масштабаторов. К ним относятся:
- Стабилизация частоты кадров
- Минимальное дросселирование
- Спасение от дросселирования
- Автоматическое масштабирование контента во время выполнения
- Масштабирование без перекомпиляции исходников на миллионы устройств
- Простая интеграция
- Высокое качество
- Минимум технического обслуживания
Пользовательский модуль Adaptive Performance Unity Profiler отображает, как меняются масштабаторы, чтобы вы могли наглядно увидеть, хорошо ли они справляются со своей работой или вам нужно их поднастроить. Пример ниже включает в себя Boat Attack, работающую на Samsung Fold3 в развернутом режиме, который использует довольно высокое разрешение.
Boat Attack начинается с большого количества скейлеров, занятых сценой меню, которая была стабилизирована до того, как был сделан захват. В этом примере температура быстро растет, и устройство переходит в режим дросселирования.
Adaptive Performance пытается стабилизировать ситуацию и уменьшить влияние на GPU, так как это явно узкое место. Таким образом, теневые скейлеры быстро снижают качество, но поскольку этого недостаточно, дальность обзора и разрешение также уменьшаются. Затем частота кадров стабилизируется, а температура падает. Игра избавлена от троттлинга, а ее частота кадров повышается до 60 кадров в секунду.
Масштабирование отбраковки слоев
С помощью масштабатора отсечения слоев вы можете динамически регулировать расстояния отбраковки слоев во время выполнения.
Эта функция использует систему индексации для принятия определенных решений, например, когда и насколько увеличивать или уменьшать расстояние отбраковки слоев для оптимальной производительности и термостабильности.
Образец, который мы поставляем с Adaptive Performance, зацикливается при средней нагрузке на ЦП, пока не достигнет критической частоты кадров, а затем уменьшает расстояние отбраковки слоев. Результатом этого является то, что расстояние отбраковки для слоев изменяется в зависимости от загрузки процессора и графического процессора.
Вы можете установить разные значения для расстояния отбраковки для каждого слоя, чтобы они масштабировались пропорционально. Это поможет вам определить, какие объекты следует отбрасывать раньше, для экономии производительности. (Дополнительные сведения о том, как это сделать, смотрите в следующем примере кода.)
Адаптивные декали
Адаптивные декали нацелены на визуальные эффекты. В «Удивительных приключениях доктора Арма» есть сценарий битвы с боссом, в котором используется множество частиц и проекторов декалей. Когда мобильное устройство нагревается и дросселирование неизбежно (или уже происходит), количество испускаемых частиц уменьшается. В этом случае менее важные визуально излучатели, такие как развевающиеся на ветру листья, крошечные искры и другие подобные элементы, полностью отключаются. Скейлер также уменьшает расстояние между декалями.
Нет предупреждений
Дросселирование
Более того, для некоторых частиц отключены столкновения. Как только тепловая нагрузка уменьшится, мы сможем масштабировать эти эффекты обратно.
Пользовательский масштабатор
Пользовательский скейлер реализует скейлер тумана и даже помогает вам создавать свои собственные скейлеры. Этот масштабатор увеличивает туман и уменьшает расстояние обзора при увеличении тепловой нагрузки. Такое действие снижает нагрузку на систему, чтобы она могла восстановиться.
Постобработка может быстро стать одной из самых дорогих частей кадра для рендеринга. Хотя они не имеют решающего значения для игрового процесса, они могут добавить больше атмосферы и улучшить искусство, над которым так усердно работает команда разработчиков.
Adaptive Performance обеспечивает преимущество включения эффектов постобработки игры в полном объеме, но также уменьшает эффекты, которые не нужны в моменты пиковой нагрузки на устройство. Во время дросселирования мы отключаем определенные эффекты в «Удивительных приключениях доктора Арма», эффекты были включены в основном для улучшения настроения сцены, без существенного влияния на игровой процесс. Туман, цветение, глубина резкости, окклюзия окружающего пространства экрана (SSAO) и размытие в движении — отличные примеры визуальных эффектов, которые могут многое добавить, но не являются необходимыми для игрового процесса. Эти настройки позволяют значительно повысить производительность игры.
Нет предупреждений
Дросселирование
Адаптивная физика
Адаптивная физика изменяет фиксированное время разности, в которое обновляется физический движок. Если вы используете его для других систем, они также будут масштабироваться. Но если вы используете фиксированное дельта-время в других системах, вы можете создать свой собственный физический масштабатор, чтобы использовать более подробные настройки вместо фиксированного дельта-времени.
Смотрите приведенное выше сравнение исходного значения Time.fixedDeltaTime и уменьшенной версии. Среднее время кадра оригинала составляет 28 мс, а среднее время кадра уменьшенной версии — 21 мс.
Команда Adaptive Performance непрерывно работает над расширением пакета и охвата его платформы, так что новые опции по оптимизации ждут нас уже в ближайшем будущем.