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 la configuración de las intervenciones de Game Mode a los OEM o inhabilitar 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, declara tu app como un juego configurando el atributo appCategory en el 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 de los OEMs, primero agrega 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 modos de juego

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

Si usas el Panel de juego y no se muestra el ícono de optimización cuando se inicia el juego, es posible que debas subir la app a Google Play Console y, luego, instalarla desde Play Store. Para obtener información sobre las pruebas de apps en Play Store, consulta Cómo compartir paquetes de aplicaciones y APKs a nivel interno.

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

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

Durante el desarrollo, si usas un dispositivo sin el Panel de juego y el fabricante no proporciona ninguna manera de configurar el Modo de juego para cada app, puedes cambiar el estado de Modo de juego a través de adb:

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

Ejemplo de aplicación

En la muestra 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 sea posible proporcionar actualizaciones.