CURĂȚAREA CLIENTULUI: 2021 până acum și ce urmează

Deblocăm un upgrade pentru Chromium Embedded Framework în timp ce investigăm alte oportunități.

Ne-am angajat să publicăm actualizări regulate despre lucrările pe care le facem pentru îmbunătățirea performanțelor și a fiabilității clientului LoL.

Actualizarea de astăzi este cea de-a șaptea din serie. (Citiți primul, al doilea, al treilea, al patrulea, al cincilea și al șaselea articol aici)

Pe scurt: în primul trimestru al anului 2021, am lucrat la deblocarea unei modalități de a face upgrade software-ului Chromium Embedded Framework (CEF). Încă mai avem de lucru, dar ne așteptăm să trecem la noua versiune de Chromium Embedded Framework (CEF) până la sfârșitul T2, ceea ce le va oferi jucătorilor o mulțime de beneficii.

Actualizarea Chromium Embedded Framework (CEF)

Așa cum am menționat ultima data, unul dintre proiectele noastre importante la care lucrăm este actualizarea versiunii clientului a Chromium Embedded Framework (CEF) – browser-ul de la baza arhitecturii clientului LoL. Ca să fim mai direcți, ultima dată i-am subestimat importanța. Actualizarea CEF este modificarea individuală cu cel mai mare impact pe care o putem face pentru a îmbunătăți clientul, în ceea ce privește beneficiile directe și deblocarea abilității noastre de a aduce alte îmbunătățiri.

Am făcut ultima actualizare a CEF în noiembrie 2019 (versiunea 74); la momentul scrierii acestui articol, cea mai recentă versiune actuală este CEF 90. Actualizarea CEF (vizăm versiunea CEF 90) va oferi următoarele beneficii:

  • Reducerea închiderilor forțate ale clientului
    • Versiunile vechi ale CEF nu funcționează bine cu unele componente hardware. Datele inițiale ne indică faptul că o parte majoritară din închiderile forțate ar putea fi cauzate de o versiune învechită a CEF. Credem cu tărie că, după ce vom face upgrade, vom vedea mai puține închideri forțate pentru jucători.
  • Îmbunătățiri ale compatibilității
    • Echipa care se ocupă de gestionarea CEF testează amănunțit versiuni noi folosind multe combinații hardware. Clientul LoL beneficiază gratuit de acea testare.
  • Performanță mai rapidă a WebSocket
    • Clientul LoL conține două elemente principale: ''partea vizibilă'', care este aplicația vizuală cu care interacționați, și o ''bază'' mult mai mică, care rulează în fundal, preluând date de pe serverele noastre și păstrând evidența tuturor informațiilor de care are nevoie clientul pentru a afișa lucrurile potrivite pentru voi. Exemple de lucruri pe care le face baza:
      • ''Acest jucător a activat setarea pentru a închide clientul în timpul meciurilor și tocmai a intrat în joc; închide partea vizibilă până când va încheia meciul.''
      • ''Acest jucător tocmai a deschis tab-ul «Colecții». Ce campioni deține?''
    • Un protocol websocket este practic un element de legătură care conectează partea vizibilă și baza. O cale de legătură mai mare cu mai puține obstacole vă oferă mai multe date într-un timp mai rapid. Asta ne oferă o versiunea mai nouă a CEF. Mai ales pentru jucătorii care folosesc hardware vechi, îmbunătățirile protocolului websocket pot duce la o performanță mai bună în locurile în care se transferă o mulțime de date (sfârșitul meciului, selecția campionilor). Comparând versiunile CEF, diferența ar putea fi de până la:
      • 4,1 ori mai rapid pe Windows;
      • 7,8 ori mai rapid pe Mac.
  • Performanță îmbunătățită a animațiilor
    • Mai exact, animațiile care sunt animate procedural în funcție de date, precum bara de experiență de pe ecranul de la sfârșitul meciului (avem o mulțime). Aceste animații sunt din punct de vedere tehnic un tip de scurgeri de memorie, astfel încât se va îmbunătăți și performanța generală a clientului în timpul unor sesiuni lungi.
  • FPS îmbunătățit – ''lentoare'' redusă și o înregistrare mai rapidă a clicurilor
  • Software mai simplu (a se citi: mai rapid, mai fiabil) pentru dezvoltatorii noștri
    • Moduri suplimentare de prevenire a scurgerilor de memorie în cadrul unor sesiuni mai lungi de joc.
    • O nouă valoare care ne oferă date îmbunătățite despre durata reală de care clientul are nevoie pentru a afișa datele pe ecran.
  • Utilizare mai inteligentă a procesorului
    • Versiunea actuală de CEF a clientului (74) a lansat o funcție denumită ''Serviciu de rețea'', care direcționează toate cererile de rețea printr-un singur fir de execuție din CPU, eliberând alte fire pentru alte lucruri, cum ar fi încărcarea de conținut. Momentan, nu folosim această funcție deoarece abia a fusese lansată când am actualizat ultima dată CEF și nu am avut timp să o testăm. Cu următorul nostru upgrade, putem începe să planificăm introducerea acesteia în LoL.
  • Performanță îmbunătățită a JavaScript
    • Versiunile mai noi de Chromium oferă îmbunătățiri semnificative ale motorului v8 pe care îl folosește pentru a gestiona JavaScript. Asemenea îmbunătățirilor compatibilității, ăsta e un beneficiu pe care-l primim doar prin simplul fapt că facem upgrade versiunii.



Munca noastră din trimestrul trecut s-a axat pe actualizarea componentelor web existente (gândiți-vă la tehnologii pentru site-uri pentru inserții video, notificări pop-up și altele) la versiuni care sunt compatibile cu noi versiuni ale CEF, pentru a ne asigura că actualizarea CEF în sine nu va strica nimic. Ne dorim ca actualizarea acestor componente să fie o experiență fără probleme, așa că, sperăm, nu ați observat că am lansat aceste actualizări în ultimele câteva patch-uri. Aceste actualizări au impact asupra unei cantități enorme de cod, așa că suntem conștienți de problemele minore ocazionale care au apărut în timpul testării, dar le rezolvăm pe măsură ce le detectăm.

Acestea fiind spuse, mai sunt doar câteva săptămâni până la finalizarea actualizărilor acestor componente și vom putea să trecem la actualizarea CEF în sine, care, sperăm, că va fi finalizată până la sfârșitului lunii iulie 2021.

Panoul social

O altă zonă de interes, pe care am menționat-o ultima dată, a fost panoul social. Planul nostru pe termen lung este să realizăm tranziția panoului social de la ComponentsJS (arhitectura veche) la Ember. Acesta este momentan pus în așteptare în timp ce ne concentrăm pe finalizarea actualizării CEF, deși am parcurs câțiva dintre pașii inițiali necesari pentru tranziția la Ember și vom reveni la acesta după ce vom actualiza CEF.

Iată principalele probleme pe care le-am rezolvat la panoul social înainte de a ne îndrepta atenția asupra deblocării actualizării CEF:

  1. panoul social nu se conectează;
  2. lista de prieteni nu se încarcă, este afișată o stare greșită, prietenii nu sunt afișați;
  3. informațiile despre ranked dispar din cardul de profil când un jucător este într-un meci normal;
  4. trecerea de la starea de deconectare la poro trist la lista de prieteni care se încarcă în timpul pornirii.


Actualizare privind amprenta de memorie și erorile JavaScript

Am continuat și să urmărim amprenta de memorie pentru meciurile jucate într-o singură sesiune. Sunt încântați să vă anunțăm că am observat o scădere de aproape 30 MB pe meci jucat de la patch-ul 10.25 și o scădere continuă a închiderilor forțate din cauza epuizării memoriei.

Ultimul subiect pe care dorim să-l atingem sunt erorile JavaScript. Am făcut o greșeală în articolul nostru anterior privind numărul real de erori JS cu care s-au confruntat jucătorii în regiunile Riot. În patch-ul 10.25, a fost un număr imens de 265 de milioane. Partea bună este că doar subliniază și mai mult caracterul urgent al problemei, iar numărul real de erori cu care s-au confruntat jucătorii nu s-a modificat, ci doar modul în care le măsurăm. De atunci, am redus numărul de erori la 140 de milioane per patch și suntem încrezători că putem să reducem și mai mult această valoare.

Ce urmează

Cu toate că actualizarea CEF este principalul nostru obiectiv pentru viitorul apropiat, facem și o listă cu problemele pe care dorim să le abordăm mai târziu în 2021.

  • Tranziția panoului social la Ember, așa cum am discutat mai sus
  • Revizuirea sfârșitului meciului. Deși am rezolvat câteva dintre problemele majore legate de performanța de la sfârșitul meciului la sfârșitul anului trecut/începutul acestui an, încă mai avem mult de muncă. Mulți jucători încă se plâng de durata necesară pentru a se reconecta la client și/sau de blocarea la sfârșitul meciului. După demararea acestui proiect, vom începe prin conturarea tuturor interacțiunilor clientului cu motorul și serviciile din joc, iar apoi vom vedea ce putem să facem pentru a îmbunătăți experiența. Sfârșitul meciului interacționează cu multe alte servicii pe care echipa responsabilă de client nu le deține, așa că o parte a procesului va fi colaborarea cu alte echipe pentru a stabili priorități pentru remedierile comune.
  • Intrarea întârziată în selecția campionilor. Aceasta este o problemă raportată frecvent în unele regiuni, ceea ce ne spune că există o dependență față de conexiunea la rețea a unui jucător (infrastructura internetului variază în funcție de regiune). Deși nu există multe lucruri pe care le putem face pentru a rezolva problemele de rețea, vom continua să lucrăm cu echipa care se ocupă de mediul competitiv pentru a face tot ce putem în cadrul clientului pentru a ne asigura că toți jucătorii intră în selecția campionilor într-un interval de timp rezonabil.
  • Stabilitatea clientului în timpul sesiunilor lungi. Unul dintre cele mai urgente obiective ale noastre de la sfârșitul anului trecut a fost rezolvarea scurgerilor de memorie, care pot determina clientul să folosească mult mai multă memorie în timp ce jucătorii joacă mai multe jocuri sau își lasă clientul inactiv pentru perioade lungi. Ca o acțiune ulterioară mai cuprinzătoare, vom căuta moduri intuitive prin care clientul să le ofere jucătorilor o experiență consecventă ca și cum de-abia s-au conectat, indiferent de câte meciuri au jucat sau de cât timp a fost deschis clientul. Soluția aici ar putea fi să continuăm să ne concentrăm și să rezolvăm scurgeri de memorie mai dificile, dar va trebui să comparăm asta cu soluțiile pe termen scurt.



Cam atât pentru această actualizare! Ca întotdeauna, munca pe care o depunem se bazează în mare parte pe feedback-ul pe care îl primim printr-o varietate de modalități, precum sondajele noastre obișnuite pentru jucători. Continuați să ne spuneți ce părți ale clientului au nevoie de cele mai multe ajustări și care dintre modificările noastre au avut cel mai mare impact asupra experienței voastre!