KLIENSTAKARÍTÁS: 2020 eredményei és az idei tervek

Összefoglaljuk a 2020-as fejleményeket, valamint áttekintjük a 2021-es terveket

Megígértük, hogy rendszeresen beszámolunk arról, hol tartanak a LoL-kliens teljesítményének és megbízhatóságának javításával kapcsolatos munkálatok.

A mai bejegyzés e sorozat hatodik része. (Az első rész itt, a második itt, a harmadik itt, a negyedik itt, az ötödik pedig itt érhető el.)

Röviden: a 2020-as év a kliens indításának felgyorsításával, az architektúra, a hősválasztás és a meccsvégi képernyő fejlesztésével, valamint a memóriavesztések, összeomlások és programhibák javításával telt. Már tervezzük a 2021 első negyedévére vonatkozó menetrendet. Elsősorban a közösségi panelre és a kliens általános stabilitására fogunk koncentrálni.


2020 összefoglalása

A csapat 2019 végén alakult, és kezdetben a munkánk jelentős részét a LoL-kliens állapotának felmérése tette ki. Ennek részeként jelöltük ki a kliens azon részeit, amelyekre a játékosok világszerte a legtöbbet panaszkodtak, és amelyek javításával a legnagyobb eredményeket lehetett elérni. Még maradt tennivalónk, de 2020-ban a kliens érezhetően jobb lett.

  • Kiadtunk egy nemzetközi kérdőívet játékosainknak, hogy eldöntsük, mi a legsürgősebb. Az alábbi eredmények jó része a játékosok visszajelzéseinek köszönhető.
  • A kliens indításának idejét 16 másodpercre szorítottuk le a játékosok 90%-a esetében világszerte (ez 2020 elején még 29,5 másodperc volt).
    • Ehhez főleg az architektúrán kellett javítani, például 63%-kal csökkentettük a kliens indításakor betöltött Ember-alkalmazások számát, és 57%-kal a kliens beépülő moduljainak számát. Magyarul rendet tettünk a kódban.
  • Javítottuk a felület reakcióidejét és megbízhatóságát a hőválasztó képernyőn a hősök kiválasztásakor és kitiltásakor
    • Javítottuk a hősök szűrésekor fellépő teljesítményromlást, és továbbfejlesztettük magát a hősválasztási felületet is
    • Kivizsgáltuk a hősválasztás egyes funkcióinak erőforrás-felhasználását. Erről még lesz szó később.
    • A választásokat és kitiltásokat gyorsabban lehet véglegesíteni
    • Elhárítottuk a hősválasztás során és annak környékén fellépő memóriavesztést
  • Kijavítottunk egy hibát, amely miatt a kliens teljesen lefagyott és fekete képernyőt mutatott, amikor a játékosok a meccsvégi folyamat részeként tértek vissza oda
  • Javítottunk a hibát, amely miatt a kliensben látható maradt a „Visszacsatlakozás” gomb a meccsvégi folyamatban, holott meg sem kellene jelennie
  • 2020-ban 175 hibát javítottunk az apróságoktól kezdve az igazi őskövületekig.
    • A játékosok neve helyett „...” jelent meg a csevegésben
    • A tálcán nem világított az ikon, amikor üzenet érkezett a csevegésben
    • Az új játékosok számára nem jelent meg a közösségi panel
    • A beállítások alaphelyzetbe álltak, amikor a játékos egy másik számítógépről jelentkezett be
    • Az ajándékról szóló értesítések ismétlődtek bejelentkezéskor
    • A kliensben végrehajtott egyes műveletek után fekete kezdőlapra tértek vissza a játékosok
  • A Gyűjtemények lap és annak részei gyorsabban reagálnak a parancsokra
  • 40%-kal csökkentettük a Rúnák lap töltési idejét, a Rúnák felület pedig gördülékenyebb és megbízhatóbb lett
  • 30 memóriavesztéssel járó hibát szüntettünk meg a kliensben. Ez egy különösen bonyolult terület, amelyet az év vége felé fedeztünk fel, ezért nagyon örültünk, hogy sikerült az ünnepek előtt elkészülni a javításokkal.
    • Akkor jelentkezik memóriavesztés, amikor a program egy része nem szabadítja fel a lefoglalt memóriát a feladata elvégzése után. Ez csökkenti a rendszeren futó egyéb programok számára rendelkezésre álló memória mennyiségét. Az ilyen halmozódó problémák mindig alattomosak, mert nagyon nehéz megállapítani az okukat, különösen a nagyobb alkalmazásokban.
    • A 10.23-as frissítésben kiadott első, a memóriavesztéssel kapcsolatos javítás előtt világszerte átlagosan 193 000 összeomlásra került sor minden frissítési ciklusban azért, mert a rendszer kifogyott a memóriából. 2020 utolsó frissítése, a 10.25-ös frissítés ciklusában 55%-kal csökkent az ilyen jellegű összeomlások száma!

Ahogy említettük, nagyrészt a játékosok által kitöltött nemzetközi kérdőív alapján döntöttük el, hogy mire koncentráljunk. A fenti eredményeket olyan területeken értük el, amelyekkel kapcsolatban gyakran érkeztek panaszok, de a munkánknak csak akkor van igazán értelme, ha számotokra is érezhető a javulás. Örömmel láttuk tehát, hogy a javuló játékbeli metrikák mellett a visszajelzések is pozitív tendenciát mutatnak minden téren, vagyis egyre több játékos szerint van egyre kevesebb gond a klienssel!

...Kevesebb. Rengeteg tennivaló maradt erre az évre is, és ezekről is tájékoztatni fogunk.


A hősválasztás ritkán használt funkciói

Emlékezhettek rá az előző bejegyzésünkből, hogy szóba került a hősválasztás néhány ritkán használt funkciójának eltávolítása az általános teljesítményjavítás érdekében. Kiértékeltük a kedvencek, a küldetések és a hangulatjelek működését, és az eltávolításuk helyett az optimalizálás mellett döntöttünk. A hangulatjelekkel kapcsolatban már elhárítottunk egy problémát, most pedig a kedvencek és a küldetések tökéletesítése van terítéken.


Min dolgozunk jelenleg?

Egyelőre az első negyedév teendőinek listáját állítjuk össze, de a mai állás szerint a következőkre összpontosítunk a kliensben:

Közösségi panel

A tavalyi év során megnőtt a közösségi panellel kapcsolatos problémák száma. Decemberben kijavítottunk egy hibát, amely miatt a meccsben lévő barátok játékoskártyáján nem jelent meg a játék típusa és a választott hős. Ezután a következőket tervezzük orvosolni:

  1. A közösségi panel nem csatlakozik
  2. Nem töltődik be a barátok listája, hibásan jelenik meg az állapot, nem jelennek meg a barátok
  3. A játékos nem kapja meg a barátfelvételi kérelmet, ha a barátlistája betelt
  4. A rangsorolt adatok eltűnnek a játékoskártyáról, amikor a játékos normál meccset játszik
  5. A csevegés akadozni kezd, ha gyors egymásutánban több üzenetet gépelnek be
  6. A mappák átrendeződnek két munkamenet között
  7. A LoR és a Valorant mappái eltűnnek a „Játékok és szerverek csoportosítása” funkció használatakor
  8. Ha a csevegőablakban az „Időpont megjelenítése” lehetőségre kattintanak, a szövegmezők átfedik egymást
  9. A barátfelvételi kérelmek értesítései csak akkor jelennek meg, ha a beállítás le van tiltva (és fordítva)

Elkezdjük fokozatosan kivezetni a régi Javascript-keretrendszert (erről még lesz szó), és a közösségi panel teljesen Ember-alapúvá válik. Az átállás kiváló lehetőség a kód átnézésére és a problémás részek javítására, hogy megbízhatóbban működjön, kevesebb programhibával.

A kliens stabilitása

Két új kiemelt területe lesz a LoL-kliens stabilitásával kapcsolatos munkánknak: a kliens összeomlásai és a Javascript-hibák, amelyek számos problémát okozhatnak, például... a kliens összeomlását. Ehhez nem a kliens egyes részein fogunk dolgozni (például hősválasztás, kliens rendszerindítása), hanem átfogóan, a kliens egészén. Az egyébként is kiemelt, a stabilitást növelő javítások mellett ez a négy fő célkitűzésünk:

Két új kiemelt területe lesz a LoL-kliens stabilitásával kapcsolatos munkánknak: a kliens összeomlásai és a Javascript-hibák, amelyek számos problémát okozhatnak, például... a kliens összeomlását. Ehhez nem a kliens egyes részein fogunk dolgozni (például hősválasztás, kliens rendszerindítása), hanem átfogóan, a kliens egészén. Az egyébként is kiemelt, a stabilitást növelő javítások mellett ez a négy fő célkitűzésünk:

  • Kevesebb összeomlás: a 10.25-ös frissítés során a 16 Riot-régióban összesen 2,2 millió összeomlást tapasztaltak a kliens kapcsán. A kezdeti felmérések után arra jutottunk, hogy az összeomlások jó részét orvosolhatjuk az általunk használt Chromium-verzió frissítésével. Ez a webböngésző képezi a LoL-kliens architektúrájának alapját.
  • Kevesebb Javascript-hiba: a 10.25-ös frissítés során a 16 Riot-régióban összesen 36 millió Javascript- (JS-) hiba lépett fel a kliensben. Bár nem minden JS-hiba vezet összeomláshoz vagy teljesítménycsökkenéshez, idővel a láthatatlan hibák is összeadódnak, és jelentős negatív hatásuk lehet. A hibák számának csökkentése számos pozitív hatással jár a kliens tekintetében.
  • Memóriavesztések javításának folytatása: az ilyen hibák javítása terén jelentős sikereket értünk el tavaly. Szeretnénk ebben az évben is hasonlóan eredményesek lenni.
  • Az architektúra további fejlesztése a kódbázis rendbeszedése érdekében: a Chromium fent említett frissítése komoly előkészítést igényel, ami várhatóan önmagában is javítani fogja a kliens teljesítményét. Az előkészítés és a Chromium-verzió frissítése a tervek szerint az év közepe táján fejeződik be.
    • Legutóbb 2019 decemberében frissítettük a Chromium-verziónkat, nem sokkal a klienstakarítási „hadjárat” kezdete előtt. A frissítés jó eredményeket hozott (CTRL+F: Chromium), és ahogy közeledik a következő kiadása, beszámolunk a várható hozadékairól.

Köszönjük a klienssel kapcsolatos folyamatos visszajelzéseket, odafigyelünk rájuk! Eredményesen dolgoztunk a 2020-as évben, és igyekszünk fenntartani ezt a lendületet, hogy a lehető legjobbá tegyük a klienst a számotokra!