CLIENTE: Lanzamos la actualización del CEF

¡Lanzamos nuestra nueva versión del Chromium Embedded Framework (CEF) y los resultados se ven bien!

Nos comprometimos a compartir actualizaciones de lo que hacemos para mejorar el rendimiento y la estabilidad del cliente de LoL. La actualización de hoy es la novena de la serie. (Consulta la primera, la segunda, la tercera, la cuarta, la quinta, la sexta, la séptima y la octava aquí).

En resumen: actualizamos el navegador web del CEF (Chromium Embedded Framework) en el corazón del cliente de LoL en la versión 11.17 y observamos una mejora significativa en el uso de la memoria, una menor utilización de la CPU y menos fallas. Con esto, ahora podemos concentrarnos en planificar actualizaciones más frecuentes para mejorar la estabilidad y el rendimiento del cliente.

Actualización del Chromium Embedded Framework (CEF)

¡Es un gran momento para la campaña de limpieza del cliente! A principios de año, decidimos que actualizar la versión del cliente del Chromium Embedded Framework (CEF), es decir, el navegador web que constituye el núcleo de la arquitectura del cliente de LoL,a la versión 91 sería lo más significativo que podríamos hacer para mejorar el cliente. (Para contextualizar, la última vez que lo actualizamos fue en noviembre de 2019 a la versión 74...) Las ventajas de actualizar el CEF son dos: en primer lugar, mejora inmediatamente el uso de la memoria, la utilización de la CPU y la estabilidad. En segundo lugar, nos permite realizar muchas mejoras en el futuro, ya que viene con nuevas funciones y herramientas (hablaremos de esto más abajo). Por estos motivos, la actualización del CEF se convirtió en nuestra principal prioridad del año, y estamos muy contentos de anunciar que lanzamos con éxito la actualización a la versión 91 en la versión 11.17, con excelentes resultados hasta el momento.

Menos fallas del cliente

La actualización del CEF nos ayudó a solucionar muchas fallas del cliente. Nuestro objetivo es seguir solucionando las que más afectan a los jugadores. Estamos contentos de ver un descenso del 61% en las fallas desde la versión 11.16 y un descenso del 38% del promedio de fallas en 2021 hasta ahora, y planeamos seguir bajando esas cifras. ¡De hecho, los primeros datos de la versión 11.18 muestran otro gran descenso en las fallas! Esta es una victoria inmensa, ya que tenemos un gran número de inicios de clientes en cada versión (¡que pueden llegar a ser más de 240 millones en nuestras regiones de Riot!).

Versión

Cantidad de fallas

11.14 2,349,865
11.15* 3,686,442
11.16 3,161,145
11.17 1,214,155
(* La 11.15 tuvo un ciclo de versión más largo, lo que explica la cantidad mayor.)

Los principales culpables de las fallas restantes parecen ser las computadoras que se quedan sin memoria. Después de indagar un poco más, nos dimos cuenta de que casi la mitad de estas fallas por falta de memoria se produjeron en computadoras antiguas con Windows 7. Aunque algunos jugadores de todo el mundo juegan LoL en equipos antiguos con Windows 7 (nuestra especificación mínima actual), vamos a investigar cuántos de estos casos son bots, copias de Windows sin licencia o desactualizadas, u otras circunstancias que no son representativas de los jugadores habituales que juegan LoL legítimamente.

Uso de memoria reducido

Observamos una disminución significativa en el uso de la memoria de la interfaz de usuario del cliente durante una sola sesión. La interfaz de usuario del cliente se refiere a los elementos visuales con los que los jugadores interactúan, como botones, campos de texto y prácticamente todo lo que se puede ver y sobre lo que se puede hacer clic. En nuestras regiones de Riot, este es el resumen:

Versión del CEF

Jugadores en el percentil 20 (computadoras más rápidas)

Jugadores en el percentil 50 (computadoras de especificación media)

Jugadores en el percentil 90 (computadoras de especificación baja)

74 (antes de la versión 11.17) 359 MB 597 MB 1016 MB
91 (versión 11.17+) 74 MB 275 MB 598 MB
Mejora 285 MB (79%) 322 MB (54%) 418 MB (41%)

En este contexto, la memoria es como la atención: cuanto más se libera, más espacio tiene la computadora para realizar varias tareas o concentrarse en lo que ya está haciendo. Esto significa que hay menos fallas en el cliente y más memoria disponible para que puedas ver las transmisiones de la LCS y entrar a una cola clasificatoria al mismo tiempo.

Menor uso de la CPU

También observamos una disminución en la cantidad de potencia de la CPU que el cliente utiliza ahora. Aquí está el resumen en nuestras regiones de Riot:

Versión del CEF

Jugadores en el percentil 20 (computadoras más rápidas)

Jugadores en el percentil 50 (computadoras de especificación media)

Jugadores en el percentil 90 (computadoras de especificación baja)

74 (antes de la versión 11.17)

13%

34%

83%

91 (versión 11.17+)

10%

22%

72%

Porcentaje de reducción

23%

35%

15%

Esto significa que tu computadora no tiene que trabajar tanto para ejecutar el cliente, lo que hace que los procesadores se enfríen y consuman menos energía. Los videos, por ejemplo, exigen mucho a la CPU, mientras que el cliente de LoL no debería hacerlo. Básicamente, más Netflix y pentakills.

¿Qué nos depara esta nueva versión del CEF?

Aplicaciones basadas en Chromium

Las aplicaciones basadas en Chromium son algunas de las herramientas y programas de más rápido crecimiento en el desarrollo de software hoy en día. Probablemente ya estés usando una aplicación de Chromium para leer este artículo, para chatear en Discord con tus amigos y para escuchar esa lista de reproducción de las mismas 10 canciones en repetición por centésima vez. Cada una de esas aplicaciones utiliza Chromium, y también lo hace el cliente. Actualizar la versión del CEF del cliente nos da acceso a las nuevas funciones y mejoras de Chromium.

WebAssembly

Ahora hablaremos de WebAssembly, un formato de código que puede ejecutar instrucciones complejas mucho más rápido que el JavaScript básico, que es lo que todavía ejecutan muchas aplicaciones en el cliente (¿recuerdas las “aplicaciones de Ember” de las publicaciones anteriores?) CEF básicamente emula una “minicomputadora” especializada dentro del cliente que utiliza WebAssembly para procesar el código de manera más eficiente. Dado que WebAssembly es compatible con una amplia variedad de lenguajes de programación, facilita la reutilización del código existente, al mismo tiempo que nos proporciona la ventaja de rendimiento que implica la ejecución de procesos en esa “minicomputadora” especializada (en lugar de lanzar una aplicación independiente). WebAssembly se está adoptando lentamente en toda la web y la compatibilidad en Chromium mejora con cada versión. Tener acceso a WebAssembly hará que el cliente sea más rápido y nos permitirá hacer cosas que antes no podíamos hacer.

Web Workers

Por otro lado, están los Web Workers. Históricamente, las aplicaciones de Chromium se ejecutan de forma sincrónica, lo que significa que procesan una línea de código a la vez. Eso es como tener un solo trabajador en toda la línea de producción, mientras que los Web Worker*S* amplían el equipo para poder ejecutar varias líneas de código a la vez. Un Web Worker de chat podría encargarse de todo lo relacionado con el chat, mientras el cliente principal se enfoca en meterte en una partida. Así, si tienes un amigo muy hablador que te pide sugerencias de armados de Teemo, esa conversación ya no ralentizará el resto de tu experiencia en el cliente. Los Web Workers también harán que el cliente sea más rápido.

Incluso sin escribir código nuevo para aprovechar estas nuevas funciones, la actualización del CEF por sí sola ya ha hecho que el cliente sea más rápido gracias a un mejor manejo del JavaScript que ya habíamos escrito. A medida que mejoramos otras áreas del cliente, podemos enfocarnos en los métodos que funcionan bien con las mejoras de rendimiento nativas.

Otras actualizaciones

También mejoramos la experiencia del Fin de la Partida desde nuestra última publicación de la serie. En primer lugar, añadimos un código para recopilar datos sobre lo que ocurre exactamente durante la página de “Esperando estadísticas” que los jugadores siguen experimentando. Esto nos ayudó a identificar y mejorar el tiempo que tarda el proceso, ya que no debería ser tan largo como lo es actualmente. También enviamos una corrección en la versión 11.17 que redujo la posibilidad de que esa página se congelara por completo. En la versión 11.19 se introdujeron correcciones adicionales en el motor del juego para acelerar aún más el fin de la partida. Y, por último, pero no por ello menos importante, estamos entusiasmados con la integración de los Desafíos y estamos haciendo todo lo posible para asegurarnos de que esta nueva función no afecte el rendimiento y la estabilidad del cliente.

¿Qué sigue?

Nuestra actualización del CEF resultó ser extremadamente eficaz para mejorar el cliente, por lo que vamos a establecer un calendario de actualizaciones más frecuente (en lugar de una vez cada año y medio, je, je). En cuanto al resto de 2021, seguiremos dando prioridad a la estabilidad del cliente, abordando el fin de la partida con el equipo de Desafíos, solucionando los errores de alta frustración y continuando con la mejora de nuestro código para potenciar tu experiencia. ¡Gracias por acompañarnos en la celebración de este gran logro en la campaña de limpieza del cliente! Nos vemos en la próxima publicación.