Úklid klienta: Rekapitulace 2020 a plány do budoucna
Dali jsme si závazek, že vám budeme pravidelně přinášet novinky o práci, kterou provádíme v rámci snahy vylepšit výkon a spolehlivost klienta LoL.
Dnešní článek je šestým dílem série. (Přečtěte si první článek zde, druhý článek zde, třetí článek zde, čtvrtý článek zde a pátý článek zde.)
Ve zkratce: Rok 2020 jsme strávili vylepšováním doby nabíhání, architektury, výběru šampionů, pozápasové obrazovky, úniků paměti / pádů klienta a oprav chyb. Nyní jsme uprostřed plánování na 1. kvartál 2021 a chceme se hlavně soustředit na vylepšení panelu sociálních funkcí a další vylepšování celkové stability klienta.
Rekapitulace 2020
Náš tým vznikl koncem roku 2019 a velká část počátečních prací spočívala v tom, že jsme se seznamovali se stavem klienta LoL. V rámci tohoto procesu jsme se rozhodli zaměřit na to, ke které části klienta se hráči globálně (vy všichni!) nejvíc vyjadřují, abychom zjistili, na čem máme zapracovat, aby byl klient lepší. Práce nás čeká ještě hodně, ale když se ohlédneme za rokem 2020, podařilo se nám klient významným způsobem vylepšit.
- Spustili jsme globální anketu o klientu, díky které se rozhodujeme, na čem máme pracovat. Většina úspěchů, které vidíte níže, je založená na tom, co hráči chtěli vyřešit.
- Dobu nabíhání klienta jsme globálně snížili na 16 sekund pro 90 procent hráčů (z 29,5 sekundy na začátku roku 2020).
- Tohle se nám podařilo díky práci na architektuře, včetně 63% snížení načítací doby aplikací ember (těch, které se načítejí při spuštění klienta) a 57% redukci počtu zásuvných modulů v klientu. Jinými slovy jsme vyčistili spoustu kódu.
- Vylepšili jsme reaktivitu a spolehlivost výběru šampionů během fáze výběrů a zákazů.
- Opravili jsme problémy s výkonem při filtrování šampionů a vylepšili jsme samotný seznam ve výběru šampionů.
- Prošetřili jsme využití některých funkcí ve výběru šampionů. O tom vám víc povíme níže.
- Zkrátili jsme dobu potřebnou k dosažení fáze potvrzování a zákazů šampionů.
- Opravili jsme úniky paměti ve výběru šampionů a kolem něj (jak popisujeme níže).
- Vyřešili jsme kompletní zamrznutí klienta a černou obrazovku, když se do něj hráči vrátí přes pozápasovou obrazovku po skončení hry.
- Vyřešili jsme problém, kdy klient zůstal viset na tlačítku „Opětovné připojení“ během pozápasové obrazovky, když se nemělo vůbec objevit.
- V roce 2020 jsme opravili 175 bugů od drobností po potíže, které tu byly odnepaměti.
- Jména hráčů v chatu se zobrazovala jako „...“.
- Panel úloh se nerozsvěcoval, když přišla zpráva do chatu.
- Na panelu sociálních funkcí chyběli noví hráči.
- Nastavení se resetovalo, když se hráč přihlásil z jiného počítače.
- Oznámení o dárku se po přihlášení opakovalo.
- Hráči se vraceli na černou hlavní obrazovku po různých akcích v klientu.
- Vylepšená reaktivita záložky Sbírky a všech podsekcí.
- Snížili jsme dobu načítání záložky Runy o 40 %, rozhraní záložky je plynulejší a spolehlivější.
- Vyřešili jsme 30 úniků paměti v celém klientu. Tohle je obzvláště ošemetná oblast, kterou jsme objevili koncem roku, takže máme velkou radost, že se nám podařilo vydat vylepšení ještě před svátky.
- K únikům paměti dochází, když část programu nedokáže uvolnit paměť po dokončení úkolu. Kvůli tomu zbývá celkově méně paměti pro ostatní programy, které na systému běží. Když se to sejde dohromady, je to vždy špatné, ale příčinu těchto problémů je opravdu těžké odhalit, zejména u větších aplikací.
- Před našimi prvními opravami úniků paměti ve verzi 10.23 trápilo hráče 193 000 pádů kvůli nedostatku paměti v každé aktualizaci. V okamžiku poslední aktualizace roku 2020 čili 10.25 jsme zaznamenali 55% pokles těchto pádů!
Jak jsme psali, pomocí vašich odpovědí v globální anketě o klientu jsme se rozhodovali, na co se soustředit. Výše uvedená vylepšení představují pokrok v oblastech, o kterých jste psali nejvíc, ale na tohle všem záleží jen tehdy, pokud máte všichni pocit, že to jde správným směrem. Proto máme radost, že můžeme oznámit, že kromě zápasových metrik jsme v anketách zaznamenali pozitivní trendy ve všech oblastech, což znamená, že čím dál víc hráčů cítí z klienta menší frustraci!
...Menší frustraci. Letos toho musíme stihnout ještě hodně a budeme vás průběžně informovat.
Málo používané funkce ve výběru šampionů
Pokud jste si přečetli náš předchozí článek, psali jsme v něm, že řešíme odstranění některých málo používaných funkcí ve výběru šampionů, abychom zlepšili celkový výkon. Po vyhodnocení sekce oblíbených, misí a gest jsme se rozhodli žádnou z těchto funkcí neodstraňovat a místo toho budeme pracovat na jejich optimalizaci. Už jsme opravili problém s gesty a momentálně pracujeme na tom, aby sekce oblíbených a mise fungovaly podle očekávání.
Co je v plánu
Momentálně finalizujeme plán pro první letošní čtvrtletí, ale zde je přehled toho, co chceme v klientu LoL řešit nyní:
Sociální panel
V průběhu loňského roku jsme zaznamenali nárůst problémů, které se týkají sociálního panelu. V prosinci jsme opravili problém, kdy hráčská karta přátel ve hře nezobrazovala typ hry či šampiona. Zde je pár problémů, které máme v plánu vyřešit:
- Sociální panel se nepřipojuje.
- Seznam přátel se nenačítá, zobrazuje se nesprávný status, nevypisují se přátelé.
- Hráči se neodešle žádost o přátelství, pokud má seznam přátel plný.
- Z hráčské karty mizí informace o hodnoceném režimu, když je hráč v normální hře.
- Chat se zasekává při psaní zpráv v rychlém sledu.
- Složky se mezi relacemi samy přeuspořádávají.
- Složky LoR a Valorant se ztrácejí při řazení podle „Seskupit hry a servery“.
- Po kliknutí na „Zobrazit data“ v poli chatu se textová pole překrývají.
- Oznámení Žádost o přátelství se objevuje pouze, když je tato možnost vypnutá, a naopak.
Rovněž odstraníme starý framework v Javascriptu (o JS níže) a přesuneme sociální panel kompletně na ember. Tento přechod skýtá dobrou příležitost projít a vyčistit problémová místa v kódu, což povede k větší spolehlivosti a menšímu počtu chyb.
Stabilita klienta
Nyní vám představíme dvě důležité oblasti, ve kterých chceme vylepšit stabilitu klienta LoL: pády klienta a chyby v Javascriptu, což se může projevit celou řadou způsobů včetně... pádů klienta. Než abychom se v rámci této práce soustředili na konkrétní část klienta (např. na výběr šampionů, nabíhání klienta), budeme to řešit obecně v celém klientu. Zde jsou další čtyři cíle, které mají společně se stabilitou přednost:
- Redukce pádů: V aktualizaci 10.25 hráči v 16 regionech Riotu zaznamenali 2,2 milionů pádů klienta. Po našem původním vyšetřování se zdá, že nejlepší možností, jak vyřešit většinu pádů, je vylepšit naši verzi Chromia. To je webový prohlížeč v nitru architektury klienta LoL.
- Redukce chyb v Javascriptu: V aktualizaci 10.25 hráči v 16 regionech Riotu zaznamenali v klientu 36 milionů chyb Javascriptu (JS). Přestože ne všechny chyby v JS mají za následek pád či snížení výkonu, i neviditelné chyby se nakonec mohou nasčítat, což vede k většímu dopadu. Když tento počet snížíme, povede to ke zlepšení v celém klientu.
- Další opravy úniků paměti: Oprava některých těchto chyb pro nás loni byla velké vítězství. A vyhrávat chceme i letos.
- Další práce na architektuře kvůli vyčištění kódové databáze: Abychom vylepšili Chromium, jak jsme psali výše, musíme splnit spoustu požadavků, což samo o sobě vylepší výkon klienta. Dokončení této práce a zahájení vylepšení Chromia máme v plánu zhruba v polovině léta.
- Naposledy jsme aktualizovali Chromium v prosinci 2019, pár měsíců před zahájením kampaně Úklid klienta. Toto vylepšení přineslo dobré výsledky (CTRL+F „Chromium“) a výhody, které přinese toto další vylepšení, popíšeme před jeho vydáním.
Vážíme si zpětné vazby, která nám ohledně klienta pořád chodí, a nasloucháme vám! Rok 2020 se vyvedl a my budeme v tomto tempu na vylepšování klienta pro naše hráče pokračovat i nadále!