Dev
Presentamos la campaña de limpieza del cliente

Este año, haremos mejoras a la infraestructura del cliente. El objetivo: mejorar el cliente.

DevAutoresRiot Cactopus, Riot Sparango, Riot Id, Riot A Huevo
  • Se copió al portapapeles

En resumen: durante los próximos seis meses, lanzaremos una serie de cambios y mejoras a la estructura interna del cliente de LoL. Para hacer un seguimiento del proceso, compartiremos objetivos específicos para dos de las métricas principales de rendimiento del cliente: el tiempo de arranque del cliente (cuánto tiempo le toma al cliente iniciarse) y el tiempo de confirmación de la selección de campeones. A medida que vayamos mejorando estas métricas, también abordaremos cuestiones como errores, caídas, etc. Dicho de otra forma, nuestro objetivo es arreglar el cliente.

"Riot, ¿cuándo van a arreglar el cliente?"

Esta es una pregunta que muchos nos hacen con frecuencia. El cliente no está en óptimo estado. Tiene demasiados errores, mucho lag (en particular, al seleccionar campeones) y un montón más de problemas como pérdidas de memoria, caídas, pantallas congeladas, etc. En el pasado, nos comprometimos a solucionar los problemas del cliente, pero aún quedan varios por resolver.

Así que queremos probar un enfoque distinto.

En vez de hablar vagamente sobre nuestros planes, hoy te contaremos nuestros objetivos específicos con respecto al rendimiento y daremos detalles concisos sobre los cambios que deseamos implementar durante los próximos seis meses.

En primer lugar, hablemos sobre algunas mejoras de rendimiento que aplicamos recientemente para analizar algunas estadísticas que nos servirán como referencia a medida que trabajemos en futuras mejoras.

ESTADÍSTICAS DEL CLIENTE

A fines del año pasado, agregamos algunas herramientas al cliente que nos permiten observar indicadores de rendimiento básicos, como por ejemplo, la cantidad de tiempo que le toma al cliente iniciarse y estar completamente operativo (es decir, el "arranque").

Nuestra meta es que el arranque tome menos de 15 segundos, aun para los jugadores con computadoras relativamente lentas. Sin embargo, descubrimos que, actualmente, el arranque puede llevar el triple o el cuádruple de ese tiempo para algunos jugadores.

Otra cuestión relevante que venimos analizando es el tiempo de "confirmación de la selección de campeones". Es el tiempo que le toma al cliente registrar que confirmaste el campeón luego de hacer clic en el botón. En el siguiente gráfico, verás los tiempos de respuesta promedio de la confirmación de la selección de campeones de las versiones 9.22 (línea naranja) y 10.2 (línea azul). El tiempo de respuesta de la confirmación se calcula en milésimas de segundo.

Client-Cleanup-Blog-2-Charts_spa-MX.jpg

El siguiente gráfico muestra lo amplia que puede ser la diferencia en los tiempos de respuesta de la selección de campeones para distintos jugadores. Por supuesto, el rendimiento del cliente varía según la velocidad de cada computadora. Si, por ejemplo, te toma menos de 200 ms confirmar la selección, tu computadora pertenece al percentil 10 y tus tiempos de respuesta son más rápidos que los del 90% de todos los jugadores. De forma similar, si tus tiempos de respuesta están por sobre los 800 ms, perteneces al percentil 90, lo que significa que tu cliente funciona más lento que el del 90% de todos los jugadores.

Como puedes ver, los tiempos de confirmación mejoraron bastante para los jugadores en la versión 10.2, en comparación con la 9.22. La razón principal de dicha mejora es que, en la versión 9.23, actualizamos la versión de Chromium con la que funciona el cliente. Esto nos otorgó algunas mejoras importantes, pero creemos que el cliente aún es muy lento para muchas personas.

Para entender esto, demos un vistazo a un gráfico más detallado sobre la velocidad de confirmación de la selección de campeones para algunos de esos grupos específicos.

Client-Cleanup-Blog-1-Charts_spa-MX.jpg

Como puedes ver, la línea azul representa el percentil 50 o el jugador "promedio". La considerable reducción en el tiempo de respuesta para el jugador promedio es buena. Pero se nota que, incluso desde principio del 2020, los tiempos de respuesta de la selección de campeones para el jugador promedio rondan los 300 ms. Si bien no es catastrófico, evidencia un retraso visible.

Los jugadores del percentil 70 (línea verde) también experimentaron grandes mejoras recientemente, pero sus tiempos de respuesta de la selección de campeones rondan los 450 ms. Eso es un retraso de casi medio segundo que, a decir verdad, es mucho más lento de lo que deseamos para alguien con una computadora medianamente decente.

Por último, horroricémonos con el percentil 90 (línea naranja). Estos jugadores experimentarán tiempos de respuesta más lentos que los de la mayoría. Pero 800 ms es demasiado alto y este es el punto en el que dichos jugadores se estancaron, aun después de la actualización de Chromium.

¡Bien! Ahora hablemos de lo que planeamos hacer.

NUESTRA SIGUIENTE PRIORIDAD

Hay dos objetivos a largo plazo específicos con respecto al rendimiento del cliente que priorizaremos:

  1. Queremos reducir el tiempo de arranque a cerca de 15 segundos, aun para el percentil 90 de los jugadores. Eso es entre tres y cuatro veces más rápido, comparado con su velocidad actual.
  2. Queremos reducir los tiempos de respuesta en la confirmación de la selección de campeones a cerca de 100 ms para el percentil 90 de los jugadores. Eso es cerca de ocho veces más rápido que en la actualidad.

Sabemos qué estás pensando. ¿Qué hay de los errores? ¿Y qué hay de las caídas y de las pérdidas de memoria?

¿Por qué priorizar estas dos cuestiones primero? El motivo de esto es que, al abordar el tiempo de arranque y el tiempo de confirmación de la selección de campeones, también limpiaremos y rediseñaremos algunos aspectos esenciales de la arquitectura del cliente. Creemos que podremos abordar errores, pérdidas de memoria y caídas del sistema a la vez que trabajamos en estos objetivos.

Problemas como el error de "pantalla negra" en la selección de campeones y el de las páginas de runas que no se guardan adecuadamente son cuestiones que queremos abordar como parte de este proceso. Pero queremos dejar muy en claro que esto nos tomará un tiempo. Actualmente, contamos con una planificación a seis meses que nos permitirá lograr un avance considerable hacia estos objetivos. Aunque probablemente nos tomará más tiempo concretar nuestros objetivos a largo plazo.

Estos son nuestros objetivos, pero puede que no se cumplan nuestras expectativas. Compartimos nuestros objetivos contigo porque sabemos que, para recuperar la confianza en el cliente, tenemos que ser lo más transparentes posibles.

Entonces, te preguntas: ¿cómo vamos a lograrlo exactamente?

CÓMO VAMOS A LOGRARLO

Hasta ahora, identificamos los dos principales problemas en la arquitectura que contribuyen a la ralentización de los tiempos de arranque. El primero de los problemas es nuestra arquitectura de complementos, que nos permite dividir el código del cliente en segmentos útiles. Esta arquitectura se saturó a medida que fuimos agregando nuevas funciones al cliente. El segundo es el uso inadecuado de la estructura de Javascript (llamada Ember) que da soporte a nuestra interfaz de usuario.

En la actualidad, el cliente usa demasiados complementos y aplicaciones de Ember. De hecho, durante el proceso de arranque del cliente, cargamos 41 complementos y 16 aplicaciones. Cada uno de estos demora entre 100 ms y 800 ms en iniciarse. Y eso no está bien.

Nuestro plan es sintetizar todos esos complementos y aplicaciones hasta que sean mucho menos numerosos (y, en teoría, más eficientes). Nos enfocaremos primero en aquellos que se inicien durante el arranque, ya que suponemos que eso otorgará los mayores beneficios al cliente.

FASE 1: ARRANQUE

Actualmente, a muchos jugadores les toma hasta 40 segundos completar el arranque. Si este es tu caso, sabes bien que puede ser una experiencia sumamente lenta y molesta. Esto también implica que, si tu cliente se cae, el proceso de reinicio es mucho más insufrible. 

Hay varios elementos en el cliente, como las notificaciones, la lista de amigos y la pestaña de colección, que se ven afectados por los complementos y las aplicaciones que se inician durante el arranque. Así que, aunque declaremos que nuestro objetivo a largo plazo sea reducir el tiempo de arranque a 15 segundos para los jugadores del percentil 90, creemos que durante ese proceso abordaremos muchos errores e ineficiencias que afectan al cliente en su totalidad.

Luego de algunos meses de enfocarnos en el arranque, evaluaremos qué tan cerca estamos de nuestros objetivos y después (es probable que a fines de mayo) nos aboquemos específicamente a la selección de campeones.

FASE 2: SELECCIÓN DE CAMPEONES

La selección de campeones incluye muchos complementos y aplicaciones de Ember adicionales. Dicho de otra forma, casi todo lo que hagas en la selección de campeones crea nuevas aplicaciones. Intercambiar campeones genera dos aplicaciones. Al igual que cambiar tu hechizo de invocador.

Mientras más juegues LoL en una sola sesión, más aplicaciones se acumularán sucesivamente, lo que ralentizará cada vez más la experiencia de juego. Este problema se debe a que la mayoría de las acciones que realizas durante la selección de campeones dependen de la comunicación con nuestros servidores, lo que suma latencia a cada interacción.

La raíz del problema de la selección de campeones se haya en el modo en que nuestros sistemas internos gestionan los datos. La arquitectura actual de la selección de campeones nos permite enviar muchos datos importantes a través de nuestros sistemas. Por ejemplo, si Riot decide inhabilitar un campeón en las clasificatorias, dicho campeón se desactivará casi inmediatamente para todos los jugadores, incluidos aquellos que estén seleccionando su campeón en el momento de la desactivación.

Es un sistema muy potente, pero exige muchos recursos para hacerlo funcionar. Y, dada la configuración actual del sistema, hay muchas puertas innecesarias y embotellamientos en el proceso. Así que es frecuente que miles de datos se vuelvan a generar cuando solo se cambió un pequeño ajuste. En consecuencia, esto afecta gravemente la experiencia de cliente.

Para solucionar esto, básicamente deberemos cambiar el modo en que funciona la infraestructura interna de la selección de campeones. Rediseñaremos la forma en que se envían todos los datos desde el servidor al cliente durante la selección de campeones, lo que nos llevará un tiempo.

Tenemos otros objetivos ambiciosos a largo plazo que podrían optimizar aún más la selección de campeones, como sintetizar todo el cliente en una sola aplicación de Ember que no tenga complementos. Pero por ahora, queremos implementar los cambios suficientes como para que el cliente funcione a las velocidades que planificamos y que mostramos previamente.

No sabemos bien qué tan cerca de lo "óptimo" habremos llegado para el final del proceso de seis meses. Pero creemos que cuando ese día llegue, habremos progresado muchísimo y sabremos qué debemos hacer a continuación.

PRÓXIMOS PASOS

Cada tantos meses, daremos cuenta de nuestro progreso a través de los blogs de desarrollador, que incluirán algunas estadísticas sobre rendimiento y cualquier cambio que hagamos a la planificación del proyecto.

¡Deséanos suerte! Y gracias por jugar LoL. Hablaremos pronto.



  • Se copió al portapapeles