LIMPIEZA DEL CLIENTE: Resumen del 2020 y qué está por venir

Vamos a repasar el progreso que hicimos en 2020 y a hablar sobre nuestros planes para 2021.

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 sexta de la serie (echad un vistazo a la primera, la segunda, la tercera, la cuarta y la quinta).

Resumen: nos pasamos el 2020 mejorando el tiempo de arranque del cliente, la arquitectura, la selección de campeón, el final de la partida, las pérdidas de memoria y las caídas del cliente, además de corrigiendo errores. Ahora nos encontramos en plena fase de planificación del primer trimestre de 2021, donde nos centraremos principalmente en el panel social y en continuar mejorando la estabilidad general del cliente.


Resumen de 2020

Nuestro equipo se formó a finales de 2019 y, al principio, la mayor parte de nuestro trabajo giró en torno a entender en qué estado se encontraba el cliente de LoL. Como parte del proceso, decidimos centrarnos en las partes del cliente que los jugadores a nivel mundial (¡todos vosotros!) más nos mencionaron para determinar qué hacer con el objetivo de mejorar el cliente. Todavía nos queda mucho por hacer, pero, si echamos la vista atrás a 2020, fuimos capaces de implementar mejoras bastante significativas.

  • Lanzamos nuestra encuesta mundial sobre el cliente para los jugadores y la utilizamos para determinar en qué debíamos trabajar. La mayoría de los logros listados abajo son el resultado de lo que nos comentaron los jugadores.
  • Reducimos el tiempo de arranque (inicio) del cliente hasta los 16 segundos para el 90 % de los jugadores a nivel mundial (desde los 29,5 s al inicio de 2020).
    • Pudimos lograrlo gracias a nuestro trabajo en la arquitectura, lo que incluye una reducción del 63 % en el arranque de aplicaciones de Ember (las que se cargan cuando se inicia el cliente) y una reducción del 57 % de los plugins del cliente. En otras palabras, limpiamos muchísimo código.
  • Mejoramos la capacidad de respuesta y la fiabilidad de la selección de campeón al seleccionar y bloquear campeones.
    • Corregimos problemas de rendimiento al filtrar por campeones e implementamos mejoras a la pantalla de selección de campeón en sí misma.
    • Investigamos el uso de determinadas funciones en la selección de campeón. Hablaremos más sobre ello más adelante.
    • Mejoramos el tiempo de selección y bloqueo de campeones.
    • Corregimos pérdidas de memoria en la selección de campeón y relacionadas con dicha pantalla (más información abajo).
  • Evitamos que el cliente se cuelgue o muestre una pantalla en negro cuando los jugadores vuelven a él al final de la partida.
  • Evitamos que el cliente se quede colgado mostrando el botón de "Reconectar" al final de la partida, cuando ni siquiera debería haber aparecido.
  • En 2020, corregimos 175 errores, desde cosas pequeñas a problemas que llevan muchísimo tiempo con nosotros.
    • Los nombres de jugador que aparecían como "..." en el chat.
    • La barra de tareas que no se iluminaba al recibir un mensaje en el chat.
    • El panel social que no aparecía para los nuevos jugadores.
    • Los ajustes que se reiniciaban cuando un jugador iniciaba sesión desde otro ordenador.
    • Las notificaciones de regalos que se repetían al iniciar sesión.
    • Las ocasiones en las que los jugadores volvían a una pantalla negra después de realizar varias acciones en el cliente.
  • Mejoramos la capacidad de respuesta de la pestaña de colecciones y de sus subsecciones.
  • Redujimos el tiempo de carga de la pestaña de runas en un 40 %, hicimos que la interfaz de las runas funcione sin problemas y conseguimos que su uso sea más fiable.
  • Solucionamos 30 casos de pérdida de memoria por todo el cliente. Esta tarea resultó particularmente difícil y la descubrimos más adelante en el año, así que nos alegra haber podido implementar mejoras antes de las vacaciones.
    • Las pérdidas de memoria se producen cuando una parte del programa falla a la hora de liberar su memoria después de completar una tarea. Esto hace que haya disponible menos memoria para los demás programas del sistema. Los resultados de esto siempre son malos, pero las causas resultan particularmente difíciles de descubrir, especialmente cuando se trata de grandes aplicaciones.
    • Antes de solucionar las primeras pérdidas de memoria en la versión 10.23, los jugadores de las regiones de Riot experimentaron 193 000 cuelgues por falta de memoria en cada versión. En la última versión de 2020, la versión 10.25, ¡observamos un descenso del 55 % en este tipo de problemas!


Como mencionamos anteriormente, utilizamos vuestras respuestas a la encuesta mundial sobre el cliente para decidir en qué centrarnos. La mejoras enumeradas arriba representan el progreso en las áreas que más nos mencionasteis, pero esto solo importa si opináis que todo avanza en la dirección adecuada. Por eso, nos alegra informaros de que, además de las métricas basadas en el juego, las tendencias de las encuestas son positivas en general. ¡Esto significa que cada vez más jugadores tienen una experiencia menos frustrante en el cliente!

Menos frustrante, que no perfecta. Este año, todavía nos quedan muchas metas por alcanzar y seguiremos contándoos las novedades.


Funciones poco utilizadas de la selección de campeón

En nuestra anterior publicación, mencionamos que estábamos estudiando la eliminación de algunas funciones poco utilizadas de la selección de campeón para mejorar el rendimiento general. Después de estudiar los favoritos, las misiones y los emoticonos, decidimos no eliminar ninguna de ellas, por lo que nos centraremos en mejorarlas. Ya hemos corregido un error relacionado con los emoticonos y nos estamos dedicando a asegurarnos de que los favoritos y las misiones funcionen como es debido.


Qué tenemos pensado

Actualmente, estamos terminando de planear el primer trimestre del año, pero aquí tenéis lo que pretendemos abordar ahora en el cliente de LoL:

Panel social

Hemos observado un repunte de problemas relacionados con el panel social a lo largo del año pasado. En diciembre, corregimos un error que provocaba que los avisos a amigos en partida no mostrasen el tipo de partida ni el campeón. Estos son los siguientes problemas que abordaremos:

  1. El panel social no se conecta.
  2. La lista de amigos no carga, se muestran estados incorrectos y los amigos no aparecen.
  3. No se enviarán solicitudes de amistad a los jugadores que tengan la lista de amigos completa.
  4. La información clasificatoria no se muestra cuando un jugador se encuentra en una partida normal.
  5. El chat parpadea al enviar mensajes uno detrás de otro.
  6. Las carpetas se reordenan de una sesión a otra.
  7. Las carpetas de LoR y VALORANT desaparecen al ordenarlas con "Agrupar por juego y servidor".
  8. Al hacer clic sobre "Mostrar fechas" en el cuadro del chat se superponen cajas de texto.
  9. Las notificaciones de solicitud de amistad solo aparecen cuando la opción está desactivada, y viceversa.

También vamos a deshacernos del antiguo marco de referencia de Javascript (seguid leyendo para saber más) y pasaremos el panel social a Ember. Dicha transición será una buena oportunidad para revisarlo y limpiar el código, lo que traerá consigo una mayor fiabilidad y menos errores.

Estabilidad del cliente

Ahora vamos a introducir dos nuevas áreas en las que nos centraremos para mejorar la estabilidad del cliente de LoL: cuelgues del cliente y errores de Javascript, que pueden causar montones de efectos, como... cuelgues del cliente. Para ello, en lugar de dedicarnos a una parte específica del cliente (como la selección de campeón o el tiempo de arranque del cliente), vamos a estudiar el cliente en general. Además de centrarnos en la estabilidad, lo que ya estábamos haciendo, estos son los cuatro puntos principales:

  • Reducción de los cuelgues: en la versión 10.25, los jugadores de 16 regiones de Riot experimentaron 2,2 millones de cuelgues del cliente. Después de estudiar la situación, parece que nuestra mejor opción para solucionar la mayoría de los cuelgues consiste en actualizar nuestra versión de Chromium, que es el navegador web que se encuentra en el centro de la arquitectura del cliente de LoL.
  • Reducir los errores de Javascript: en la versión 10.25, los jugadores de 16 regiones de Riot experimentaron 36 millones de errores de Javascript (JS) en el cliente. Aunque no todos los fallos de JS acaban en una caída del juego o afectan al rendimiento, incluso los errores invisibles pueden acumularse, lo que sí puede acarrear ese tipo de problemas. Reducir esta cifra conllevará un gran número de mejoras en todo el cliente.
  • Seguir solucionando pérdidas de memoria: algunos de nuestros mayores éxitos del año pasado consistieron en solucionar varias pérdidas de memoria. Queremos seguir teniendo éxito este año.
  • Seguir trabajando en la arquitectura para limpiar nuestro código base: Para actualizar Chromium, como hemos mencionado más arriba, tenemos que completar un montón de prerrequisitos, lo que mejorará el rendimiento del cliente de por sí. Planeamos completar este trabajo y lanzar la actualización de Chromium hacia mediados de año.
    • La última vez que actualizamos Chromium fue en diciembre de 2019, algo antes de que empezase la campaña de limpieza del cliente. Observamos grandes resultados después de dicha actualización (usad CTRL+F para buscar "Chromium") y anunciaremos las mejoras que traerá consigo esta siguiente actualización cuando se acerque la fecha de lanzamiento.

Agradecemos los comentarios que nos enviáis sobre el cliente, ¡os escuchamos! Nos ha ido bien en 2020, ¡y queremos aprovechar esta buena racha con el objetivo de seguir mejorando el cliente para nuestros jugadores!