Vývoj
ÚKLID KLIENTA: Dosavadní rok 2021 a plány do budoucna

Odblokujeme vylepšení Chromium Embedded Framework a zkoumáme další možnosti.

  • Zkopírováno do schránky

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 sedmý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, pátý článek zde a šestý článek zde.)

Ve zkratce: První čtvrtrok 2021 jsme strávili odblokováním cesty k vylepšení Chromium Embedded Framework (CEF). Ještě pořád nám zbývá dokončit pár věcí, ale očekáváme, že novou verzi Chromium Embedded Framework (CEF) budeme mít do konce 2. čtvrtletí, a ta hráčům přinese spoustu výhod.

Aktualizace Chromium Embedded Framework (CEF)

Jak jsme psali posledně, jedním z velkých projektů, na kterých pracujeme, je aktualizace verze Chromium Embedded Framework (CEF) v našem klientu – to je webový prohlížeč v nitru architektury klienta LoL. Posledně jsme jeho význam nevystihli dostatečně, takže to řekneme víc napřímo. Aktualizace CEF je ta nejvýznamnější individuální změna, díky které můžeme klienta vylepšit, a to jak co do přímých výhod, tak co do odemčení možnosti dělat další vylepšení.

Naposledy jsme CEF aktualizovali v listopadu 2019 (verze 74). Poslední aktuální verze v době psaní tohoto článku je CEF 90. Aktualizace CEF (míříme na CEF 90) přinese následující výhody:

  • Redukce pádů klienta
    • Zastaralé verze CEF si moc nerozumí s některým hardwarem. Podle raných dat se zdá, že většina pádů může být kvůli zastaralé verzi CEF. Opravdu věříme, že jakmile provedeme upgrade, bude hráče trápit méně pádů.
  • Vylepšení kompatibility
    • Tým CEF zevrubně testuje nové verze na spoustě hardwarových kombinací. Klient LoL dostane výhodu tohoto testování zadarmo.
  • Rychlejší výkon WebSocket
    • Klient LoL má dvě velké části: „vizuální část“, která je viditelnou aplikací, se kterou interagujete, a mnohem menší „základ“, který běží na pozadí, načítá data z našich serverů a sleduje veškeré informace, které klient potřebuje, aby vám zobrazoval ty správné věci. Příklady toho, co základ dělá:
      • „Tento hráč povolil nastavení, aby se zavíral klient během zápasů, a právě spustil hru; shoď vizuální část, dokud nedohraje.“
      • „Tento hráč právě otevřel záložku Sbírky. Které šampiony vlastní?“
    • Websocket je v podstatě trubka, která spojuje vizuální část se základem. Větší trubka s méně záhyby vám data načte rychleji, a právě tohle nám zajistí novější verze CEF. Zejména u hráčů na starším hardwaru může mít vylepšení websocketu za následek lepší výkon v místech, kde se převádí spousta dat (pozápasová obrazovka, výběr šampionů). Když porovnáme naše verze CEF, tento rozdíl může být až:
      • 4,1x rychlejší na Windows
      • 7,8x rychlejší na Macu
  • Vylepšený výkon animací
    • Zejména animace, které se animují procedurálně podle dat, jako třeba ukazatel zkušeností na pozápasové obrazovce (takových máme spoustu). Tyto animace jsou technicky vzato druh úniku paměti, takže se vylepší i obecný výkon klienta v rámci dlouhých relací.
  • Lepší FPS – Redukce „zabržděnosti“ a rychlejší rozpoznávání kliků
  • Našim vývojářům se s tím bude snáze pracovat (čti: bude to rychlejší, spolehlivější)
    • Dodatečné způsoby, jak zabránit únikům paměti v rámci delších herních relací
    • Nová metrika, která nám poskytuje lepší data o tom, jak dlouho to skutečně trvá, než se v klientu vykreslí věci na obrazovce
  • Chytřejší využití procesoru
    • Aktuální verze CEF (74) zavedla funkci jménem „Síťová služba“, která přesměrovává všechny síťové požadavky jedním vláknem vašeho procesoru, čímž uvolňuje ostatní vlákna na další věci, jako je načítání obsahu. Tuto funkci momentálně nepoužíváme, protože když jsme CEF naposledy aktualizovali, byla úplně nová a my jsme neměli dost času s ní experimentovat. Díky příštímu upgradu můžeme začít plánovat její podporu pro LoL.
  • Vylepšený výkon Javascriptu
    • Novější verze Chromia přinášejí výrazná vylepšení enginu v8, který zpracovává javascript. Stejně jako vylepšení kompatibility je i tohle výhoda, kterou dostaneme jen tím, že přejdeme na novější verzi.

Naše práce za poslední čtvrtrok se soustředila na vylepšení stávajících součástí webu (představte si webovou technologii pro vkládání videí, vyskakovací oznámení a tak podobně) na verze, které jsou kompatibilní s novými verzemi CEF, abychom měli jistotu, že samotné vylepšení CEF nic nerozbije. Chceme, aby vylepšení těchto součástí proběhlo hladce, takže snad jste si ani nevšimli, že jsme tato vylepšení provedli v několika posledních aktualizacích. Tyto aktualizace se dotýkají velké části kódu, takže jsme si vědomi toho, že tu a tam nám během testování mohla nějaká menší chybka proklouznout, ale ty opravujeme, jakmile je najdeme.

Kol a kolem nás dělí už jen pár týdnů od toho, než vylepšení těchto součástí dokončíme a budeme se moct přesunout na aktualizaci samotného CEF, které chceme dokončit do konce července 2021.

Sociální panel

Další důležitá oblast, o které jsme se posledně zmínili, je Sociální panel. Náš dlouhodobý plán je převést sociální panel z ComponentsJS (stará architektura) na Ember. Tohle je aktuálně u ledu, zatímco se soustředíme na vydání aktualizace CEF, ačkoliv jsme dokončili několik raných kroků, které jsou nutné pro přechod na Ember, a vrátíme se k tomu, jakmile CEF aktualizujeme.

Zde jsou velké potíže, které jsme v Sociálním panelu vyřešili, než jsme se zaměřili na odblokování upgradu CEF:

  1. Sociální panel se nepřipojuje
  2. Seznam přátel se nenačítá, zobrazuje se nesprávný status, nevypisují se přátelé
  3. Z hráčské karty mizely informace o hodnoceném režimu, když je hráč v normální hře
  4. Problikávání mezi odpojením, smutným porem a načítáním seznamu přátel při spuštění

Aktualizace paměťové stopy a chyby v Javascriptu

Rovněž jsme pokračovali ve sledování paměťové stopy u zápasů odehraných během jedné relace. S radostí hlásíme, že jsme zaznamenali téměř 30MB pokles za zápas odehraný od aktualizace 10.25 a dlouhodobý obecný pokles pádů kvůli nedostatku paměti.

Poslední věc, kterou chceme řešit, jsou chyby v Javascriptu. V předchozím článku jsme udělali chybu ve skutečném počtu chyb JS, se kterými se potýkali hráči v regionech Riotu. Ve verzi 10.25 to bylo ohromných 265 milionů. Světlá stránka je, že to jen podtrhuje naléhavost problému, a skutečný počet chyb, na které hráči narazili, se nezměnil – změnilo se pouze to, jak je měříme. Od té doby jsme počet chyb snížili na 140 milionů za aktualizaci a věříme si, že toto číslo dokážeme snížit ještě víc.

Co je v plánu

Přestože je upgrade CEF naší hlavní prioritou na dohlednou budoucnost, zároveň si připravujeme projekty, kterým se chceme věnovat ve zbytku roku 2021.

  • Přechod Sociálního panelu na Ember, jak jsme psali výše
  • Revize pozápasové obrazovky. Ačkoliv jsme na přelomu roku pár velkých problémů s výkonem pozápasové obrazovky vyřešili, ještě nám nějaká ta práce zbývá. Řada hráčů si stále stěžuje na dobu, kterou trvá, než se dostanou zpět do klienta, a na zamrzání pozápasové obrazovky. Po spuštění tohoto projektu začneme mapovat všechny interakce klientu s herním enginem a službami a pak uvidíme, jak tento zážitek budeme moct vylepšit. Pozápasová obrazovka spolupracuje s řadou dalších služeb, které nevlastní tým klientu, takže součástí tohoto procesu bude spojit se s dalšími týmy na stanovení priorit společných oprav.
  • Pozdní nástup do výběru šampionů. Tohle se v některých regionech hlásí často, což nám říká, že existuje závislost na síťovém připojení hráče (infrastruktura internetu se mezi regiony liší). Přestože síťové problémy moc řešit nemůžeme, i tak budeme spolupracovat s týmem pro soutěžní hraní, abychom v klientu udělali, co budeme moct, abychom zajistili, že se všichni hráči dostanou do výběru šampionů za rozumnou dobu.
  • Stabilita klienta během dlouhých relací. Jednou z nových oblastí, na které jsme se soustředili na konci loňského roku, bylo řešení úniků paměti, kvůli kterým klient potřebuje stále více paměti, když hráči hrají více zápasů nebo nechávají klienta dlouhodobě nečinného. Navážeme na to komplexněji a budeme hledat intuitivní způsoby, díky kterým by klient hráčům sloužil konzistentně, jako by se právě přihlásili, nehledě na to, kolik zápasů odehráli nebo jak dlouho mají klienta otevřeného. Opravit bychom to mohli tím, že se budeme víc věnovat složitějším únikům paměti, ale tuhle práci budeme muset vyhodnotit v porovnání s krátkodobými řešeními.

A to je prozatím vše! Práce, kterou děláme, jako vždy z velké části čerpá motivaci ze zpětné vazby, kterou dostáváme celou řadou způsobů, například díky pravidelným hráčským dotazníkům. Nadále nám prosím dávejte vědět, které části klientu potřebují největší péči a které změny měly ten největší dopad na váš zážitek!



  • Zkopírováno do schránky