Вмешательства в игровом режиме — это оптимизация для конкретной игры, устанавливаемая производителями оригинального оборудования (OEM) для повышения производительности игр, которые больше не обновляются разработчиками. Например:
- Использование изменения размера заднего буфера WindowManager.
- Использование ANGLE вместо собственных драйверов GLES.
Вы можете получить поддержку своей игры и управлять API игрового режима , чтобы он переопределял вмешательства игрового режима, предоставляемые OEM.
API игрового режима и вмешательства доступны на:
- Выберите устройства Android 12
- Устройства под управлением Android 13 или более поздней версии
Каждая игра может:
- Реализовать поведение API игрового режима,
- Предложить настройки вмешательства в игровом режиме OEM-производителям или
- Явно отказаться от вмешательства в игровой режим.
Фон
В этом разделе описывается, что делают изменения в игровом режиме и как оптимизировать игру для каждого режима.
Изменение размера заднего буфера WindowManager
Вмешательство по изменению размера обратного буфера WindowManager может снизить нагрузку на графический процессор устройства. Это также может снизить расход заряда батареи, когда игра движется с заданной частотой кадров.
Включение изменения размера может привести к снижению использования графического процессора до 30 % и общего энергопотребления системы на 10 %. Результаты могут различаться в зависимости от используемого устройства, условий окружающей среды и других факторов, таких как одновременная обработка.
Игра без темпа, привязанная к графическому процессору, скорее всего, будет иметь более высокую частоту кадров при снижении нагрузки на графический процессор.
Мы настоятельно рекомендуем, чтобы во всех играх был хороший темп , поскольку неравномерная частота кадров существенно влияет на восприятие производительности пользователями.
Регулирование FPS
Регулирование FPS в Android — это вмешательство в игровой режим, которое помогает играм работать с более стабильной частотой кадров и снижает расход заряда батареи. Вмешательство доступно в Android 13 или более поздней версии. Дополнительную информацию см. в обзоре регулирования FPS .
Оцените вмешательство в игровом режиме
В этом разделе используется команда adb .
Настройте режимы
Вы должны отказаться от игровых режимов в файле конфигурации игрового режима приложения, прежде чем тестировать вмешательства игрового режима. В противном случае платформа обойдет их и будет учитывать только внутриигровую оптимизацию.
<?xml version="1.0" encoding="UTF-8"?>
<game-mode-config
xmlns:android="http://schemas.android.com/apk/res/android"
android:supportsBatteryGameMode="false"
android:supportsPerformanceGameMode="false"
/>
(Необязательно) Создайте резервную копию существующей конфигурации устройства.
Для Pixel или других устройств в конфигурации вашего устройства может быть уже существующая конфигурация игрового вмешательства. Вы можете запросить конфигурацию с помощью команды:
adb shell device_config get game_overlay <PACKAGE_NAME>
Если запрос возвращает null
, игнорируйте ранее существовавшую конфигурацию. В противном случае сохраните его и восстановите его после оценки.
Оценка вмешательств
Чтобы самостоятельно оценить вмешательство по изменению размера заднего буфера WindowManager, используйте следующую команду, чтобы установить различные значения изменения размера буфера WindowManager в разных режимах игры.
adb shell device_config put game_overlay <PACKAGE_NAME>
mode=2,downscaleFactor=0.9:mode=3,downscaleFactor=0.5
В приведенном выше примере mode=2
— это «Производительность», а mode=3
— «Экономия заряда батареи». Значение downscaleFactor
указывается в процентах, которые применяются к настройке изменения размера (например, 0,7 — 70 %, а 0,8 — 80 %). Изменение размера на 90 % (0,9) практически незначительно, тогда как изменение размера на 50 % (0,5) является значительным.
Предупреждение. Размер дочерних процессов может быть изменен неправильно в Android 12. В частности, убедитесь, что всплывающие уведомления и всплывающие окна отображаются правильно. Мы рекомендуем ограничить настройку размера не менее 70%.
После того, как новые значения изменения размера установлены, переключайтесь между игровыми режимами, чтобы увидеть, как на вашу игру влияет вмешательство изменения размера заднего буфера WindowManager:
adb shell cmd game mode [standard|performance|battery] <PACKAGE_NAME>
Обязательно перезапускайте игру после каждого выбора игрового режима. Вмешательство по уменьшению масштаба требует перезапуска приложения.
Отказ от вмешательства
Вы можете контролировать, будет ли вмешательство применяться к вашей игре, отказавшись от него. Для каждого вмешательства предусмотрена своя настройка отказа.
- Тот же XML-файл конфигурации, который используется для управления включением и отказом от игровых режимов, также используется для настроек вмешательства:
<?xml version="1.0" encoding="UTF-8"?>
<game-mode-config
xmlns:android="http://schemas.android.com/apk/res/android"
android:allowGameDownscaling="false"
android:allowGameFpsOverride="false"
/>
- Пересоберите и повторно отправьте игру, чтобы отказаться.
По умолчанию будут использоваться меры, установленные производителями оригинального оборудования (OEM), если вы явно не откажетесь от их использования в игре.
Ресурсы
Для получения дополнительной информации об измерении и оптимизации производительности игры:
Системные профилировщики — анализируйте использование процессора и графические вызовы.
Android GPU Inspector — графика профиля на Android.
Библиотека кадровой синхронизации Android — помогает играм OpenGL и Vulkan добиться плавного рендеринга и правильной синхронизации кадров.
Android Performance Tuner — измеряйте и оптимизируйте частоту кадров и графику на всех устройствах Android в любом масштабе.
Power Profiler — найдите места, где ваше приложение использует больше энергии, чем необходимо.