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:
- Selecciona dispositivos con Android 12.
- Dispositivos con Android 13 o versiones posteriores
Cada juego puede implementar el comportamiento de la API de Game Mode, proponer la configuración de 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:
Descarga e instala el SDK de Android 13.
En el archivo
AndroidManifest.xml, declara tu app como un juego estableciendo el atributoappCategoryen el elemento<application>:
android:appCategory="game"
- 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. |
Agrega código para consultar el estado del modo de juego en la función
onResume:
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 Mode y anular cualquier intervención de Game Mode por parte de los OEM, 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"
/>
Cómo 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 los OEM. Como alternativa, puedes usar el comando de shell del Modo de juego durante el desarrollo.
Si usas el Panel de juego y el ícono de optimización no aparece cuando se inicia el juego, es posible que debas subir la app a Google Play Console y, luego, instalarla a través de Play Store. Para obtener información sobre las pruebas de apps en Play Store, consulta Cómo compartir paquetes de aplicaciones y APK a nivel interno.
Figura 1: El Panel de juego se muestra superpuesto al juego en ejecución en un dispositivo Pixel.
En la figura 1, se puede cambiar el modo de juego del juego en ejecución desde el widget de Optimización. Como se muestra en el widget, el juego se está ejecutando en el modo
PERFORMANCE.
Durante el desarrollo, si usas un dispositivo sin el Panel de juegos y el fabricante no proporciona ninguna forma de configurar el Modo de juego para cada app, puedes cambiar el estado del Modo de juego a través de adb:
adb shell cmd game mode [standard|performance|battery] <PACKAGE_NAME>Aplicación de muestra
En el ejemplo de la API de Game Mode, se destaca cómo puedes optimizar los FPS y renderizar límites de resolución para ahorrar aproximadamente un 25% de energía en tus apps.
Siguiente
Consulta las intervenciones de Game Mode para mejorar el rendimiento de un juego cuando no sea posible actualizarlo.