KLIENSTAKARÍTÁS: Hősválasztó és játékvégi képernyő
Korábban megígértük, hogy kéthavonta beszámolunk arról, hol tartanak a League of Legends-kliens teljesítményének és megbízhatóságának javításával kapcsolatos, háttérben folyó munkálatok.
A mai bejegyzés e sorozat ötödik része. (Az első rész itt, a második itt, a harmadik itt, a negyedik pedig itt olvasható.)
Röviden: Most, hogy a kliens indításának és az architektúrának a fejlesztését befejeztük, végre rátérhetünk a hősválasztásra. Emellett a játékvégi képernyőre is figyelmet fordítunk.
Megkezdődik a hősválasztás fejlesztése
Még márciusban, amikor elkezdtük ezt a blogot, két nagyobb célt tűztünk ki magunka elé: a kliens rendszerindítási idejének és a hősválasztó képernyő válaszidejének fejlesztését, ebben a sorrendben. Szeptemberben bejelentettük, hogy a játékosok 90%-a számára sikerült 15,5 másodpercre csökkenteni a rendszerindítási időt (a kliens indítási idejét), valamint hogy végre megkezdhettük a hősválasztás fejlesztését.
Most pedig ennek kapcsán jelentkezünk az első beszámolónkkal.
A hősválasztás memóriafelhasználása
Mindig is sejtettük, hogy a hősválasztás is hasonló karbantartásra szorul majd, mint a kliens többi része: Ember-alkalmazások megerősítése, kódok optimalizálása, hibák javítása és hasonlók. Csakhogy miután közelebbről is megvizsgáltuk, egy váratlan problémával találtuk szemben magunkat: a hősválasztás (és a kliens) memóriafelhasználása minden egyes alkalommal növekszik, amikor egy adott játékalkalom során hőst választotok.
A 90. percentilis esetében ez a következőféleképpen néz ki:
- Amikor először választotok hőst, a kliens memóriafelhasználása 481 MB-ra ugrik.
- A második alkalommal további 56 MB adódik hozzá.
- A harmadik alkalomtól kezdve pedig kisebb, 15 és 25 MB közötti ugrások figyelhetők meg.
Minél több meccset játszotok egyetlen alkalom során, annál jobban lassul a kliens, míg végül olyan csigalassúvá válik, hogy kénytelenek vagytok újraindítani.
A kliens memóriavesztése egyáltalán nem újdonság számunkra, és sejtettük, hogy legalább részben a hősválasztás okozza. Azonban egy ilyen mértékű és kiterjedtségű memóriavesztés, mint amilyennel szembesültünk, merőben más megközelítést tesz szükségessé. Az eredeti tervünk megvalósításával párhuzamosan egy speciálisabb fejlesztői eszközt is bevetünk, amelynek segítségél hatékonyabban szűrhetjük és javíthatjuk ki a memóriavesztéssel járó hibákat a teljes kliensre vonatkozóan, lerövidítve a fejlesztésekhez szükséges időt.
Igen, párhuzamosan, úgyhogy kis lépésekben haladunk, de ennek ellenére a 10.23-as frissítéssel már érkezik is egy apróbb, teljesítménybeli javítás a hősválasztáshoz. Fejlesztettük az idézői varázslatok és az őrszemkinézetek kiválasztásának folyamatát, hogy ne jöjjenek létre felesleges Ember-alkalmazások minden egyes megnyitással. Ez a varázslatok és őrszemkinézetek kiválasztása során jelentkező memóriahasználat kis mértékű, de mérhető csökkenését eredményezte (kb. 1,6 MB). Ezt a két, memóriavesztéssel járó hibát fedeztük fel elsőként, és a kijavításuk remek lehetőséget adott arra, hogy egy bevált módszert vethessünk majd be a nagyobb memóriaveszteséget okozó hibák kijavítására a közeljövőben. Még az év vége előtt szeretnénk kivitelezni egy nagyobb, látványosabb fejlesztést.
A hősválasztás felhasználói élményének és felhasználói felületének áttekintése
A hibák kijavítása mellett figyelmet fordítunk arra is, hogy a játékosok mit szeretnek a hőválasztásban, miből lehetne visszavenni, és mit távolíthatnánk el teljesen, mert a játékosok nem hiányolnák. Erre azért van szükség, mert a hősválasztás kritikus a játékmenet szempontjából, és minél egyszerűbb, annál kevesebb dolog mehet félre később. Egyrészt a játékosok körében végzett felmérések adatai alapján határozzuk meg, mi fontos a hősválasztás felhasználói élményét (User Experience – UX) és felhasználói felületét (User Interface – UI) illetően, másrészt kliensen belüli mutatókat is bevezetünk, hogy a felmérés eredménye megerősítést nyerjen a játékosok tevékenységi adatai alapján.
Íme néhány előzetes eredmény, illetve a velük kapcsolatos eddigi és tervezett intézkedéseink:
- A játékosok szeretnének gyorsabb és egyértelműbb visszajelzést kapni arról, hogy sikeresen kattintottak-e az egyes gombokra, különösen a hősök kiválasztása és kitiltása esetében. Az egyértelműség érdekében gyorsabbá és megbízhatóbbá fogjuk tenni a felhasználói felület látható és hallható visszajelzéseit.
- A játékosok nem találják fontosnak az idézői varázslatok és őrszemkinézetek kiválasztásának ceremóniáit. El fogjuk távolítani az ezekhez kapcsolódó animációkat (illetve a fentebb említett memóriavesztést okozó hibáikat is kijavítjuk).
- Továbbá telemetriát is alkalmazunk, hogy megtudjuk, a játékosok milyen gyakran használják a hősválasztás azon funkcióit, amelyek nem képezik szerves részét a meccsekre való felkészülésnek. Ha ezek inkább a „nem árt, ha van” kategóriába esnek, előfordulhat, hogy eltávolítjuk őket a teljesítmény maximalizálása céljából.
- Hangulatjelpanel
- Kedvenc hősök
- Küldetések
Belépés a hősválasztó képernyőre
A játékosok legtöbbet arra panaszkodtak, hogy a hősválasztó képernyőre való belépés során egy rakás probléma merülhet fel. A hősválasztás megbízhatósága azonban elengedhetetlen ahhoz, hogy a játékosok úgy érezzék, készen állnak a közelgő meccsre összpontosítani. Éppen ezért döntő fontosságú, hogy megoldjuk azokat a problémákat, amelyek megzavarhatják a hősök kitiltását vagy a kiválasztásuk véglegesítését. Azt sem szeretnénk, hogy amiatt kelljen aggódnotok, hogy a már sok százszor használt kinézetek, idézői varázslatok vagy rúnák a tudtotokon kívül megváltozhatnak.
Amikor elkezdünk dolgozni ezen a területen, az lesz az elsődleges célunk, hogy a játékosoknak elegendő idejük legyen a fontos döntések meghozatalára, biztosítsuk a hősök kitiltásának és kiválasztásának megbízhatóságát, és hogy minden játékos sikeresen bejusson a játékba.
Játékvégi képernyő (End of Game – EOG)
Bár a klienstakarítási kampányunk elején még nem tartozott a kiemelt területek közé, a játékvégi képernyő (minden, ami a győzelem/vereség képernyő „Tovább” gombjára való kattintás után és a meccsvégi képernyőn való interakciók előtt történik) azóta majdnem olyan bosszantó tényezővé vált, mint a rendszerindítási idő, illetve a hősválasztás válaszideje és megbízhatósága. Két bosszantó tényezőre összpontosítunk:
- A játékosok jelentettek egy hibát, miszerint a kliens egy időre megakad egy „újracsatlakozás” gombnál ahelyett, hogy a játék befejezés után azonnal megjelennének a Kitüntetések. Ennek a hibának még keressük az okát.
- A kliens időnként lefagy, amikor a játékosok visszatérnének a győzelem/vereség képernyőről, így nem láthatják vagy használhatják a Kitüntetések képernyőt vagy a meccsvégi képernyőt. Készülünk néhány ígéretes javítással, amelyek várhatóan a 10.23-as frissítéssel érkeznek.
A beállításokkal és felugró értesítésekkel kapcsolatos hibák
Miközben a hősválasztáson és a játékvégi képernyőn dolgoztunk, értesültünk pár, beállításokkal kapcsolatos hibáról is, amelyek az előző néhány frissítéssel kerültek a játékba. Olyan dolgokról van szó, mint hogy a hősválasztó képernyőn nem tárolódnak el az idézői varázslatotok, vagy régi felugró értesítések jelennek meg újra (és újra és újra és újra). Ezeknek a hibáknak a felderítése nem volt valami könnyű. Több csapat is nagyjából egy időben, de egymástól függetlenül dolgozott a háttérrendszerük frissítésén, aminek következtében az elszórtan jelentkező hibák együtt óriási káoszt okoztak, és a legtöbb játékos legalább egy beállítási hibába belefutott. Az előző blogbejegyzésünk óta három különálló javítást is kiadtunk – legutóbb a 10.21-es frissítés részeként –, amelyek megoldották a problémák egy részét.
A hősválasztás és a játékvégi képernyő további fejlesztési munkálatai során is együtt fogunk működni belső csapatainkkal, hogy megtalálhassuk és kezelhessük a sok bosszúságot okozó hibákat, ha lesznek ilyenek.
Ezzel a beszámolónk végére is értünk! Mindent megteszünk, hogy frissítésről frissítésre jobbá tegyük kliensünket, de még sok a dolgunk az év végéig, úgyhogy addig is köszönjük türelmeteket!