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