Úklid klienta: Postup, nezdary a objevy
Před pár měsíci jsme oznámili, že máme v plánu spravit klienta League of Legends, čemuž říkáme „Kampaň Úklid klienta“.
Tým Riotu vás chce informovat, jak v této nesnadné práci pokračují. Abychom řekli holou pravdu, ještě pořád nám zbývá spousta práce, než budeme s výkonem klienta spokojení.
V dnešním blogu si popovídáme o pár pozitivních věcech, které se nám podařily. Rovněž se podělíme o několik nezdarů, na které jsme narazili, a o tom, jak je chceme vyřešit v rámci dalších kroků, které podnikneme.
ČÁSTEČNÝ POKROK
Jak jsme řekli v našem prvním blogu o klientu, chceme se nejdřív zaměřit na snížení doby nabíhání na asi 15 sekund, a to i pro hráče na 90. percentilu. Jak si určitě pamatujete, doba nabíhání měří, jak dlouho to trvá, než klient naběhne.
Abychom tohoto cíle dosáhli, řekli jsme, že budeme konsolidovat a redukovat počet zásuvných modulů a aplikací Ember v klientu. Pokud vám tato terminologie nic neříká, pamatujte si, že zásuvné moduly jsou nástroje, které nám umožní rozložit kód klienta na užitečné kousky. Aplikace Ember jsou nástroje, které pohánějí naše uživatelské rozhraní.
Práce v této oblasti pokračují dost dobře. V tabulce níže vidíte celkový počet zásuvných modulů a aplikací Ember v klientu v průběhu času. S každou aktualizací jsme ten počet o něco srazili. Nyní máme oproti situaci na začátku procesu asi o 10 % méně aplikací Ember a o 20 % méně zásuvných modulů, které klient během nabíhání načítá.
![1ClientCleanup_Charts-cze.png](https://cmsassets.rgpub.io/sanity/images/dsfx7636/news_live/dedff4378333a33134caaf4424ee802addac745d-1261x792.png)
To je dobrá zpráva! Rovněž jsme narazili na pár nezdarů, o které se chceme podělit.
ČÁSTEČNÝ NEZDAR
Během prvních pár letošních aktualizací jsme díky naší práci na zásuvných modulech zaznamenali výrazné vylepšení doby nabíhání.
Počínaje aktualizací 10.3 jsme však viděli, že doba nabíhání se pomalu vydává špatným směrem, přičemž aktualizace 10.7 představuje spodní milník pro nabíhací dobu v celé škále.
Podívejte se na graf níže. Abyste tento graf pochopili, pamatujte, že se křivky musí pohybovat blíže k levé straně grafu (rychlejší doba nabíhání).
![2ClientCleanup_Charts-cze.png](https://cmsassets.rgpub.io/sanity/images/dsfx7636/news_live/8a2fcabbafad67cf0857f1e7bb36e750c9dffa8f-1261x792.png)
Jedno možné vysvětlení pro nedávný nezdar je zvýšená zátěž, kterou jsme na serverech LoL zaznamenali v posledních týdnech. Z poněkud očividných důvodů spousta z vás po celém světě nyní tráví víc času doma. Hrajete hodně LoL, což představuje výzvu pro naši serverovou infrastrukturu. To má pak za následek nekonzistentní reakční dobu a pomalejší dobu nabíhání našeho klienta.
Protože posilujeme kapacitu serverů, abychom tento nápor pojali, může to vést k tomu, že opět uvidíme skutečné pozitivní zlepšení výkonu klienta. Rovněž budeme řešit další možné příčiny, například snížení množství kódu v Javascriptu, který se načítá během nabíhání.
Nehledě na příčiny tohoto nezdaru máme důvod pro naději: Jak jsme řekli v prvním vývojářském blogu, při řešení doby nabíhání a doby potvrzování výběru šampiona (což přijde na řadu příště) budeme čistit a předělávat jisté základní aspekty v architektuře klienta.
To znamená, že budeme opravovat chyby a řešit pár problémů se základní infrastrukturou v klientu, ze kterých vás bolí hlava.
Jedním takovým architektonickým problémem, který jsme objevili, se týká funkce klienta jménem Příslušnost.
PROBLÉM S PŘÍSLUŠNOSTÍ
Funkci Příslušnost jsme přidali, když jsme před lety dělali „aktualizaci klienta“. V podstatě je to nástroj, který nám umožňuje specifikovat, které zásuvné moduly je třeba před dokončením nabíhání načíst.
Objevili jsme dva problémy s Příslušností:
- Příslušnost byla rozbitá. Během roku 2018 se Příslušnost nechtěně rozbila. Jelikož Příslušnost nefunguje správně, klient automaticky během nabíhání a načítání pozápasové obrazovky načítá každý zásuvný modul.
- I když Příslušnost spravíme, naše problémy se tím nevyřeší. Domníváme se, že i když Příslušnost fungovala tak, jak měla, nedávala zásuvným modulům efektivní prioritu. Zkrátka a dobře: klient měl vždycky problém s tím, že během nabíhání načítal příliš mnoho zásuvných modulů.
Ve zkratce: Musíme Příslušnost zcela nahradit lepším, efektivnějším řešením.
Tyto objevy jsou pro nás překvapením, ale ověřily jednu z našich základních domněnek, kterou jsme měli už od okamžiku, kdy jsme na klientu začali pracovat: Jelikož jsme si vyhradili čas pro to, abychom se pohrabali ve střevech klienta, dokázali jsme odhalit pár základních příčin problémů.
DALŠÍ KROKY
Teď, když víme, že Příslušnost nedělá to, co by měla, můžeme implementovat nové řešení, které zásuvným modulům bude přiřazovat správnou prioritu. Díky tomu zrychlíme dobu nabíhání pro hráče a zpřístupníme si další možnosti, na kterých budeme moct v klientu pracovat.
Nic z toho nijak výrazně nemění naše plány klienta spravit, ale může nás to trochu zpomalit. Tak nebo tak tento objev vnímáme jako dobrou věc, protože nám to skýtá jasnější cestu vpřed. Pokud to bude mít za následek celkově méně chybový a spolehlivější výkon, pak naše úsilí nepřijde vniveč.
Jakmile srazíme dobu nabíhání klienta na uspokojivou úroveň, začneme druhou fázi kampaně Úklid klienta: snížíme reakční dobu klienta ve výběru šampionů. Práce na výběru šampionů je pro řadu z vás samozřejmě tou nejpřitažlivější součástí kampaně a my se toho taky nemůžeme dočkat.
O našem postupu vás budeme informovat. Další podobný blog můžete očekávat během pár měsíců. A jako vždycky díky za to, že hrajete.