PULIZIA CLIENT: il 2021 fin qui e il futuro
Ci siamo impegnati a pubblicare aggiornamenti periodici sullo stato dei lavori di miglioramento delle prestazioni e dell'affidabilità del client di LoL.
Quello di oggi è il settimo post di questa serie. (Potete trovare il primo post qui, il secondo qui, il terzo qui, il quarto qui, il quinto qui e il sesto qui).
In breve: abbiamo passato il primo trimestre del 2021 a sbloccare la possibilità di aggiornare il Chromium Embedded Framework (CEF). Abbiamo ancora del lavoro da completare ma riceverete una nuova versione del Chromium Embedded Framework (CEF) entro la fine del secondo trimestre, che porterà una grande quantità di benefici per i giocatori.
Aggiornare il Chromium Embedded Framework (CEF)
Come abbiamo accennato l'ultima volta, uno dei progetti più importanti a cui stiamo lavorando consiste nell'aggiornamento della versione del client del Chromium Embedded Framework (CEF), il browser che sta al centro dell'architettura del client di LoL. L'ultima volta, non abbiamo spiegato abbastanza chiaramente la sua importanza, quindi cerchiamo di essere più diretti: l'aggiornamento del CEF è la singola modifica più importante che possiamo implementare per migliorare il client, in termini di benefici diretti e di accesso a ulteriori miglioramenti.
L'ultima volta che lo abbiamo aggiornato era il novembre del 2019 (versione 74) e, al momento di uscita di questo post, la versione più recente è la CEF 90. Aggiornare il CEF (stiamo lavorando per il CEF 90) porterà i seguenti benefici:
- Riduzione dei blocchi del client
- Le versioni più vecchie del CEF entrano spesso in conflitto con alcuni hardware. I dati iniziali mostrano che la maggior parte dei blocchi potrebbe essere provocata da una versione obsoleta del CEF. Siamo convinti che, dopo l'aggiornamento, i giocatori incontreranno meno blocchi
- Migliorie di compatibilità
- Il team del CEF testa ampiamente le nuove versioni in relazione a molte combinazioni di hardware. Il client di LoL riceve i benefici di questi test gratuitamente
- Prestazioni più veloci per i WebSocket
- Il client di LoL è costituito da due parti principali: il "front end", che consiste nell'applicazione visiva con cui interagite, e una parte di "fondamenta" più piccola, che opera dietro le quinte, recuperando i dati dai nostri server e tenendo traccia di tutte le informazioni necessarie al client per fornirvi ciò che vi serve. Esempi di ciò che fanno le "fondamenta":
- "Il giocatore ha abilitato un'impostazione per chiudere il client durante le partite ed è appena entrato in una; chiudere il front end finché la partita non termina."
- "Il giocatore ha appena aperto la scheda Collezioni: quali campioni possiede?"
- Praticamente, un WebSocket è un tubo che collega il front end alle fondamenta: un tubo più grande e con meno curve permette di trasmettere più dati più rapidamente ed è questo che riusciremo a ottenere grazie a una nuova versione del CEF. In particolare per i giocatori con hardware più vecchi, i miglioramenti ai WebSocket possono offrire prestazioni migliori nelle aree in cui si verificano grossi trasferimenti di dati (Fine partita, Selezione del campione). Se paragoniamo le versioni del CEF in questione, la differenza potrebbe anche arrivare a essere:
- 4,1x più veloce su Windows
- 7,8x più veloce su Mac
- Il client di LoL è costituito da due parti principali: il "front end", che consiste nell'applicazione visiva con cui interagite, e una parte di "fondamenta" più piccola, che opera dietro le quinte, recuperando i dati dai nostri server e tenendo traccia di tutte le informazioni necessarie al client per fornirvi ciò che vi serve. Esempi di ciò che fanno le "fondamenta":
- Migliori prestazioni nelle animazioni
- Nello specifico, le animazioni che vengono animate in modo procedurale in base ai dati, come la barra dell'esperienza nella schermata di Fine partita (e ce ne sono parecchie di questo tipo). Tecnicamente, queste animazioni costituiscono un tipo di perdita di memoria, quindi l'aggiornamento comporterà anche un miglioramento delle prestazioni generali del client nel corso di sessioni più lunghe
- Aumento degli FPS: riduzione del "ritardo" e un riconoscimento più rapido dei clic
- Renderà più facile (quindi più rapido e affidabile) il lavoro dei nostri sviluppatori
- Modi aggiuntivi per evitare perdite di memoria durante le sessioni di gioco più lunghe
- Un nuovo parametro che ci permette di avere dati migliori sui reali tempi di trasmissione a schermo dei dati del client
- Utilizzo più efficiente della CPU
- La versione del CEF del client attuale (74) ha introdotto una funzionalità chiamata "Servizio di rete" che reindirizza tutte le richieste di rete attraverso un singolo thread della CPU, liberando gli altri per consentirgli di occuparsi di altre azioni, come il caricamento di contenuti. Al momento, non stiamo utilizzando questa funzionalità, poiché era nuova l'ultima volta che abbiamo aggiornato il CEF e non abbiamo avuto tempo per testarla. Con il prossimo aggiornamento, potremo iniziare a lavorare per introdurla su LoL
- Migliori prestazioni di Javascript
- Le nuove versioni di Chromium introducono significativi miglioramenti al motore v8, utilizzato per gestire Javascript. Come per i miglioramenti di compatibilità, si tratta di benefici ottenuti semplicemente grazie all'aggiornamento a versioni più nuove
Il nostro lavoro nell'ultimo trimestre si è concentrato sull'aggiornamento delle componenti web esistenti (pensate alle tecnologie dei siti web per incorporare i video, per le notifiche pop-up e cose simili) a versioni compatibili con il nuovo CEF, per essere sicuri che aggiornare il CEF stesso non avrebbe creato problemi. Il nostro intento è che l'aggiornamento di queste componenti sia un'esperienza fluida per voi, quindi ci auguriamo che non abbiate notato l'implementazione di queste novità nel corso delle ultime patch. Questi miglioramenti comprendono una grande quantità di codice e siamo consapevoli che potrebbero verificarsi piccoli problemi sfuggiti ai test, ma cercheremo di risolverli ogni volta che emergono.
Per concludere, mancano solo poche settimane per terminare gli aggiornamenti di queste componenti e, a quel punto, potremo passare al rinnovamento del CEF stesso, che ci auguriamo di terminare entro la fine di luglio 2021.
Pannello Social
Come già detto, un'altra area su cui stiamo lavorando è il pannello Social. Nel lungo termine, il nostro obiettivo è spostare il pannello Social da ComponentsJS (la vecchia architettura) a Ember. Questa operazione è sospesa fino al termine dell'aggiornamento del CEF, anche se abbiamo completato alcuni dei passaggi iniziali necessari alla transizione su Ember e abbiamo intenzione di tornare a lavorarci una volta risolta la questione del CEF.
Ecco i problemi principali del pannello Social che abbiamo risolto prima di dedicarci a preparare l'aggiornamento del CEF:
- Mancata connessione del pannello Social
- Mancato caricamento della lista amici, visualizzazione di stati non corretti, mancato riempimento della lista amici
- Le informazioni delle classificate che scomparivano dal tabellone quando un giocatore è in una partita normale
- Sfarfallio nel passaggio da Disconnesso al poro triste e al caricamento della lista amici all'avvio
Aggiornamento sull'utilizzo della memoria e sugli errori di Javascript
Abbiamo anche continuato a monitorare l'utilizzo della memoria per le partite giocate in una sola sessione e siamo felici di informarvi che, dalla patch 10.25, abbiamo riscontrato un calo di quasi 30 MB per partita giocata e una diminuzione progressiva dei blocchi causati da un esaurimento della memoria nel complesso.
L'ultimo argomento a cui vogliamo accennare riguarda gli errori di Javascript. Nel post precedente abbiamo fatto un errore riguardo all'effettivo numero di errori di JS che i giocatori incontrano nelle regioni Riot. Nella 10.25, erano ben 265 milioni. Il lato positivo è che questo dato sottolinea ulteriormente l'urgenza del problema: il numero degli errori riscontrati dai giocatori non è cambiato, solo le nostre misurazioni a riguardo. Da allora, abbiamo portato il numero di errori a 140 milioni per patch e siamo convinti di poterlo ridurre ulteriormente.
Cosa ci aspetta
Anche se nel breve termine l'aggiornamento del CEF è il nostro obiettivo principale, stiamo preparando altri progetti che abbiamo intenzione di affrontare nella seconda metà del 2021.
- Il passaggio del pannello Social a Ember di cui abbiamo parlato prima
- Rivedere il Fine partita (EOG). Anche se alla fine dell'anno scorso/inizio di quest'anno abbiamo risolto alcuni problemi significativi relativi alle prestazioni nel Fine partita, c'è ancora del lavoro da fare. Molti giocatori lamentano ancora del tempo necessario per tornare nel client e/o di blocchi dell'EOG. Quando inizieremo questo progetto, cominceremo a mappare tutte le interazioni del client con i motori e i servizi di gioco per cercare di capire come intervenire per migliorarne l'esperienza. L'EOG interagisce con molti altri servizi non gestiti dal team del client, quindi parte del processo consisterà nel collaborare con altri team per organizzare interventi coordinati
- Accesso in ritardo alla Selezione del campione. Questo è un problema segnalato molto spesso in alcune regioni e quindi sospettiamo dipenda dalle connessioni di rete dei giocatori (le infrastrutture di internet variano da regione a regione). Benché non possiamo fare molto per intervenire sui problemi di rete, continueremo a collaborare con il team Competitivo per fare il possibile all'interno del client, affinché tutti i giocatori riescano ad accedere alla Selezione del campione in tempi ragionevoli
- Stabilità del client durante le sessioni più lunghe. Alla fine dell'anno scorso, avevamo iniziato a dedicarci ai problemi di perdita di memoria, che portano il client a occupare progressivamente più memoria quando i giocatori partecipano a più partite o lasciano il client inattivo per lunghi periodi. Per tornare in modo più mirato sulla questione, cercheremo modi più intuitivi per permettere ai giocatori di avere un client che si comporti sempre come quando hanno appena effettuato l'accesso, a prescindere dal numero di partite giocate o da quanto tempo è stato aperto. In questo caso, la soluzione potrebbe essere di continuare gli sforzi per risolvere problemi di memoria più complessi, ma dovremo analizzare quella prospettiva rispetto ai benefici di soluzioni di breve termine
Per questo aggiornamento è tutto! Come sempre, il lavoro che facciamo dipende in buona parte dal feedback ricevuto tramite diversi sistemi, tra cui i sondaggi dei nostri giocatori. Fateci sapere quali sezioni del client necessitano di maggiori interventi e quali modifiche hanno avuto maggiore impatto sulla vostra esperienza!