LIMPIEZA DEL CLIENTE: 2021 hasta ahora y futuro
Nos comprometimos a compartir actualizaciones periódicas sobre nuestro trabajo en curso de cara a mejorar el rendimiento y la fiabilidad del cliente de LoL.
La actualización de hoy es la séptima de la serie (echad un vistazo a la primera, la segunda, la tercera, la cuarta, la quinta y la sexta).
Resumen: Hemos pasado el primer trimestre de 2021 dedicándonos a prepararnos para mejorar la estructura incrustada de Chromium (CEF, según sus siglas en inglés). Todavía nos queda algo de trabajo por terminar, pero esperamos pasar a una nueva versión de la estructura de Chromium (CEF) a finales del segundo trimestre, lo que traerá consigo multitud de ventajas para los jugadores.
Actualización de la estructura incrustada de Chromium (CEF)
Como mencionamos la última vez, uno de los grandes proyectos en los que estamos trabajando es en actualizar la versión de la estructura incrustada de Chromium (CEF) del cliente, es decir, el navegador web que sirve de base a la arquitectura del cliente de LoL. Por así decirlo, la última vez comprendimos su importancia. Actualizar la CEF es el cambio individual que más impacto puede tener a la hora de mejorar el cliente, tanto en lo referido a ventajas directas como a permitirnos implementar otras mejoras.
La última vez que actualizamos la CEF fue en noviembre de 2019 (versión 74), mientras que la versión más actual en el momento en el que hemos escrito este artículo, es la CEF 90. Actualizar la CEF (planeamos implementar la CEF 90) traerá consigo los siguientes beneficios:
- Reducción de las caídas del cliente
- Las versiones obsoletas de la CEF no funcionan bien con algunos tipos de hardware. Los datos iniciales nos indican que la mayoría de las caídas podrían deberse a una versión obsoleta de la CEF. Creemos que, tras la actualización, los jugadores experimentarán menos caídas.
- Mejoras de compatibilidad
- El equipo de CEF prueba exhaustivamente sus nuevas versiones con diferentes combinaciones de hardware. El cliente de LoL se beneficiará de dichas pruebas de forma gratuita.
- Rendimiento más rápido de los websockets
- El cliente está formado por dos grandes apartados: el "frontal", que es la aplicación visual con la que interactuáis, y una "base" mucho más pequeña que se ejecuta en segundo plano, reúne los datos de nuestros servidores y monitoriza toda la información que el cliente necesita para mostraros los elementos correctos. Estos son algunos ejemplos de las funciones de la base:
- "Este jugador ha activado la función que cierra el cliente durante las partidas y acaba de entrar en partida; cerrar el apartado frontal hasta que acabe".
- "Este jugador acaba de abrir la pestaña de la colección. ¿Qué campeones tiene?".
- Un websocket es, básicamente, un canal que conecta el apartado frontal con la base. Si ese canal es "más grande y tiene menos giros", hará que los datos viajen más rápido, y eso es lo que supondrá para nosotros implementar una versión más reciente de la CEF. Las mejoras de los websockets pueden conllevar un mejor rendimiento en los momentos en los que se transfieran más datos (final de partida, selección de campeón), especialmente para los jugadores que cuenten con un hardware más antiguo. Comparando ambas versiones de la CEF, la diferencia podría llegar a esto:
- 4,1 veces más rápido en Windows.
- 7,8 veces más rápido en Mac.
- El cliente está formado por dos grandes apartados: el "frontal", que es la aplicación visual con la que interactuáis, y una "base" mucho más pequeña que se ejecuta en segundo plano, reúne los datos de nuestros servidores y monitoriza toda la información que el cliente necesita para mostraros los elementos correctos. Estos son algunos ejemplos de las funciones de la base:
- Rendimiento mejorado de las animaciones
- Esto afecta concretamente a los elementos animados procedimentalmente en base a datos, como la barra de experiencia de la pantalla de fin de partida (contamos con muchas animaciones de este estilo). Dichas animaciones son, técnicamente, un tipo de fuga de memoria, por lo que el rendimiento general del cliente en sesiones largas de juego también mejorará.
- Mejora de los FPS - Reducción de la "lentitud" y reconocimiento más rápido de los clics
- Mayor facilidad para los desarrolladores a la hora de trabajar con él (más rápido y fiable)
- Formas adicionales de impedir fugas de memoria en largas sesiones de juego.
- Una nueva métrica que nos proporciona mejores datos en lo relativo a lo que tarda el cliente en renderizar la pantalla.
- Uso más inteligente de la CPU
- La versión actual de la CEF del cliente (74) lanzó una función llamada "servicio de red", que redirige todas las solicitudes de red a través de un único canal de vuestra CPU, dejando libres los demás canales para otras funciones, como cargar contenido. Actualmente, no utilizamos dicha función, porque era nueva cuando actualizamos la CEF por última vez y no tuvimos tiempo de experimentar con ella. En nuestra siguiente actualización, podemos empezar a planear su compatibilidad con LoL.
- Rendimiento mejorado de JavaScript
- Las nuevas versiones de Chromium traen consigo mejoras significativas para el motor V8 que utiliza para ejecutar JavaScript. Al igual que con las mejoras de compatibilidad, esta ventaja la obtendremos con solo actualizar la versión.
Durante el anterior trimestre, nos hemos centrado en actualizar nuestros componentes web existentes (como la tecnología de la web para incrustar vídeos, las notificaciones emergentes y demás) a versiones que sean compatibles con las nuevas versiones de la CEF, para asegurarnos de no cargarnos nada con la actualización. Queremos que la actualización de estos componentes sea una experiencia fluida, así que, con suerte, no os habréis dado cuenta de que hemos estado implementando estos cambios durante las últimas versiones. Estas mejoras afectan a una gran cantidad de código, por lo que, ocasionalmente, esperamos encontrarnos con algún problema menor que escape a la fase de pruebas. No obstante, solucionaremos estos problemas en cuanto los detectemos.
Dicho esto, solo nos quedan unas semanas para terminar con las mejoras de estos componentes y poder pasar a actualizar la propia CEF, tarea que esperamos terminar para finales de julio de 2021.
Panel social
El panel social es otra de las áreas en las que nos estamos centrando que mencionamos la última vez. Nuestro plan a largo plazo es pasar el panel social de ComponentsJS (la antigua arquitectura) a Ember. Actualmente, esta tarea está en espera mientras nos centramos en actualizar la CEF, aunque ya hemos completado algunos de los pasos iniciales necesarios para la transición a Ember y volveremos a centrarnos en ello tras terminar con la actualización de la CEF.
Estos son algunos de los problemas principales que resolvimos con el panel social antes de pasar a centrarnos en la mejora de la CEF:
- El panel social no se conecta.
- La lista de amigos no carga, se muestran estados incorrectos y los amigos no aparecen.
- La información de las clasificatorias no se muestra cuando un jugador se encuentra en una partida normal.
- Durante el arranque, parpadea de "Desconectado" al poro triste y a "Cargando lista de amigos".
Novedades sobre la memoria necesaria y los errores de JavaScript
También hemos continuado monitorizando la memoria necesaria para partidas jugadas en una única sesión. Nos alegra comunicar que hemos observado una caída de casi 30 MB por partida jugada desde la versión 10.25 y un descenso continuado de las caídas por falta de memoria.
El último punto sobre el que queremos hablar son los errores de JavaScript. En nuestra publicación anterior, nos equivocamos en la cifra real de errores de JavaScript que experimentan los jugadores de las regiones de Riot. En la versión 10.25, la cifra alcanzó la increíble cantidad de 265 millones. Lo positivo es que solo enfatiza más la urgencia de este problema, puesto que la cifra real de errores que han experimentado los jugadores no ha cambiado, solo nuestra forma de contarlos. Desde entonces, hemos reducido el número de errores a 140 millones por versión y estamos seguros de poder reducir esta cifra todavía más.
Planes de futuro
Aunque a corto plazo vamos a centrarnos en la mejora de la CEF, también estamos organizando los proyectos que queremos emprender más adelante en 2021.
- Pasar el panel social a Ember, como hemos mencionado antes.
- Revisar el final de partida. Aunque nos encargamos de un par de problemas importantes del rendimiento del final de las partidas el año pasado y a principios de este, todavía nos queda trabajo por delante. Muchos jugadores se siguen quejando de lo mucho que se tarda en volver al cliente y/o de que la pantalla de final de partida se queda colgada. Cuando comience este proyecto, empezaremos analizando todas las interacciones del cliente con el motor del juego y los servicios, y, después, veremos cómo podemos mejorar la experiencia. El final de partida trabaja con muchos otros servicios de los que no se encarga el equipo del cliente, por lo que parte del proceso consistirá en colaborar con otros equipos para priorizar las correcciones colectivas.
- Entrar tarde en la selección de campeón. Este es un problema que afecta mucho a algunas regiones, lo que nos indica que depende de la conexión a la red de los jugadores (las infraestructuras de internet varían de una región a otra). Aunque no podemos hacer mucho para solucionar los problemas de red, trabajaremos junto al equipo de experiencia competitiva para asegurarnos, desde el cliente, de que todos los jugadores entren en la selección de campeón en un periodo razonable de tiempo.
- Estabilidad del cliente durante largas sesiones de juego. Una las tares emergentes de finales del año pasado consistía en encargarnos de las pérdidas de memoria, que provocan que el cliente utilice más memoria si los jugadores echan varias partidas o dejan abierto el cliente durante largos periodos de tiempo. Ahora que vamos a llevar a cabo un seguimiento más extenso, buscaremos formas intuitivas de que los jugadores experimenten el cliente como si acabasen de iniciar sesión, sin importar la cantidad de partidas que hayan jugado o el tiempo que el cliente lleve abierto. Puede que la solución a este problema consista en redoblar esfuerzos y encargarnos de las fugas de memoria más significativas, pero tendremos que comparar ese trabajo con otras soluciones a corto plazo.
¡Y hasta aquí las novedades! Como siempre, nuestro trabajo está muy influenciado por los comentarios que nos enviáis a través de diversos medios, como las encuestas que realizamos frecuentemente a jugadores. Por favor, seguidnos contando en qué partes del cliente deberíamos centrarnos y cuál de nuestros cambios ha afectado más a vuestra experiencia.