Limpieza del cliente: progreso y descubrimientos
Hace un par de meses, anunciamos nuestros planes para arreglar el cliente de League of Legends, un trabajo al que hemos bautizado como "campaña de limpieza del cliente".
El equipo de Riot se ha comprometido a manteneros al día en lo relativo a nuestro progreso, incluso cuando tenemos problemas. Hablando en plata, todavía queda mucho trabajo hasta que estemos contentos con el rendimiento del cliente.
En la publicación de hoy hablaremos sobre cómo hemos progresado. Además, compartiremos información sobre algunos de los contratiempos con los que nos hemos topado y sobre cómo pensamos hacerles frente en nuestros siguientes pasos.
ALGUNOS PROGRESOS
Como dijimos en nuestra primera publicación sobre el cliente, primero queríamos centrarnos en reducir el tiempo de arranque a alrededor de 15 segundos, incluso para el percentil 90.º de jugadores. Como recordatorio, el tiempo de arranque es una medida que representa cuánto tarda en iniciarse el cliente.
Con este objetivo en mente, dijimos que íbamos a consolidar y reducir el número de plugins y aplicaciones de Ember del cliente. Si es la primera vez que oís hablar de esta terminología, solo tenéis que saber que los plugins son herramientas que nos permiten separar el código del cliente en partes útiles, y las aplicaciones de Ember son herramientas que controlan nuestra interfaz de usuario.
Hasta ahora, el trabajo en este área ha avanzado bastante bien. En la gráfica de abajo se puede ver el número total de plugins y aplicaciones de Ember del cliente a lo largo del tiempo. Hemos ido reduciendo dicho número en cada versión. En comparación con cuando empezamos con este proceso, ahora el cliente tiene que cargar un 10 % menos de aplicaciones de Ember y un 20 % menos de plugins durante el arranque.
¡Son buenas noticias! Sin embargo, también nos hemos topado con algunos contratiempos que queremos compartir con vosotros.
ALGUNOS CONTRATIEMPOS
En las primeras versiones del año, vimos cambios significativos en el tiempo de arranque gracias a nuestro trabajo con los plugins.
Sin embargo, desde la versión 10.3, empezamos a ver cómo los tiempos de arranque se movían lentamente en la dirección equivocada, representando la versión 10.7 un mínimo en los tiempos de arranque en la gráfica.
Podéis verlo en la gráfica de abajo. Para ayudaros a entender esta gráfica, tened en cuenta que lo que queremos es que las curvas se muevan lo más cerca posible hacia el lado izquierdo de la gráfica (tiempos de arranque más rápidos).
Una posible explicación para los contratiempos recientes es el aumento de presión que han experimentado los servidores de League of Legends durante las últimas semanas. Debido a motivos obvios, muchos de vosotros estáis pasando más tiempo en casa. Estáis jugando muchísimo a League of Legends y eso supone un desafío para la infraestructura de nuestros servidores, lo que tiene como resultado tiempos de respuesta inconsistentes y tiempos de arranque más lentos en el cliente.
A medida que aumentemos la capacidad de los servidores para dar cabida al tráfico, es posible que volvamos a ver cambios verdaderamente positivos en el rendimiento del cliente. También investigaremos otras posibles causas, como reducir la cantidad de código de Javascript que se carga durante el arranque.
Independientemente de la causa de los contratiempos, todavía hay esperanza. Como dijimos en nuestra primera publicación del blog de desarrollo, durante el proceso de mejora del arranque y los tiempos de la selección de campeón (lo siguiente en nuestra lista), vamos a revisar y mejorar ciertos aspectos fundamentales de la arquitectura del cliente.
Esto significa que vamos a corregir errores y a profundizar en algunos de los principales problemas de la arquitectura del cliente que os provocan dolores de cabeza.
Uno de los problemas de la arquitectura que hemos descubierto está relacionado con una función del cliente llamada "Affinity".
EL PROBLEMA DE AFFINITY
Implementamos esta función cuando "actualizamos el cliente" hace unos años. Básicamente, se trata de una herramienta que nos permite especificar qué plugins es necesario cargar antes de que se complete el arranque.
Hemos descubierto dos problemas relacionados con dicha herramienta:
- Se rompió. En algún momento de 2018, Affinity se rompió sin que nos diésemos cuenta. Dado que no está funcionando correctamente, el cliente carga por defecto todos los plugins durante las cargas de arranque y de después de cada partida.
- Aunque la arreglásemos, no resolvería nuestros problemas. Creemos que incluso cuando Affinity funcionaba como habíamos planeado, no priorizaba la carga de plugins de una forma eficiente. Sin rodeos, el cliente siempre ha tenido problemas relacionados con cargar demasiados plugins durante el arranque.
En resumen: tenemos que reemplazar Affinity con una solución mejor y más eficiente.
Este descubrimiento nos ha cogido por sorpresa, pero nos sirve para validar una de las razones principales por las que empezamos a trabajar en el cliente: al haber dedicado tiempo a profundizar en los entresijos del cliente, hemos podido descubrir algunas de las causas de los problemas.
SIGUIENTES PASOS
Ahora que sabemos que la herramienta de Affinity no está haciendo lo que debería, podemos implementar una nueva solución que sí priorice los plugins correctamente. Al hacerlo, aceleraremos los tiempos de arranque de los jugadores y llevaremos a cabo otra parte importante del trabajo en el cliente.
Nada de esto altera significativamente nuestros planes para arreglar el cliente, pero puede que nos retrase un poco. De cualquier modo, consideramos que este descubrimiento es algo bueno, ya que nos deja más claro el camino que tenemos que seguir. Si esto da lugar a una experiencia con menos errores y más fiable para vosotros en general, nuestro esfuerzo habrá valido la pena.
Cuando hayamos conseguido reducir los tiempos de arranque hasta que estemos satisfechos, pasaremos a la segunda fase de la campaña de limpieza del cliente: reducir los tiempos de respuesta del cliente en la selección de campeón. El trabajo relativo a la selección de campeón es, obviamente, la parte más interesante de esta campaña para muchos de vosotros, y nosotros también estamos ansiosos por empezar con ello.
Seguiremos informándoos sobre nuestro progreso. Publicaremos otro artículo como este en los próximos meses. Como siempre, ¡gracias por jugar!