Game Mode API

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

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

API игрового режима и вмешательства доступны на следующих устройствах:

  • Устройства с Android 12
  • Устройства с Android 13 или более поздней версии.

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

Настроить

Чтобы использовать Game Mode 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();
}

Kotlin

// 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
}
Поддерживаемый игровой режим Описание
Не поддерживается Игра не поддерживает Game Mode API и не использует функции игрового режима.
СТАНДАРТНЫЕ Пользователь не выбрал игровой режим или выбрал стандартный режим.
ИСПОЛНЕНИЕ Обеспечивает минимальную задержку при передаче кадров, но при этом снижает время работы от батареи и качество изображения.
БАТАРЕЯ Обеспечивает максимально возможное время работы от батареи за счет снижения качества или частоты кадров.
  1. Добавьте код для запроса состояния игрового режима в функцию onResume:

    Пример с настройкой пользователя &quot;Режим батареи&quot;

Рекомендации

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

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

  • Чтобы продлить время работы от батареи, выберите более низкую частоту обновления экрана (например, 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) или аналогичные приложения, предоставленные производителями устройств. Кроме того, во время разработки можно использовать команду оболочки игрового режима.

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

Действия на игровой панели Рисунок 1. Игровая панель, наложенная на запущенную игру на устройстве Pixel.

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

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

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

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

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

Далее

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