API игрового режима позволяет оптимизировать игру для достижения наилучшей производительности или увеличения времени автономной работы, когда пользователь выбирает соответствующий игровой режим.
Кроме того, вы можете отправить запросы на вмешательство в игровой режим, чтобы улучшить производительность игр, которые больше не обновляются разработчиками.
API игрового режима и вмешательства доступны по адресу:
- Выберите устройства Android 12
- Устройства под управлением Android 13 или более поздней версии
Каждая игра может реализовывать поведение API игрового режима, предлагать OEM-производителям настройки вмешательства в игровом режиме или отказываться от вмешательства в игровом режиме .
Настраивать
Чтобы использовать API игрового режима в своей игре, выполните следующие действия:
Загрузите и установите Android 13 SDK .
В файле
AndroidManifest.xml
объявите свое приложение как игру, установив атрибутappCategory
в элементе<application>
:
android:appCategory="game"
- Запросите текущий игровой режим, добавив его в свою основную деятельность:
Ява
// 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 игрового режима и не поддерживаются вмешательства игрового режима. |
СТАНДАРТ | Пользователь не выбрал игровой режим или выбрал стандартный режим. |
ПРОИЗВОДИТЕЛЬНОСТЬ | Обеспечивает минимальную частоту кадров с задержкой в обмен на сокращение времени автономной работы и снижение точности изображения. |
АККУМУЛЯТОР | Обеспечивает максимально длительный срок службы батареи в обмен на снижение качества воспроизведения или частоты кадров. |
Добавьте код для запроса состояния игрового режима в функцию
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-файлам внутри компании .
Рис. 1. Панель управления игрой, отображающая запущенную игру на устройстве Pixel.
На рисунке 1 игровой режим запущенной игры можно изменить с помощью виджета «Оптимизация». Как показано на виджете, игра в данный момент работает в режиме PERFORMANCE
.
Если во время разработки вы используете устройство без игровой панели и производитель не предоставляет возможности установить игровой режим для каждого приложения, вы можете изменить статус игрового режима через adb :
adb shell cmd game mode [standard|performance|battery] <PACKAGE_NAME>
Образец заявления
В примере API игрового режима показано, как можно оптимизировать FPS и ограничить разрешение рендеринга, чтобы сэкономить примерно 25 % энергии в ваших приложениях.
Следующий
Прочтите «Вмешательства в игровом режиме», чтобы улучшить производительность игры, когда невозможно предоставить обновления игры.