Оптимизация частоты обновления

Android 15 устанавливает частоту обновления 60 Гц по умолчанию для игр, чтобы оптимизировать энергопотребление. Чтобы разблокировать более высокую частоту кадров, например 120 кадров в секунду, теперь вы должны явно запросить их с помощью API частоты кадров или библиотеки Swappy.

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

Используйте API setFrameRate()

API setFrameRate() позволяет разработчикам игр использовать определенную частоту обновления дисплея. Для этого есть два шага:

  1. Проверьте совместимость устройства и версии Android.
  2. Запросите высокий FPS, используя setFrameRate() .

Проверьте совместимость устройства и версии Android:

Используйте методы Display.getSupportedModes() , чтобы определить, поддерживает ли устройство частоту обновления 90 Гц, 120 Гц или другие частоты обновления. Если устройство ограничено частотой 60 Гц, превысить этот предел невозможно.

Котлин

val display = windowManager.defaultDisplay
val supportedModes = display.supportedModes
for (mode in supportedModes) {
  Log.d("DisplayInfo", "Supported mode: ${mode.physicalWidth}x${mode.physicalHeight}, ${mode.refreshRate}Hz")
}

Запросить высокий FPS

Вызовите setFrameRate() , когда запускается цикл рендеринга, во время инициализации игрового окна или когда целевой FPS необходимо изменить частоту обновления дисплея.

Даже если вы запросите более высокую частоту, система все равно может ограничить частоту обновления до 60 Гц из-за таких факторов, как режим энергосбережения или термическое регулирование. Если производительность рендеринга вашей игры не достигает целевого значения FPS, запрос более высокой частоты обновления может привести к ненужному энергопотреблению и повышению температуры устройства.

В следующем фрагменте показано, как избежать слишком высокой частоты обновления с помощью API setFrameRate() .

Котлин

val targetFps = 120f
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
  window.setFrameRate(
      targetFps,
      Window.FrameRateCompatibility.FRAME_RATE_COMPATIBILITY_FIXED_SOURCE,
      0
  )
}

Страница «Частота кадров» предоставляет более подробную информацию для дальнейшего чтения.

Использовать библиотеку синхронизации кадров

Библиотека синхронизации кадров , или Swappy, — это библиотека с открытым исходным кодом, предназначенная для упрощения управления VSync и планирования кадров в игровых движках C/C++ для Android. Этот инструмент упрощает процесс оптимизации частоты обновления, эффективно действуя как уровень абстракции более высокого уровня над такими функциями, как setFrameRate() . Кроме того, Swappy предоставляет дополнительные функции, которые могут повысить общую плавность и производительность вашей игры.

Страница Swappy дает более подробную информацию.

Дополнительные советы для достижения наилучших результатов

В следующем разделе представлены несколько важных советов:

  1. Динамическое переключение частоты кадров.
  2. Мониторинг производительности.
  3. Предоставьте параметры FPS на основе максимальной частоты обновления экрана.

Динамическое переключение частоты кадров

Чтобы оптимизировать производительность и энергопотребление, рассмотрите возможность реализации динамического переключения частоты кадров в вашей игре. Этот метод позволяет плавно переключаться между более высокими частотами обновления, например 120 Гц, для более плавного игрового процесса в требовательных сценах, и более низкими частотами, например 60 Гц, в менее интенсивные моменты, или когда время автономной работы является проблемой или когда требуется частота менее 60 кадров в секунду. Постоянная работа на частоте 120 Гц может привести к чрезмерному выделению тепла и быстрому разряду аккумулятора, что потенциально может привести к негативным впечатлениям от использования. Интеллектуально регулируя частоту обновления в зависимости от текущей нагрузки рендеринга и состояния устройства, вы можете найти баланс между визуальной точностью и энергоэффективностью .

Мониторинг производительности

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

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

Предоставьте параметры FPS на основе максимальной частоты обновления экрана.

Ваша игра должна определить максимальную частоту обновления экрана, поддерживаемую текущим устройством, например 60 Гц, 90 Гц или 120 Гц, и соответствующим образом ограничить настройки FPS. Например, если устройство поддерживает только частоту до 60 Гц, желательно отключить в настройках игры любые параметры выше 60FPS, чтобы не запутать игрока.