Intervenciones de modo de juego

Las intervenciones de Game Mode son optimizaciones específicas del juego establecidas por los fabricantes de equipos originales (OEM) para mejorar el rendimiento de los juegos que los desarrolladores ya no actualizan. Por ejemplo:

  • Usa el cambio de tamaño del búfer de reserva de WindowManager.
  • Uso de ANGLE en lugar de controladores GLES nativos

Puedes hacer que tu juego admita y administre la API de Game Mode para que anule las intervenciones de Game Mode que proporciona el OEM.

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

En cada juego, se puede hacer lo siguiente:

  • Implementa el comportamiento de la API de Game Mode.
  • Propón parámetros de configuración de intervenciones de Game Mode a los OEMs
  • Inhabilitar de forma explícita las intervenciones de Game Mode

Segundo plano

En esta sección, se describe qué hacen las intervenciones del modo de juego y cómo optimizar tu juego para cada modo.

Cómo cambiar el tamaño del búfer de reserva de WindowManager

La intervención del cambio de tamaño del búfer de reserva de WindowManager puede reducir la carga sobre la GPU de un dispositivo. También puede disminuir el consumo de batería cuando el ritmo de un juego se ajusta a una velocidad de fotogramas objetivo.

Si habilitas el cambio de tamaño, se puede reducir hasta un 30% de la GPU y un 10% del uso general de energía del sistema. Los resultados pueden variar según el dispositivo que se use, las condiciones del entorno y otros factores, como el procesamiento simultáneo.

Es probable que un juego sin ritmo vinculado a la GPU experimente velocidades de fotogramas más altas durante cargas menores sobre la GPU.

Recomendamos que todos los juegos tengan un ritmo adecuado, ya que las velocidades de fotogramas desiguales afectan significativamente la forma en que los usuarios perciben el rendimiento.

Limitación de FPS

La limitación de FPS de Android es una intervención de Modo de juego que ayuda a los juegos a ejecutarse a una velocidad de fotogramas más estable para reducir el consumo de batería. La intervención está disponible en Android 13 o versiones posteriores. Para obtener más información, consulta la descripción general de la regulación de FPS.

Evalúa las intervenciones de Game Mode

En esta sección, se usa el comando adb.

Cómo configurar los modos

Debes inhabilitar los modos de juego en el archivo de configuración del modo de juego de la app antes de probar las intervenciones del modo de juego. De lo contrario, la plataforma las omitirá y solo respetará las optimizaciones en el juego.

<?xml version="1.0" encoding="UTF-8"?>
<game-mode-config
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:supportsBatteryGameMode="false"
    android:supportsPerformanceGameMode="false"
/>

Crea una copia de seguridad de la configuración existente del dispositivo (opcional)

En el caso de Pixel y otros dispositivos, es posible que haya una configuración de intervención de juegos preexistente en la configuración del dispositivo. Puedes consultar la configuración con el siguiente comando:

adb shell device_config get game_overlay <PACKAGE_NAME>

Si la consulta muestra null, ignora la configuración preexistente. De lo contrario, guárdala y vuelve a configurarla después de la evaluación.

Evalúa las intervenciones

Para evaluar de forma individual la intervención del cambio de tamaño del búfer de reserva de WindowManager, usa el siguiente comando para establecer diferentes valores de cambio de tamaño del búfer de WindowManager en los modos de juego.

adb shell device_config put game_overlay <PACKAGE_NAME>
mode=2,downscaleFactor=0.9:mode=3,downscaleFactor=0.5

En el ejemplo anterior, mode=2 es "Rendimiento" y mode=3 es "Ahorro de batería". El valor downscaleFactor se especifica como un porcentaje que se aplica al parámetro de configuración de cambio de tamaño (por ejemplo, 0.7 es el 70% y 0.8 es el 80%). Un cambio de tamaño del 90% (0.9) resulta casi insignificante, mientras que uno del 50% (0.5) es significativo.

Advertencia: Es posible que no se pueda cambiar el tamaño de los procesos secundarios de manera correcta en Android 12. En particular, asegúrate de que los avisos y las ventanas emergentes se rendericen correctamente. Te recomendamos que limites la configuración del cambio de tamaño a, al menos, un 70%.

Después de configurar las nuevas vales de cambio de tamaño, cambia entre los modos de juego para ver cómo la intervención de cambio de tamaño del búfer de reserva de WindowManager afecta a tu juego:

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

Asegúrate de reiniciar el juego después de cada selección de modo de juego. La intervención de reducción requiere que se reinicie la app.

Cómo inhabilitar las intervenciones

Puedes inhabilitar la opción que controla si se aplica una intervención al juego. Cada intervención tiene su propia configuración de inhabilitación.

  1. El mismo archivo de configuración en formato XML que se usa para controlar la habilitación o inhabilitación de los modos de juego también se usa para la configuración de intervención:
<?xml version="1.0" encoding="UTF-8"?>
<game-mode-config
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:allowGameDownscaling="false"
    android:allowGameFpsOverride="false"
/>
  1. Vuelve a compilar y enviar el juego a fin de inhabilitar la intervención.

De forma predeterminada, se usarán las intervenciones establecidas por los fabricantes de equipos originales (OEM), a menos que inhabilites su uso en el juego de forma explícita.

Recursos

Si deseas obtener más información para medir y optimizar el rendimiento del juego, consulta los siguientes recursos: