La creación y el ajuste de perfiles de rendimiento son tareas complejas que pueden parecer más un arte que una ciencia. Las muchas partes móviles que deben sincronizarse perfectamente en un juego, combinadas con la complejidad de una escena determinada, pueden dificultar la comprensión y el aislamiento de los problemas. En ChromeOS, muchas herramientas se diseñaron teniendo en cuenta los chipsets ARM. A continuación, se incluyen algunas sugerencias para acelerar el proceso.
Algo que debes tener en cuenta cuando optimizas específicamente el rendimiento de tu juego en ChromeOS es que los problemas de rendimiento subyacentes se comparten en todos los dispositivos, y las mejoras beneficiarán el rendimiento y la duración de la batería para todos los usuarios. Es posible que ChromeOS, con su tendencia a pantallas más grandes y dispositivos de entrada de escritorio, simplemente muestre ciertos problemas con mayor facilidad. Por ejemplo, un algoritmo de carga de texturas ineficiente puede “funcionar bien” en dispositivos móviles de gama alta, pero no ser capaz de seguir el ritmo en una Chromebook con una pantalla 4K. Mejorar el algoritmo mejorará el juego en todos los dispositivos.
Si no tienes experiencia en la generación de perfiles, un buen enfoque general es el siguiente:
- Determina si el rendimiento está limitado por lo siguiente:
- CPU
- GPU
- Otro: Entrada/Disco/Red
- Intenta aislar la causa principal
- Intenta optimizarla
- Repetir
En la mayoría de los casos, los juegos se mostrarán como “limitados por la CPU” o “limitados por la GPU”. Con las sugerencias y herramientas de generación de perfiles que se indican a continuación, intenta determinar en qué parte del sistema se “invierte el tiempo” en cada fotograma. Por ejemplo, si tarda mucho en calcular y cargar los vértices antes de que la GPU comience a renderizar, es posible que tu juego esté limitado por la CPU. En cambio, si usas una gran cantidad de filtros detallados basados en la GPU, es probable que tu juego esté limitado por la GPU. Recuerda que muchos teléfonos celulares y dispositivos ChromeOS no tienen tarjetas gráficas discretas. Un juego para computadoras que supone que los filtros de GPU son rápidos puede descubrir que las GPU integradas tardan demasiado en renderizar cada escena.
Para obtener más detalles sobre cómo abordar la generación de perfiles, consulta la guía de ARM sobre "El proceso de optimización".
Herramientas
Si bien es posible determinar los cuellos de botella por tu cuenta, tener las herramientas adecuadas facilitará el análisis del rendimiento de tu juego y te dará la confianza de que te estás enfocando en lo correcto. Existen muchas herramientas, pero estos son algunos de nuestros programas favoritos.
Android Studio Profiler
La forma más fácil de comenzar a generar perfiles de cualquier app para Android es con el generador de perfiles de Android Studio integrado. En Android Studio, en lugar de presionar “Run”, simplemente elige “Profile” para ejecutar tu app y obtener estadísticas en tiempo real sobre el uso de la CPU, la memoria y la red. Los registros de CPU simples pueden ser una forma rápida de aislar áreas de código para analizar.
Esta herramienta no proporciona información real sobre el uso de la GPU ni sobre lo que sucede entre cada sincronización de fotogramas, por lo que, si bien es una buena herramienta para tener en la caja de herramientas, es probable que no sea suficiente para que tu juego se ejecute con el máximo rendimiento.
Snapdragon Profiler
Dado que el comportamiento de tus juegos será el mismo en todos los dispositivos, una buena forma de obtener información detallada sobre el rendimiento es usar Snapdragon Profiler en un teléfono ARM basado en Qualcomm. Aunque no se realiza un análisis directamente en un dispositivo ChromeOS, esto debería brindarte información sobre dónde pasa la mayor parte del tiempo tu juego en cada fotograma y puede darte información específica sobre qué llamadas a la GPU se están usando.
Por ejemplo, si ves que se dedica una gran cantidad de tiempo a los filtros de GPU anisotrópicos y que estos dominan el trabajo que se realiza en cada fotograma, es probable que puedas obtener grandes mejoras en el rendimiento si cambias este parámetro de configuración.
Si ves que los tiempos de GPU son cortos y regulares, pero los tiempos de CPU son dominantes y hacen que pierdas sincronizaciones de fotogramas, consulta tus algoritmos de carga de texturas o preparación de fotogramas.
Consulta la documentación oficial de uso para obtener más información.
ARM Mobile Studio
Otro analizador de dispositivos ARM útil es ARM Mobile Studio. Es posible que algunos desarrolladores lo prefieran al Snapdragon Profiler, pero se puede usar de formas similares. Consulta la documentación de uso oficial.
Inspector de GPU para Android
El Inspector de GPU de Android es una nueva herramienta desarrollada por Google y diseñada específicamente para ayudarte a obtener el mejor rendimiento de tu juego con OpenGL y Vulkan. Actualmente, se encuentra en versión preliminar para desarrolladores, por lo que es posible que se requiera algo de trabajo para configurarla y, por el momento, solo funciona en unos pocos dispositivos. Promete ser una de las principales herramientas para el análisis de gráficos en el futuro. Consulta la documentación oficial.
Registro de la descripción general de ARC
También hay una herramienta más generalizada, ARC Overview Tracing, que funciona de manera similar a la herramienta ARC Graphics Tracing anterior. Este registrador proporcionará métricas generales sobre el rendimiento de una app y de ChromeOS. Las lecturas te mostrarán los FPS de la app y de Chrome, así como el uso de la CPU y la GPU, el consumo de energía y mucho más. Puedes ejecutar la herramienta varias veces y ver los gráficos de cada ejecución superpuestos con colores para diferenciarlos. Cada modelo de seguimiento se guardará en tu carpeta de descargas y se podrá volver a importar para comparaciones futuras. Para las verificaciones de estado generales de la app, el registro de ARC Overview es un buen punto de partida.
Visita chrome://arc-overview-tracing en el navegador de ChromeOS para acceder a esta herramienta.
Próximos pasos
Quizás encontraste algunos embudos, pero no sabes qué hacer al respecto. O bien, ya los encontraste y solucionaste, pero no sabes qué hacer a continuación. A continuación, compilamos una lista de sugerencias y recursos generales de Android y específicos del motor para ti.
Sugerencias generales
El portal para desarrolladores de Android tiene sugerencias excelentes para mejorar el rendimiento de tu aplicación. Allí encontrarás consideraciones sobre el tiempo de carga, cómo utilizar el procesamiento de subprocesos múltiples, cómo controlar el retraso de entrada y mucho más.
Recuerda crear perfiles de forma anticipada y frecuente, en especial si te enfocas en máquinas menos potentes o si superas los límites de la arquitectura de alta gama. Hacer un seguimiento de las estadísticas de rendimiento de tu app te ayudará a identificar qué cambios afectaron la velocidad de fotogramas y cuáles te ayudan a mantener la experiencia fluida que buscas.
Motor de Unity
Además de la documentación general de Android, Unity proporciona documentación específica de ChromeOS para ayudarte a crear una aplicación de ChromeOS de alto rendimiento con su motor. Consulta la documentación de ChromeOS sobre cómo comenzar, entrada, depuración y compilación, que incluye cómo crear compilaciones x86. Para obtener información sobre el rendimiento, consulta Comprensión de la optimización y el curso sobre Rendimiento y optimización.
Considera leer la guía de ARM sobre cómo generar perfiles y optimizar juegos de Unity y sus prácticas recomendadas asociadas. Te guiaremos por el proceso de generación de perfiles de un juego de ejemplo en Unity con la herramienta Streamline, una faceta de ARM Mobile Studio.
Unreal Engine
Unreal escribió sus propios documentos de lineamientos de rendimiento y sugerencias y trucos que te enseñan a aprovechar al máximo muchas de las opciones y parámetros de configuración que proporciona el motor. Aquí encontrarás trucos sobre el nivel de detalle, cómo aprovechar al máximo la iluminación, guías paso a paso sobre la configuración de calidad de los materiales y los sombreadores, entre otras sugerencias.
Para obtener más información sobre las optimizaciones basadas en gráficos, ARM escribió una guía para optimizar los juegos para dispositivos móviles. Aquí puedes encontrar sugerencias generales de optimización y consideraciones gráficas específicas de Unreal.