A kliens rendbe szedéséről szóló legújabb beszámolóban eredményekről és akadályokról is szó lesz.
Néhány hónapja bejelentettük, hogy szeretnénk kijavítani a League of Legends-kliens hibáit, amit „a kliens rendbe szedéseként” neveztünk el.
A Riot csapata szeretne tájékoztatni benneteket ezzel kapcsolatban akkor is, ha nehézségek adódnak a munka során. Őszintén szólva még bőven akad tennivalónk, mielőtt elégedetten hátradőlhetnénk.
A mostani bejegyzésben az eddig elért eredményeket vesszük számba. Arról is beszámolunk, hogy milyen akadályokba ütköztünk, zárásként pedig szó lesz a közeljövőre vonatkozó terveinkről.
A klienssel foglalkozó első bejegyzésünkben megírtuk, hogy rövidebb, legfeljebb 15 másodperces rendszerindítási időt szeretnénk elérni, még a 90. percentilisbe tartozó játékosok esetén is. Emlékeztetőül: a kliens rendszerindítási ideje a kliens betöltéséhez szükséges idő.
A cél elérése érdekében egyesíteni akartuk a lehető legtöbb beépülő modult és Ember-alkalmazást, ezzel csökkentve a számukat. Azok kedvéért, akik nem járatosak a témában: a beépülő modulok olyan eszközök, amelyek a kliens kódját kezelhető méretű részekre bontják. Az Ember-alkalmazások a felhasználói felületet működtető eszközök.
Eddig elég jól haladunk e téren. Az alábbi grafikonon láthatjátok a beépülő modulok és az Ember-alkalmazások számának alakulását a kliensben. Minden frissítésben sikerült csökkenteni a számot. Jelenleg körülbelül 10%-kal kevesebb Ember-alkalmazást és 20%-kal kevesebb beépülő modult kell betöltenie a kliensnek a rendszerindítás során a kezdeti állapothoz képest.
Ez nagyon szép eredmény! Azonban néhány akadály is felmerült, amelyekről szeretnék röviden beszámolni.
Az év első néhány frissítésében a beépülő modulokon végzett munka miatt jelentős javulást tapasztaltunk a rendszerindításhoz szükséges időben.
Ugyanakkor a 10.3-as frissítésben a rossz irányba mozdult el a rendszerindítási idő, és a 10.7-es frissítésben új negatív rekordot döntött.
Ezt láthatjátok az alábbi grafikonon is. Egy kis segítség az értelmezéshez: azt szeretnénk, hogy ha a görbék a grafikon bal oldalához lennének közelebb (gyorsabb rendszerindítás).
A jelenséget magyarázhatja az elmúlt hetekben a LoL szervereit érő megnövekedett terhelés. Érthető okokból világszerte mindenki több időt tölt otthon. Sokan és sokat játszanak a LoL-lal, ami természetesen leterheli a szerverinfrastruktúránkat, ami egyenetlen válaszidőt és a kliens lassabb betöltését eredményezi.
Fokozatosan növeljük a szerverkapacitásunkat, és lehetséges, hogy ez egycsapásra javítani fogja a kliens teljesítményét. Más lehetséges okokat is vizsgálunk, például megpróbáljuk csökkenteni a rendszerindítás során betöltött Javascript-kód mennyiségét.
Bármi is legyen a probléma oka, nincs veszve minden remény: ahogy az első blogbejegyzésben is említettük, a rendszerindítási idő és a hősválasztás véglegesítésének felgyorsításához (ez a következő tétel a listánkon) bizonyos alapvető változtatásokra és egy kis takarításra van szükség a kliens architektúrájában.
Ez azt jelenti, hogy programhibákat javítunk ki, és olyan alapvető problémák okait kutatjuk az architektúrában, amelyek régóta megkeserítik a játékosaink életét.
Az egyik architektúraszintű problémáról kiderült, hogy az Affinity nevű kliensfunkcióhoz kötődik.
Az Affinity néhány éve, a kliens frissítésekor került be a funkciók közé. Gyakorlatilag egy olyan eszköz, amellyel megadhatjuk, hogy mely beépülő modulokat kell betölteni a rendszerindítás befejezése előtt.
Két problémát azonosítottunk az Affinityben:
Röviden: az Affinityt teljesen le kell cserélni egy jobb és hatékonyabb megoldásra.
A felfedezések egy része meglepő volt számunkra, de legalább visszaigazolták az egyik alapvető feltételezésünket, amellyel belevágtunk a munkába: ha alaposan átvizsgáljuk a kliens kódját, akkor felfedezhetjük az akadályozó tényezők gyökérokait.
Most, hogy tudjuk, hogy az Affinity nem tudja teljesíteni azt, amire terveztük, elkezdhetünk fejleszteni egy új megoldást, amely megfelelően meg tudja határozni a beépülő modulok prioritását. Ezzel felgyorsítjuk a rendszerindítást a játékosok számára, és megnyitjuk az utat más fontos fejlesztések előtt.
Ezek egyike sem forgatja fel a kliens kijavításával kapcsolatos terveinket, azonban kissé lelassíthatja az előrehaladásunkat. Mindenesetre ez egy nagyon fontos és hasznos felfedezés volt számunkra, és világosabbá tette, hogy mi a teendőnk. Ha ez megbízhatóbb és kiszámíthatóbb játékélményt eredményez számotokra, akkor már megérte minden belefektetett munkaóra.
Ha sikerült kellően felgyorsítani a kliens rendszerindítását, következhet a kliens rendbe szedésének következő lépése: a kliens válaszidejének csökkentése a hősválasztás során. Nyilvánvalóan sokatok szemében ez lesz a legfontosabb és leglátványosabb eredményekkel kecsegtető szakasz.
Később ismét beszámolunk majd arról, hogy mire jutottunk. Néhány hónapon belül egy ehhez hasonló blogbejegyzéssel jelentkezünk. Mint mindig, ezúttal is köszönjük, hogy velünk tartottatok.