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

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

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

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

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

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

Настраивать

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

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

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

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

Ява

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

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

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

Чтобы объявить поддержку игровых режимов и отменить любое вмешательство производителей игрового режима со стороны OEM-производителей, сначала добавьте конфигурацию игрового режима в элемент <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) или аналогичные приложения, предоставляемые OEM-производителями. Альтернативно вы можете использовать команду оболочки Game Mode во время разработки.

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

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

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

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

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

Образец заявления

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

Следующий

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