Cómo optimizar las frecuencias de actualización

Android 15 establece una frecuencia de actualización predeterminada de 60 Hz para los juegos para optimizar el consumo de energía. Para desbloquear tasas de fotogramas más altas, como 120 FPS, ahora debes solicitarlas de forma explícita con la API de Frame Rate o la biblioteca de Swappy.

Sin embargo, el sistema puede anular esta solicitud en función de factores como el nivel de batería o la temperatura del dispositivo. Si bien las frecuencias de actualización más altas mejoran la fluidez visual, también requieren más energía y generan calor adicional. Por lo tanto, es fundamental ofrecer a los usuarios la opción de elegir su frecuencia de actualización preferida y supervisar cuidadosamente el rendimiento para garantizar una experiencia del usuario equilibrada.

Usa la API de setFrameRate()

La API de setFrameRate() permite que los desarrolladores de juegos usen una frecuencia de actualización de pantalla específica. Para ello, sigue estos dos pasos:

  1. Verifica la compatibilidad del dispositivo y la versión de Android.
  2. Solicita FPS altos con setFrameRate().

Verifica la compatibilidad del dispositivo y la versión de Android:

Usa los métodos Display.getSupportedModes() para determinar si el dispositivo admite 90 Hz, 120 Hz o alguna otra frecuencia de actualización. Si el dispositivo está limitado a 60 Hz, no es posible superar este límite.

Kotlin

val display = windowManager.defaultDisplay
val supportedModes = display.supportedModes
for (mode in supportedModes) {
  Log.d("DisplayInfo", "Supported mode: ${mode.physicalWidth}x${mode.physicalHeight}, ${mode.refreshRate}Hz")
}

Solicita FPS altos

Invoca setFrameRate() cuando se inicia el bucle de renderización, durante la inicialización de la ventana del juego o cuando los FPS objetivo deben cambiar la frecuencia de actualización de la pantalla.

Incluso si solicitas una frecuencia más alta, es posible que el sistema limite la frecuencia de actualización a 60 Hz debido a factores como el modo de ahorro de energía o la regulación térmica. Si el rendimiento de renderización del juego no alcanza los FPS objetivo, solicitar una frecuencia de actualización más alta puede consumir energía innecesaria y aumentar la temperatura del dispositivo.

En el siguiente fragmento, se muestra cómo evitar una frecuencia de actualización demasiado alta con la API de setFrameRate().

Kotlin

val targetFps = 120f
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
  window.setFrameRate(
      targetFps,
      Window.FrameRateCompatibility.FRAME_RATE_COMPATIBILITY_FIXED_SOURCE,
      0
  )
}

En la página Framerate, encontrarás información más detallada para seguir leyendo.

Usa la biblioteca de Frame Pacing

La biblioteca de Frame Pacing, o Swappy, es una biblioteca de código abierto diseñada para simplificar la administración de VSync y la programación de fotogramas en motores de juegos para Android de C/C++. Esta herramienta optimiza el proceso de optimización de las frecuencias de actualización y actúa de manera eficaz como una capa de abstracción de nivel superior sobre funciones como setFrameRate(). Además, Swappy proporciona funciones adicionales que pueden mejorar la fluidez y el rendimiento general de tu juego.

En la página de Swappy, encontrarás información más detallada.

Sugerencias adicionales para obtener los mejores resultados

En la siguiente sección, se describen varias sugerencias principales:

  1. Conmutación dinámica de velocidad de fotogramas
  2. Supervisión del rendimiento
  3. Proporciona opciones de FPS según la frecuencia de actualización máxima de la pantalla.

Conmutación de velocidad de fotogramas dinámica

Para optimizar el rendimiento y el consumo de energía, considera implementar el cambio dinámico de velocidad de fotogramas en tu juego. Esta técnica te permite realizar transiciones sin problemas entre frecuencias de actualización más altas, como 120 Hz, para una jugabilidad más fluida durante escenas exigentes, y frecuencias más bajas, como 60 Hz, durante momentos menos intensivos o cuando la duración de batería es una preocupación o se orienta a menos de 60 FPS. Si se ejecuta constantemente a 120 Hz, puede generar una generación de calor excesiva y un agotamiento rápido de la batería, lo que podría provocar una experiencia del usuario negativa. Si ajustas de forma inteligente la frecuencia de actualización en función de la carga de renderización actual y las condiciones del dispositivo, puedes lograr un equilibrio entre la fidelidad visual y la eficiencia energética.

Control del rendimiento

Para garantizar que tu juego tenga un rendimiento óptimo a velocidades de actualización más altas, integra herramientas de supervisión del rendimiento, como un contador de fotogramas o una superposición de rendimiento. Estas herramientas proporcionan comentarios en tiempo real sobre la velocidad de fotogramas real de tu juego, lo que te permite verificar si alcanzas de forma coherente los 120 FPS objetivo.

Si la velocidad de fotogramas fluctúa de forma significativa, considera segmentar una velocidad de fotogramas más baja en el dispositivo determinado. Esto puede brindar una experiencia más fluida sin los problemas de rendimiento que pueden ocurrir cuando se intenta obtener la tasa de actualización más alta.

Proporciona opciones de FPS según la frecuencia de actualización máxima de la pantalla

El juego debe detectar la frecuencia de actualización máxima de la pantalla que admite el dispositivo actual, como 60 Hz, 90 Hz o 120 Hz, y limitar la configuración de FPS según corresponda. Por ejemplo, si el dispositivo solo admite hasta 60 Hz, se recomienda inhabilitar las opciones superiores a 60 FPS en la configuración del juego para evitar confundir al jugador.