Обзор Android Performance Tuner (Unity)

В этом руководстве описывается, как использовать плагин Unity для записи и загрузки данных времени кадра из Unity 2017.4 или более поздней версии .

Для игровых движков, использующих C или C++, см . руководство по собственным игровым движкам .

Фон

Ключевым компонентом игрового процесса является производительность рендеринга . Производительность рендеринга зависит от следующих двух факторов:

  • Частота кадров: как часто отрисовывается кадр.
  • Настройки качества графики: уровень точности представления кадра, включая точность моделирования и графики.

Для игр хорошая производительность рендеринга определяется следующим образом:

  • Обеспечение стабильной и постоянной частоты кадров (то есть процента кадров, отображаемых с желаемой частотой).
  • Рендеринг кадров с максимально возможной частотой при сохранении стабильности, обычно 30 или 60 FPS в зависимости от типа игры.
  • Максимизация уровня детализации для пользователя с учетом размера и плотности его экрана при сохранении желаемой стабильной частоты кадров.

Библиотека Android Frame Pacing ограничивает значительную часть колебаний времени кадра, обеспечивая стабильную частоту кадров в играх. Оставшиеся колебания времени кадра обусловлены уровнем детализации в определенных сценах игрового процесса и графическими возможностями устройства. С помощью Android Performance Tuner вы можете точно определить моменты в игре, когда время кадра медленнее или быстрее целевого значения, и сопоставить эти проблемы и возможности со следующими факторами:

  • Конкретные настройки качества
  • Конкретные сцены в вашей игре
  • Конкретные модели устройств или характеристики устройств

Запись и загрузка данных

Библиотека Tuning Fork использует одну из своих функций тика, вызываемую в каждом кадре библиотекой Android Frame Pacing (или движком Unity в более старых версиях Unity, где библиотека Frame Pacing отсутствует). В библиотеке эта информация о тиках агрегируется в гистограммы, которые затем периодически загружаются в Google Play через конечную точку HTTP. Каждый тик регистрируется как связанный с клавишей инструмента и аннотацией . Аннотации определяются с помощью плагина Unity.

Клавиши инструментов

Ключ инструмента указывает, с какой части кадра берётся тик, и представляет собой целое число, которое необходимо передавать в каждый вызов функции тика. Это делается автоматически плагином Unity. Если в настройках Unity для вашей игры включена опция «Оптимизированный темп кадра» (доступно в версии Unity 2019.3.14 и более поздних), Android Performance Tuner будет использовать информацию из библиотеки Android Frame Pacing для отчёта улучшенных метрик.

Аннотации

Аннотации предоставляют контекстную информацию о том, что происходит в вашей игре в момент регистрации такта. Например, аннотация может содержать информацию о любом из следующих событий:

  • Текущий уровень игры
  • Загружается определенная сцена
  • На экране «большой босс»
  • Любая другая важная информация о состоянии игры

Аннотации определяются в диалоговом окне, предоставляемом плагином Unity.

Библиотека Tuning Fork использует формат буфера протокола Google для хранения аннотаций и параметров точности. Это чётко определённый многоязычный протокол для расширяемых структурированных данных. Подробнее см. в документации по буферам пр��токола .

Параметры точности

Параметры точности влияют на производительность и графическую точность вашей игры, такие как уровень детализации сетки, разрешение текстур и метод сглаживания. Как и аннотации, параметры точности определяются в диалоговом окне плагина Unity.

Накладные расходы на память и ЦП

Вся память, используемая библиотекой Tuning Fork, выделяется при инициализации, чтобы избежать непредвиденных ситуаций во время игры. Объём данных зависит от количества клавиш инструментов, количества возможных аннотаций и количества сегментов в каждой гистограмме; он кратен всем этим значениям и четырём байтам для к��ждо��о ��егмент��. ��а��ж�� ��уществуют две копии всех гистограмм, что позволяет отправлять данные с двойной буферизацией.

Отправка происходит в отдельном потоке и не блокирует вызовы тиков. Если соединение для загрузки отсутствует, отправка ставится в очередь для последующей загрузки.

Вызов тиковой функции сопряжен с небольшими накладными расходами на обработку: она просто вычисляет индекс в массиве контейнеров гистограммы и увеличивает целочисленное значение.

Веб-запросы

Библиотека выполняет два вида запросов к конечной точке сервера:

  • Запрос generateTuningParameters при инициализации
  • Периодически во время игры выполняется запрос uploadTelemetry на отправку данных на сервер.

Оффлайн-игроки

Если при инициализации нет доступного соединения, запрос повторяется несколько раз с увеличивающимся временем ожидания. Если при загрузке соединения нет, загрузка кэшируется. Загрузки хранятся в виде файлов во временном хранилище.

Требования

Чтобы использовать плагин в своей игре, используйте поддерживаемую версию Unity:

  • Unity версии 2017.4 или более поздней и .NET версии 4.6
  • Для использования файлов расширения APK требуется Unity 2018.2.
  • Для улучшенного темпа кадров и измерений GPU требуется Unity версии 2019.3.14 или более поздней.
  • Для поддержки сцен Addressables требуется Unity 2019.3 или более поздняя версия и пакет Addressables 1.19.4 или более поздняя версия.

Интеграция Android Performance Tuner в Unity

Ин��ормацию об интеграции Android Performance Tuner в Unity см. в разделе Включение API .