API de Game Mode

La API de Game Mode te permite optimizar el juego a fin de obtener el mejor rendimiento o la mayor duración de batería cuando el usuario selecciona el modo de juego correspondiente.

Como alternativa, puedes enviar solicitudes de intervenciones de Game Mode para mejorar el rendimiento de los juegos que los desarrolladores ya no actualizan.

La API de Game Mode y sus intervenciones están disponibles en los siguientes dispositivos:

Cada juego puede implementar el comportamiento de la API de Game Mode, proponer configuración de intervenciones a los OEM Inhabilita las intervenciones de Game Mode.

Configuración

Para usar la API de Game Mode en tu juego, haz lo siguiente:

  1. Descarga e instala el SDK de Android 13

  2. En el archivo AndroidManifest.xml, declarar tu app como juego estableciendo la el atributo appCategory elemento <application>:

android:appCategory="game"
  1. Consulta el modo de juego actual. Para ello, agrega lo siguiente a tu actividad principal:

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
}
Modo de juego compatible Descripción
NO ES COMPATIBLE El juego no declara compatibilidad con la API de Game Mode y no admite intervenciones de Game Mode.
ESTÁNDAR El usuario no seleccionó un modo de juego o seleccionó el modo estándar.
RENDIMIENTO Proporciona las velocidades de latencia de fotogramas más bajas a cambio de una menor duración de batería y fidelidad.
BATERÍA Proporciona la mayor duración de batería posible a cambio de una menor fidelidad o velocidad de fotogramas.
  1. Agrega código para consultar el estado del modo de juego en la Función onResume:

    Ejemplo en el que el usuario establece el modo de Batería

Prácticas recomendadas

Si tu juego ya admite varios objetivos de fidelidad y velocidad de fotogramas, deberías identificar la configuración adecuada para los modos de rendimiento y ahorro de batería:

  • Si quieres lograr la velocidad máxima de fotogramas del dispositivo de manera constante, considera reducir levemente la fidelidad a fin de lograr velocidades mayores de fotogramas.

  • Si quieres mejorar la duración de batería, opta por una menor frecuencia de actualización de pantalla (p. ej., 30 Hz o 60 Hz) y usa el ritmo de fotogramas a fin de orientarlos a la frecuencia reducida.

En el caso de los juegos de alta fidelidad, como los de tiros en primera persona, los de arena de combate multijugador en línea (MOBA) y los de rol (RPG), deberás enfocarte en lograr velocidades de fotogramas altas y coherentes para maximizar la inmersión del usuario.

Tanto en los juegos casuales como en los de alta fidelidad, debes admitir el modo de ahorro de batería a efectos de prolongar el tiempo de juego mediante la reducción de las velocidades máximas de fotogramas.

Cómo declarar la compatibilidad con los modos de juego

Para declarar la compatibilidad con Game Modes y anular cualquier intervención de Game Mode mediante Si eres OEM, primero debes agregar la configuración de Game Mode al elemento <application> en tu Archivo AndroidManifest.xml:

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

Luego, crea un archivo game_mode_config.xml en el directorio res/xml/ de tu proyecto. con el siguiente contenido:

<?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"
/>

Cambiar de modo de juego

Para cambiar entre los modos de juego, puedes usar el Panel de juego (disponible en dispositivos Pixel) o aplicaciones similares proporcionadas por OEM. Como alternativa, puedes usar el comando shell de Game Mode durante el desarrollo.

Si estás usando el Panel de juego y no se muestra el ícono de optimización Cuando se lance el juego, es posible que debas subir la app a Google Play Console y, luego, instálala mediante Play Store. Para obtener información sobre las pruebas de apps en la Play Store, consulta Comparte paquetes de aplicaciones y APK a nivel interno.

Actividad del Panel de juego Figura 1: Panel de juego superpuesto con un juego en ejecución en un Pixel dispositivo.

En la figura 1, el modo de juego del juego en ejecución se puede cambiar desde la configuración widget. Como se muestra en el widget, el juego se está ejecutando en PERFORMANCE .

Durante el desarrollo, si usas un dispositivo sin Panel de juego y no proporciona ninguna forma de configurar Game Mode para cada app, puedes cambia el estado del modo de juego con adb:

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

Aplicación de muestra

El ejemplo de la API de Game Mode se destaca cómo puedes optimizar los FPSs y renderizar límites de resolución para ahorrar aproximadamente un 25% de energía en tus apps.

Siguiente

Lee Intervenciones de Game Mode para mejorar el rendimiento de un juego cuando no es posible proporcionar actualizaciones.