Pulizia client: progressi, intoppi e scoperte
Un paio di mesi fa abbiamo annunciato i nostri programmi per sistemare il client di League of Legends con un piano che chiamiamo "Campagna di pulizia del client".
Il team di Riot è votato a tenervi informati su qualsiasi sviluppo, positivo o negativo che sia. Senza girarci troppo intorno, vogliamo che sappiate che ci vorrà ancora parecchio prima che potremo ritenerci soddisfatti delle prestazioni del client.
Nel blog di oggi vogliamo parlare dei progressi che abbiamo fatto, ma anche condividere con voi alcuni degli intoppi incontrati e spiegarvi come vogliamo superarli nelle prossime fasi dell'operazione.
QUALCHE PROGRESSO
Come abbiamo già detto nel nostro primo blog sulla pulizia del client, vogliamo innanzitutto ridurre il tempo di avvio a circa 15 secondi, anche per quel 10% dei giocatori che hanno il computer più lento. Il tempo di "bootstrap", per chi non lo ricordasse, è la quantità di tempo necessaria al client per avviarsi.
Per raggiungere questo obiettivo, abbiamo detto che avremmo consolidato e ridotto il numero di plugin e di applicazioni Ember nel client. Se non siete avvezzi a questa terminologia, sappiate solo che i plugin sono strumenti che ci permettono di dividere il codice del client in blocchi più maneggevoli, mentre le applicazioni Ember sono strumenti che gestiscono la nostra interfaccia utente.
Finora il lavoro in quest'ambito procede piuttosto bene. Nello schema qui sotto potete vedere la variazione del numero totale di plugin e di applicazioni Ember presenti nel client. Come potete notare, abbiamo ridotto questo numero a ogni nuova patch. Al momento, durante il bootstrap il client deve avviare circa il 10% di applicazioni Ember in meno e circa il 20% di plugin in meno rispetto a quando abbiamo avviato la nostra campagna.
Sono notizie incoraggianti! Tuttavia, abbiamo anche incontrato qualche intoppo che vorremmo condividere con voi.
QUALCHE INTOPPO
Nelle prime patch di quest'anno abbiamo visto miglioramenti significativi nei tempi di bootstrap, conseguenza del nostro lavoro sui plugin.
Tuttavia, a partire dalla patch 10.3 questi tempi hanno iniziato lentamente a muoversi nella direzione opposta, raggiungendo un picco negativo con la patch 10.7.
Il grafico qui sotto evidenzia queste tendenze. Per aiutarvi a capire quest'immagine, sappiate che per essere positive le curve devono restare il più possibile sul lato sinistro (che indica tempi di bootstrap più rapidi).
Una delle spiegazioni plausibili per questa recente battuta d'arresto è l'aumento di carico registrato nelle ultime settimane sui server di LoL. Per motivi piuttosto ovvi, al momento tantissime persone nel mondo passano molto più tempo a casa e giocano molto di più a LoL, mettendo a dura prova la nostra infrastruttura server e causando tempi di risposta discordanti e tempi di bootstrap maggiori per il client.
Ci siamo già attivati per aumentare la capacità dei server in modo da far fronte a questo afflusso, pertanto presto potremmo vedere di nuovo dei miglioramenti nelle prestazioni del client. I nostri interventi terranno comunque in considerazione altre possibili cause; per esempio, ci stiamo occupando anche di ridurre la quantità di codice JavaScript caricato durante il bootstrap.
Qualunque sia il motivo di questo rallentamento, noi restiamo fiduciosi: come abbiamo già detto nel primo articolo sull'argomento, mentre ci occupiamo del tempo di bootstrap e (in futuro) di quello della selezione del campione, stiamo continuando a ripulire e migliorare altri aspetti fondamentali dell'architettura del client.
Ciò significa che stiamo risolvendo bug e scavando a fondo tra i problemi fondamentali dell'architettura che creano più grattacapi.
Tra questi, ne abbiamo scovato uno che riguarda una funzionalità del client chiamata Affinity.
IL PROBLEMA DI AFFINITY
Affinity era stata lanciata come funzionalità con l'aggiornamento del client di qualche anno fa. In pratica è uno strumento che ci permette di specificare quali plugin vanno caricati prima di completare il bootstrap.
Abbiamo riscontrato due problemi con Affinity:
- Affinity non funzionava correttamente. A un certo punto, nel 2018, Affinity ha inavvertitamente smesso di funzionare correttamente. Per questo motivo, a oggi il client carica per opzione predefinita ogni singolo plugin durante il bootstrap e nel post-partita
- Anche se venisse riparato, Affinity non risolverebbe i nostri problemi. Siamo abbastanza convinti che Affinity, anche quando funzionava come previsto, non riuscisse comunque a gestire efficientemente le priorità dei plugin. Per farla semplice, il client ha sempre avuto un problema con l'eccessivo numero di plugin caricati durante il bootstrap
In breve: dobbiamo rimpiazzare Affinity con una soluzione migliore e più efficiente.
Si tratta di una scoperta sorprendente, ma che accredita una delle convinzioni principali che avevamo quando abbiamo iniziato a lavorare sul client: prendendoci del tempo per scavare a fondo nei meandri del client, siamo riusciti ad arrivare alla radice di alcuni problemi.
PROSSIME FASI
Ora che sappiamo che Affinity non sta facendo ciò per cui è stato progettato, possiamo implementare una nuova soluzione che dia effettivamente la priorità ai giusti plugin. In questo modo ridurremo i tempi di bootstrap per i giocatori e potremo intervenire sul client in modo più robusto.
Ciò non cambierà profondamente i nostri piani per sistemare il client, ma potrebbe rallentarci un po'. Si tratta in ogni caso di una scoperta positiva, perché rende più chiaro il percorso che dobbiamo seguire: se il risultato finale sarà un'esperienza meno problematica e più affidabile per voi giocatori, allora i nostri sforzi non saranno stati inutili.
Quando saremo riusciti a ridurre il bootstrap del client a un tempo soddisfacente, daremo il via alla seconda fase della Campagna di pulizia del client: ridurre i tempi di risposta del client nella selezione del campione. Per la maggior parte di voi l'intervento sulla selezione del campione è ovviamente la parte più interessante di questa campagna, e anche noi non vediamo l'ora di metterci all'opera.
Continueremo a tenervi aggiornati sui nostri progressi pubblicando un altro articolo come questo entro un paio di mesi. Come sempre, grazie per il vostro interesse.