API игрового режима

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

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

API игрового режима и средства взаимодействия с ним доступны по следующим ссылкам:

  • Выберите устройства Android 12
  • Устройства под управлением Android 13 или выше.

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

Настраивать

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

  1. Загрузите и установите Android 13 SDK .

  2. В файле AndroidManifest.xml объявите ваше приложение игрой, установив атрибут appCategory в элементе <application> :

android:appCategory="game"
  1. Чтобы узнать текущий игровой режим, добавьте этот код в основное приложение:

Java

// Only call this for Android 12 and higher devices
if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.S ) {
  // Get GameManager from SystemService
  GameManager gameManager = Context.getSystemService(GameManager.class);

  // Returns the selected GameMode
  int gameMode = gameManager.getGameMode();
}

Котлин

// Only call this for Android 12 and higher devices
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
  // Get GameManager from SystemService
  val gameManager: GameManager? = context.getSystemService(Context.GAME_SERVICE) as GameManager?

  // Returns the selected GameMode
  val gameMode = gameManager?.gameMode
}
Поддерживаемые игровые режимы Описание
НЕПОДДЕРЖИВАЕТСЯ Игра не заявляет о поддержке API игрового режима и не поддерживает вмешательство в игровой режим.
СТАНДАРТ Пользователь не выбрал игровой режим или выбрал стандартный режим.
ПРОИЗВОДИТЕЛЬНОСТЬ Обеспечивает минимальную задержку при отображении кадров, но при этом сокращает время работы от батареи и ухудшает качество изображения.
БАТАРЕЯ Обеспечивает максимально длительное время автономной работы за счет снижения качества изображения или частоты кадров.
  1. Добавьте код для запроса состояния игрового режима в функцию onResume :

    Пример с настройкой пользователем режима работы от батареи.

Передовые методы

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

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

  • Для увеличения времени автономной работы: рассмотрите возможность выбора более низкой частоты обновления дисплея (например, 30 Гц или 60 Гц) и используйте функцию синхронизации кадров для управления сниженной частотой.

Для игр с высокой детализацией, таких как шутеры от первого лица, многопользовательские онлайн-боевые арены (MOBA) и ролевые игры (RPG), следует сосредоточиться на достижении высокой стабильной частоты кадров, чтобы максимально погрузить пользователя в игровой процесс.

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

Объявить о поддержке игровых режимов

Чтобы объявить о поддержке игровых режимов и переопределить любые действия производителей, связанные с игровыми режимами, сначала добавьте конфигурацию игрового режима в элемент <application> в файле AndroidManifest.xml :

<application>
    <meta-data android:name="android.game_mode_config"
               android:resource="@xml/game_mode_config" />
  ...
</application>

Затем создайте файл game_mode_config.xml в каталоге res/xml/ вашего проекта со следующим содержимым:

<?xml version="1.0" encoding="UTF-8"?>
<game-mode-config
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:supportsBatteryGameMode="true"
    android:supportsPerformanceGameMode="true"
/>

Переключить режимы игры

Для переключения между игровыми режимами можно использовать панель управления игрой (доступна на устройствах Pixel) или аналогичные приложения, предоставляемые производителями. В качестве альтернативы можно использовать команду оболочки «Игровой режим» во время разработки.

Если вы используете Game Dashboard и значок оптимизации не отображается при запуске игры, возможно, вам потребуется загрузить приложение в Google Play Console и установить его через Play Store. Информацию о тестировании приложений в Play Store см. в разделе «Внутренний обмен пакетами приложений и APK-файлами» .

Game Dashboard Activity! Рисунок 1. Панель управления игрой, отображающая запущенную игру на устройстве Pixel.

На рисунке 1 показано, как можно изменить игровой режим запущенной игры с помощью виджета «Оптимизация». Как видно на виджете, в данный момент игра работает в режиме PERFORMANCE .

В процессе разработки, если вы используете устройство без Game Dashboard, и производитель не предоставляет возможности настройки игрового режима для каждого приложения, вы можете изменить статус игрового режима через adb :

adb shell cmd game mode [standard|performance|battery] <PACKAGE_NAME>

Пример приложения

Пример использования API игрового режима демонстрирует, как можно оптимизировать частоту кадров и ограничение разрешения рендеринга, чтобы сэкономить примерно 25% энергии в ваших приложениях.

Следующий

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