
Mir 2: Return of the King es un juego para dispositivos móviles de alta calidad con la IP de Legend autorizado por Actoz Soft y desarrollado por HK ZHILI YAOAN LIMITED con el motor de juego Unity.
Este juego no solo recrea a la perfección los sentimientos de Mir 2, un representante de los MMORPG de fantasía coreanos, sino que también ofrece muchos de los contenidos de juego más populares, como la colección de equipos, el ataque de arena a gran escala y otros elementos básicos del juego.
El juego usó la biblioteca de Frame Pacing de Android (Swappy) para mejorar la estabilidad de su velocidad de fotogramas, lograr una renderización fluida y aumentar significativamente sus Android vitals (métrica de sesión lenta).
Lanzamiento de las sesiones lentas en Android vitals
Sesiones lentas es una métrica de Android vitals en Google Play Console. Una sesión lenta tiene más del 25% de fotogramas lentos. Un fotograma es lento en los siguientes casos:
A 20 fps, no se presenta en un plazo de 50 ms después del fotograma anterior.
A 30 fps, no se presenta dentro de los 34 ms posteriores al fotograma anterior.
A su debido tiempo, Play comenzará a alejar a los usuarios de los juegos que no puedan alcanzar los 20 FPS en sus teléfonos.
Existen muchos motivos por los que un fotograma puede mostrarse o renderizarse más tiempo en la pantalla que el tiempo de fotogramas objetivo del desarrollador. Es posible que el juego esté limitado por la CPU o la GPU, que se sobrecaliente (lo que causa la limitación térmica) o que haya una discrepancia entre la velocidad de fotogramas del juego y la frecuencia de actualización de la pantalla del dispositivo.
¿Qué es la biblioteca de Frame Pacing?
La biblioteca de Android Frame Pacing, también conocida como Swappy, es parte de las bibliotecas de AGDK. Swappy ayuda a los juegos de OpenGL y Vulkan a lograr una renderización fluida y un ritmo de fotogramas correcto en Android.
La biblioteca controla varias frecuencias de actualización si el dispositivo las admite, lo que le proporciona al juego una mayor flexibilidad a la hora de presentar un fotograma. Por ejemplo, en un dispositivo que admite tanto una frecuencia de actualización de 60 Hz como una de 90 Hz, un juego que no puede producir 60 fotogramas por segundo puede disminuir a 45 FPS en lugar de 30 FPS para que continúe sin problemas. La biblioteca detecta la velocidad de fotogramas esperada del juego y ajusta automáticamente los tiempos de presentación de fotogramas según corresponda.
La biblioteca de Frame Pacing también mejora la duración de batería porque evita actualizaciones de pantalla innecesarias. Por ejemplo, si un juego se renderiza a 60 FPS, pero la pantalla se actualiza a 120 Hz, la pantalla se actualiza dos veces por cada fotograma. La biblioteca de Frame Pacing evita esto configurando la frecuencia de actualización en el valor que admite el dispositivo que está más cerca de la velocidad de fotogramas objetivo.
Cómo mejoró Mir 2 el rendimiento de la renderización con la biblioteca de Frame Pacing
Mir 2 (미르2: 왕의 귀환) tenía un problema con el rendimiento de renderización inestable, en el que experimentaba un 40% de sesiones lentas con un umbral de velocidad de fotogramas de 20 FPS, mucho más alto que el umbral del 20% de Google Play.

Mir 2 (미르2: 왕의 귀환) es un juego gráfico de alta fidelidad, y algunos dispositivos tienen dificultades para mantener un FPS estable. Su distribución de velocidad de fotogramas muestra que muchas sesiones se ejecutan a FPS inferiores a 20 fps.

Cada bucket representa el porcentaje de sesiones en las que el 75% de sus fotogramas fue más rápido que la etiqueta del bucket.
Cuando la carga de trabajo de visualización tarda más que la carga de trabajo de la aplicación, se agregan fotogramas adicionales a una fila. Una vez más, esto genera un salto y también puede provocar un fotograma adicional de latencia debido al exceso en búfer.

La biblioteca de Frame Pacing resuelve este problema con vallas de sincronización (EGL_KHR_fence_sync
y VkFence
) que insertan esperas en la aplicación que permiten que se actualice la canalización de pantalla, en lugar de permitir la generación de contrapresión. El fotograma A aún presenta un fotograma adicional, pero ahora el fotograma B se presenta correctamente.

Mir 2 integró fácilmente la biblioteca de Frame Pacing aprovechando la función Optimized Frame Pacing integrada de Unity. La acción generó una mejora significativa en el rendimiento de renderización, en particular, redujo la métrica de sesión lenta del 40% al 10%.

La cantidad de sesiones lentas se redujo significativamente en Mir2 después de que integraron la biblioteca.

Cada bucket representa el porcentaje de sesiones en las que el 75% de sus fotogramas fue más rápido que la etiqueta del bucket.
Comienza a usar la biblioteca de Frame Pacing
Cómo usar la biblioteca de Frame Pacing en motores de juegos nativos
Consulta las siguientes guías para integrar la biblioteca de Android Frame Pacing a tu juego:
- Integra Android Frame Pacing a tu procesador de Vulkan
- Cómo integrar Android Frame Pacing en tu procesador OpenGL
Cómo usar la biblioteca de Frame Pacing en el motor de juegos de Unity
Unity integró la biblioteca de Android Frame Pacing en su motor. Para habilitar esta función en Unity, marca la casilla de verificación Optimized Frame Pacing en Project Settings > Player > Settings for Android > Resolution and Presentation:

Como alternativa, habilita de forma programática la opción de Frame Pacing optimizado en tu código lógico para permitir que Unity distribuya los fotogramas de manera uniforme y disminuya la variación en la velocidad de fotogramas, lo que crea una jugabilidad más fluida.
Cómo usar la biblioteca de Frame Pacing en el motor de juegos Unreal
Unreal 4.25 y versiones posteriores integran la biblioteca de Frame Pacing de Android, que forma parte de Android Game Development Kit. En el artículo sobre Frame Pacing para dispositivos móviles, se explica cómo habilitar la biblioteca de Frame Pacing de Android y cómo controlar el ritmo de fotogramas desde el código C++.