Sesiones lentas (solo para juegos)

Sesiones lentas es una nueva métrica de Android vitals en Google Play Console. Un estilo lento es aquella en la que más del 25% de los fotogramas son lentos. Un marco es lenta si no se presenta menos de 50 ms después del fotograma anterior (equivalente a 20 FPS). Android vitals también informa una segunda sesión lenta con un objetivo de 34 ms (equivalente a 30 FPS). Con las sesiones lentas, pueden comprender el rendimiento de la velocidad de fotogramas de tu juego para que los usuarios sientan la fluidez y la fluidez.

A su debido tiempo, Play comenzará a alejar a los usuarios de los juegos que no puedan alcanzan 20 FPS en sus teléfonos. Ten en cuenta que Android vitals solo comienza a supervisar velocidad de fotogramas después de que el juego estuvo en ejecución por un minuto.

Para obtener más detalles, visita nuestro Centro de ayuda. sobre la métrica.

Gráficos circulares que muestran la cantidad de fotogramas lentos y no lentos
Figura 1: Una sesión lenta en Android vitals

Cómo medir los FPS y detectar fotogramas lentos

El comando dumpsys surfaceflinger timestats de Android proporciona un valor promedio de FPS y presentar para presentar histograma de tiempo para todas las capas que se se renderizan. El tiempo presente a presente de un fotograma es el intervalo entre el fotograma actual y el anterior que se están dibujando. Estas son Para usar el comando a fin de recopilar los FPS de tu juego, sigue estos pasos:

  1. Ejecuta el comando con las marcas enable y clear para comenzar la captura. información:

    adb shell dumpsys SurfaceFlinger --timestats -clear -enable
    
  2. Cuando el juego se juegue lo suficiente, vuelve a ejecutar el comando con marca dump para volcar información:

    adb shell dumpsys SurfaceFlinger --timestats -dump
    

    La información de volcado proporciona el total de fotogramas y el histograma presenteToPresent para Todas las capas renderizadas por SurfaceFlinger. Deben encontrar la sección del juego mediante el filtrado según layerName:

    layerName = SurfaceView[com.google.test/com.devrel.MainActivity]@0(BLAST)#132833
    

    La velocidad de fotogramas lenta de la sesión podría calcularse en función de la información de cada capa.

    Por ejemplo, un porcentaje de fotogramas lentos de 20 FPS = (suma de valores de 54 ms a 1000 ms) / totalFrames x 100

    totalFrames = 274
    ...
    presentToPresent histogram is as below:
    0ms=0 1ms=0 2ms=0 3ms=0 4ms=0 5ms=0 6ms=0 7ms=0 8ms=0 9ms=0 10ms=0 11ms=0 12ms=0
    13ms=0 14ms=0 15ms=0 16ms=1 17ms=0 18ms=0 19ms=0 20ms=0 21ms=0 22ms=0 23ms=0
    24ms=0 25ms=0 26ms=0 27ms=0 28ms=0 29ms=0 30ms=0 31ms=0 32ms=0 33ms=269 34ms=0
    36ms=0 38ms=0 40ms=0 42ms=0 44ms=0 46ms=0 48ms=0 50ms=1 54ms=0 58ms=0 62ms=0
    66ms=0 70ms=1 74ms=0 78ms=0 82ms=0 86ms=0 90ms=0 94ms=0 98ms=0 102ms=0 106ms=0
    110ms=0 114ms=0 118ms=0 122ms=0 126ms=0 130ms=0 134ms=0 138ms=0 142ms=0 146ms=0
    150ms=0 200ms=0 250ms=0 300ms=0 350ms=0 400ms=0 450ms=0 500ms=0 550ms=0 600ms=0
    650ms=0 700ms=0 750ms=0 800ms=0 850ms=0 900ms=0 950ms=0 1000ms=0
    

    El promedio de FPS de cada capa también se muestra en el volcado:

    ...
    averageFPS = 30.179
    ...
    
  3. Luego de recopilar toda la información, debes inhabilitar el estadísticas de tiempo con la marca disable:

    adb shell dumpsys SurfaceFlinger --timestats -disable
    

Causas y soluciones de los fotogramas lentos

Hay muchas razones por las que un fotograma puede presentarse o renderizarse por más tiempo en la pantalla que el objetivo del desarrollador. El juego podría dependiente de la CPU/GPU. O Cuando el dispositivo se sobrecalienta y activa un estado térmico limitado O Hay una discrepancia entre la velocidad de fotogramas del juego y la pantalla del dispositivo frecuencia de actualización

Usa Android Frame Pacing (Swappy). Vulkan y ADPF como para solucionar estos problemas y mejorar el rendimiento de tu juego.

¿Qué es Swappy?

La biblioteca de Android Frame Pacing, también conocida como Swappy, es parte del Bibliotecas de AGDK. Swappy ayuda a los juegos de OpenGL y Vulkan lograr una renderización fluida y un ritmo de fotogramas correcto en Android

El ritmo de fotogramas es la sincronización de la lógica y el bucle de renderización de un juego con el subsistema de visualización de un SO y el hardware de visualización subyacente. Android el subsistema de visualización se diseñó para evitar artefactos visuales (conocidos como seccionamientos). que puede ocurrir cuando el hardware de la pantalla cambia a un fotograma nuevo a mitad de camino a través de una actualización. Para evitar estos artefactos, el subsistema de visualización no lo siguiente:

  • Almacena en búfer los fotogramas anteriores de forma interna
  • Detecta envíos tardíos de fotogramas
  • Cuando se detectan fotogramas tardíos, repite la visualización de los anteriores

Cómo usar Swappy en proyectos nativos

Consulta las siguientes guías para integrar la biblioteca de Android Frame Pacing en tu juego:

Cómo usar Swappy en el motor de juego de Unity

Unity integró Android Frame Pacing a su motor. Para habilitar esta función en Unity 2019.2 o superior, marca la casilla de Optimized Frame Pacing en Project Settings > Reproductor > Configuración de Android > Resolución y presentación:

Diálogo de configuración del proyecto
Figura 2: Habilita Frame Pacing en Unity Engine.

También puedes habilitar de manera programática la opción de Optimized Frame Pacing en tu código lógico para que Unity pueda Distribuyen los fotogramas para disminuir la variación en la velocidad de fotogramas, lo que permite una experiencia de juego más fluida.

Cómo usar Swappy en el motor de juego de Unreal

Unreal 4.25 y las versiones posteriores integran la biblioteca de Android Frame Pacing, que forma parte del Android Game Development Kit. En el artículo Mobile Frame Pacing, se explica cómo habilitar Android Biblioteca de Frame Pacing y cómo controlar el ritmo de fotogramas desde código C++

¿Qué es Vulkan?

Vulkan es una API de gráficos 3D multiplataforma moderna que se diseñó para minimizar la abstracción entre el hardware de gráficos del dispositivo y tu juego. Vulkan es la principal API de gráficos de bajo nivel de Android que reemplaza a OpenGL ES. OpenGL ES aún es compatible con Android, pero ya no se encuentra en desarrollo activo de funciones.

Vulkan ofrece las siguientes ventajas en comparación con OpenGL ES:

  • Arquitectura más eficiente con menor sobrecarga de CPU en el controlador de gráficos
  • Nuevas estrategias de optimización para mejorar el rendimiento de la CPU
  • Nuevas funciones gráficas que no están disponibles en OpenGL ES, como las APIs sin vinculación y trazado de rayos

Cómo usar Vulkan en proyectos nativos de Android

En el codelab Cómo comenzar a usar Vulkan en Android, se explica cómo configurar tu canalización de renderización de Vulkan y, luego, renderiza un triángulo con textura y rotación en la pantalla. Usa el codelab para aprender a renderizar los gráficos de tu juego.

Cómo usar Vulkan en el motor de juego de Unity

Para habilitar la selección automática de dispositivos en Unity, sigue los pasos de configuración API de Auto Graphics

Diálogo de configuración del proyecto
Figura 3: Habilitar la API de Auto Graphics de Unity

Como alternativa, puedes habilitar Vulkan de forma manual. Para ello, inhabilita la API de Auto Graphics. y coloca Vulkan en la prioridad más alta de la lista de APIs de Graphics. Si estás con Unity 2021.1 o una versión anterior, esta es la única manera de usar Vulkan.

Diálogo de configuración del proyecto
Figura 4: Elige Vulkan de forma manual como la API de gráficos principal en Unity.

Usa el complemento del motor de Unity VkQuality para proporcionar recomendaciones de tiempo de lanzamiento de la API de gráficos para que las use tu juego en dispositivos específicos.

Cómo usar Vulkan en el motor de juego de Unreal

Para habilitar la API de gráficos de Vulkan, navega a Configuración del proyecto > Plataformas > Android > Build y selecciona Support Vulkan. Si seleccionas Asistencia Vulkan y Compatibilidad con OpenGL ES3.2, Unreal usa Vulkan de forma predeterminada. Si el dispositivo no es compatible con Vulkan, Unreal recurre a OpenGL ES 3.2.

Diálogo de configuración del proyecto
Figura 5: Habilitar Vulkan en Unreal Engine

Si usas funciones específicas de Vulkan que se sabe que se comportan mal en algunos dispositivos, puedes personalizar tu archivo BaseDeviceProfile.ini para excluirlo esos dispositivos. Consulta Cómo personalizar los perfiles de dispositivos y la escalabilidad para Android. personaliza BaseDeviceProfile.ini. Como los controladores de dispositivos nuevos podrían solucionar el problema anteriormente, dispositivos maliciosos conocidos, mantén tu archivo BaseDeviceProfile.ini actualizado para obtener todos las optimizaciones.

¿Qué es ADPF?

El framework de rendimiento dinámico (ADPF) de Android Optimiza los juegos según las funciones dinámicas de administración térmica, de CPU y de GPU. en Android. La atención se centra en los juegos, pero también puedes usar las funciones para otros de alto rendimiento.

ADPF es un conjunto de APIs que permiten que los juegos y las apps de alto rendimiento interactúen de forma más directa con los sistemas térmicos y de alimentación de los dispositivos Android. Con estas APIs, puedes supervisar el comportamiento dinámico en sistemas Android y optimizar el rendimiento del juego a un nivel sustentable que no sobrecaliente los dispositivos

Estas son las funciones principales de ADPF:

  • API térmica: Supervisa el estado térmico de un dispositivo para que la aplicación pueda ajustar de manera proactiva la carga de trabajo antes de que se vuelva insostenible.
  • API de CPU Performance Hint: Proporciona sugerencias de rendimiento que le permitan a Android elegir la configuración de rendimiento correcta (por ejemplo, núcleo o punto operativo de CPU) para la carga de trabajo.
  • API de Game Mode y API de Game State: Habilita la optimización del juego priorizando las características de rendimiento o de duración de batería según la configuración del usuario y las configuraciones específicas del juego.
  • Modo de rendimiento fijo: Habilita el modo de rendimiento fijo en un dispositivo durante las comparativas para obtener mediciones que no se vean alteradas por el reloj dinámico de la CPU.
  • Modo de eficiencia energética: Indica a la sesión que los subprocesos de la sesión de sugerencias de rendimiento se pueden programar de forma segura para priorizar la eficiencia energética por sobre el rendimiento. Disponible en Android 15 (nivel de API 35).

Cómo usar ADPF en proyectos nativos de Android

El codelab Cómo integrar funciones de adaptabilidad en tu juego nativo te guía para integrar funciones de ADPF en tu con pasos que podrás seguir a tu propio ritmo. Al final del en este codelab, habrás integrado las siguientes funciones:

  • API térmica: Escucha las condiciones térmicas del dispositivo y reacciona antes de que entre en estado de limitación térmica.
  • API de Game Mode: Comprende las preferencias de optimización del jugador (maximiza el rendimiento o conserva la batería) y realiza ajustes según corresponda.
  • API de Game State: Informa al sistema el estado de tu juego (carga, juego, IU, etc.) y el sistema puede ajustar los recursos según corresponda (potencial E/S, CPU, GPU, etcétera).
  • API de Performance Hint: Informa al sistema tu modelo de subprocesos y tu carga de trabajo para que el sistema pueda asignar recursos según corresponda.

Cómo usar ADPF en el motor de juego de Unity

El rendimiento adaptable de Unity es una para desarrolladores que buscan optimizar sus juegos en dispositivos móviles especialmente para el ecosistema diverso de Android. El rendimiento adaptable permite para adaptar tu juego al rendimiento y las características térmicas del dispositivo en tiempo real, lo que garantiza una experiencia de juego fluida y eficiente.

Proveedor de Android para Rendimiento adaptable te guiará por los pasos para implementar ADPF en Unity.

Diálogo de configuración del proyecto
Figura 6: Integra el ADPF en Unity Engine.

Cómo usar ADPF en un motor de juego de Unreal

Diálogo de configuración del proyecto
Figura 7: Integra el ADPF en Unreal Engine.
  1. Descarga el complemento.
  2. Copia el complemento en la carpeta de complementos del proyecto
  3. Habilitar el complemento ADPF de Unreal Engine en el editor de Unreal
  4. Reiniciar el editor de Unreal
  5. Crea y cocina el juego

El complemento del framework de rendimiento dinámico de Android(ADPF) de Unreal Engine ofrece un rendimiento estable y previene la limitación térmica. Descarga el complemento desde GitHub. Este complemento cambia las funciones mediante la configuración Valores de consola de Unreal.