CZYSZCZENIE KLIENTA: podsumowanie i dalsze plany
Zadeklarowaliśmy, że regularnie będziemy publikować aktualizacje poświęcone pracom mającym na celu poprawę wydajności i niezawodności działania klienta League.
Dzisiejsza porcja treści jest szóstym wpisem z tej serii. (Tutaj przeczytacie pierwszy, drugi, trzeci, czwarty i piąty wpis z tej serii).
W SKRÓCIE: W 2020 roku zajmowaliśmy się czasem uruchamiania klienta, architekturą, etapem wyboru bohaterów, ekranem po grze, wyciekami pamięci/awariami klienta oraz naprawą błędów. Obecnie jesteśmy w trakcie planowania prac na I kwartał 2021 roku. Będziemy koncentrować się na udoskonaleniu panelu społeczności oraz dalszej poprawie ogólnej stabilności klienta.
Podsumowanie 2020 roku
Nasz zespół powstał pod koniec 2019 roku i na początku zajmował się przede wszystkim oceną stanu klienta League. Postanowiliśmy wyłowić w ramach tego procesu te elementy klienta, na które najgłośniej narzekała cała globalna społeczność (to wy!), aby właśnie na nich oprzeć plan ulepszania klienta. Wciąż czeka nas wiele pracy, ale patrząc na 2020 rok, widać, że udało się nam wprowadzić istotne ulepszenia klienta.
- Przeprowadzenie wśród graczy globalnej ankiety na temat klienta, która pomaga nam określić, nad czym powinniśmy pracować. Większość opisanych poniżej osiągnięć jest właśnie wyjściem naprzeciw oczekiwaniom wyrażonym w niej przez graczy.
- Obniżenie czasu bootstrapu (uruchamiania) klienta do 16 sekund dla 90% graczy globalnie (z 29,5 sekundy na początku 2020 roku).
- Udało się to osiągnąć dzięki pracy nad architekturą, w tym 63% redukcji aplikacji ember w bootstrapie (tych, które są wczytywane podczas uruchamiania klienta) oraz 57% redukcji wtyczek w kliencie. Innymi słowy wyczyściliśmy większość kodu.
- Poprawa reaktywności i niezawodność podczas wybierania i banowania na etapie wyboru bohaterów.
- Poprawione problemy z wydajnością podczas filtrowania bohaterów oraz udoskonalenie samej siatki wyboru bohaterów.
- Sprawdzenie użyteczności poszczególnych funkcji etapu wyboru bohaterów. Bardziej szczegółowe omówienie tego tematu znajdziecie poniżej.
- Skrócenie czasu zatwierdzania i banowania bohaterów.
- Usunięcie wycieków pamięci spowodowanych oprogramowaniem odpowiedzialnym za wybór bohaterów (omówienie poniżej).
- Rozwiązanie problemu całkowitego blokowania klienta i wyświetlania czarnego ekranu, gdy gracze wracali do klienta bezpośrednio z ekranu po grze (gdy gra się skończyła).
- Rozwiązanie problemu zawieszania się klienta po zakończeniu gry na przycisku „Wznów połączenie”, który w ogóle nie powinien być wyświetlany na ekranie po grze.
- W 2020 roku zostało naprawionych 175 błędów, poczynając od drobiazgów po problemy, które były w kliencie „od zawsze”.
- Nazwy graczy pokazywane w czacie jako „...”.
- Niepodświetlający się pasek narzędzi po otrzymaniu wiadomości na czacie.
- Nowi gracze niepojawiający się na panelu społeczności.
- Resetowanie ustawień, gdy gracz logował się z innego komputera.
- Powiadomienia o prezencie powtarzające się przy logowaniu.
- Powrót do czarnego ekranu strony głównej po wykonywaniu różnych działań w kliencie.
- Ulepszenie reaktywności zakładki kolekcji i wszystkich jej podsekcji.
- Skrócenie czasu wczytywania ekranu run o 40%, poprawa płynności interfejsu run i poprawa niezawodności użytkowania.
- Usunięcie 30 wycieków pamięci w całym kliencie. To był szczególnie trudny obszar, który wykryliśmy dopiero pod koniec roku, więc jesteśmy wyjątkowo zadowoleni, że udało się nam wprowadzić ulepszenia przed przerwą świąteczną.
- Wycieki pamięci powstają, gdy część oprogramowania nie zwalnia zajmowanej pamięci po wykonaniu swoich zadań. W efekcie dla innych programów działających w systemie pozostaje mniej pamięci. Nakładanie się takich efektów zawsze prowadzi do problemów, a przyczyny są, jak łatwo zgadnąć, trudne do wykrycia, szczególnie w dużych aplikacjach.
- Przed pierwszym uszczelnieniem wycieków pamięci w patchu 10.23 gracze w regionach Riot doświadczali w każdym patchu 193 000 awarii spowodowanych brakiem pamięci. W ostatnim patchu w 2020 roku, czyli patchu 10.25, odnotowaliśmy 55% spadek tego rodzaju awarii.
Jak już wspomnieliśmy, decyzje dotyczące celu naszych prac podejmowaliśmy na podstawie waszych opinii wyrażonych w globalnej ankiecie na temat klienta, Powyższe usprawnienia reprezentują postęp w obszarach, na które najbardziej narzekaliście, a przecież liczy się tylko to, abyście właśnie wy mieli poczucie, że sprawy idą w dobrym kierunku. Dlatego z radością ogłaszamy, że poza danymi pochodzącymi z samej gry, dostrzegliśmy też pozytywny trend w ankietach, co oznacza, że korzystanie z klienta staje się coraz mniej frustrujące dla coraz większej rzeszy graczy!
...Mniej frustrujące. Wciąż wiele musimy zrobić w tym roku i będziemy was w dalszym ciągu na bieżąco informować.
Rzadko używane opcje wyboru bohaterów
Jeśli mieliście okazję przeczytać nasz poprzedni wpis, wiecie, że rozważaliśmy usunięcie kilku mało używanych opcji wyboru bohaterów, aby usprawnić ogólną wydajność tego obszaru. Po ocenie ulubionych, misji i emotek postanowiliśmy nie usuwać żadnego z tych elementów tylko je zoptymalizować. Naprawiliśmy już problem związany z emotkami i obecnie pracujemy nad upewnieniem się, że ulubione i misje działają zgodnie z założeniami.
Co mamy w planach
Obecnie finalizujemy jeszcze plany na pierwszy kwartał tego roku, ale w następnej kolejności mamy zamiar zająć się następującymi obszarami klienta League:
Panel społeczności
Zauważyliśmy niewielki wzrost problemów związanych z panelem społeczności w ciągu ubiegłego roku. W grudniu naprawiliśmy problem polegający na tym, że karty znajomych w grze nie wyświetlały ich rodzaju gry i bohatera. Oto lista kolejnych problemów, które chcemy rozwiązać:
- Problemy z łącznością panelu społeczności.
- Problemy z wczytywaniem listy znajomych, wyświetlaniem niewłaściwego statusu, zapełnianiem listy znajomych.
- Gdy lista znajomych jest pełna, gracze nie otrzymują próśb o przyjęcie do znajomych.
- Podczas normalnej gry informacje rankingowe znikają z karty gracza.
- Czat zacina się podczas szybkiego wpisywania i wysyłania wiadomości.
- Foldery same zmieniają ustawienie pomiędzy sesjami gry.
- Foldery LoR i Valorant znikają podczas sortowania według grup i serwerów.
- Kliknięcie opcji „Pokaż daty” w polu czatu powoduje nachodzenie na siebie pól tekstowych.
- Powiadomienia o zaproszeniach do znajomych pojawiają się, gdy opcja jest wyłączona i odwrotnie.
Zamierzamy też zrezygnować ze struktury Javascript (więcej na ten temat za chwilę) i całkowicie przenieść panel społeczności na ember. Ta zmiana jest dobrą okazją, aby przejrzeć i oczyścić problematyczne miejsca w kodzie, co poprawi niezawodność działania i usunie kilka błędów.
Stabilność klienta
Teraz chcielibyśmy przedstawić dwa nowe priorytetowe obszary ulepszania stabilności klienta League: awarie klienta i błędy skryptu Java, które mogą powodować najróżniejsze efekty włącznie z... awariami klienta. W tym przypadku zamiast koncentrować się nad określonymi elementami klienta (poza wyborem bohaterów i bootstrapem klienta), zajmiemy się nim całościowo. Równocześnie z pracami nad stabilnością, które mają już wysoki priorytet, na naszym celowniku znajdą się:
- Redukcja awarii ― w patchu 10.25 gracze z 16 regionów Riot doświadczyli 2,2 miliona awarii. Po wstępnym rozpoznaniu wydaje się, że najlepszym sposobem rozwiązania większości z tych problemów jest aktualizacja Chromium do wyższej wersji. Ta przeglądarka stanowi serce architektury klienta League.
- Redukcja błędów Javascript ― w patchu 10.25 gracze z 16 regionów Riot doświadczyli 36 milionów błędów Javascript w kliencie. Chociaż nie wszystkie z tych błędów skutkują awarią lub pogorszeniem wydajności, pamiętajmy, że nawet nieodczuwalne błędy mogą się kumulować, prowadząc w efekcie do jakichś problemów. Zredukowanie tej liczby doprowadzi do poprawy działania wielu elementów klienta.
- Kontynuowanie uszczelniania wycieków pamięci ― naprawa części z nich była w zeszłym roku naszym dużym sukcesem. W tym roku też chcemy odnosić duże sukcesy.
- Dalsza praca nad architekturą w celu oczyszczania kodu ― aby zaktualizować Chromium, o czym wspomnieliśmy powyżej, musimy ukończyć wiele prac wstępnych, które same w sobie usprawnią działanie klienta. Zamierzamy ukończyć te prace i rozpocząć aktualizację Chromium mniej więcej do końca pierwszego półrocza.
- Ostatnio aktualizowaliśmy Chromium w grudniu 2019 roku, kilka miesięcy przed rozpoczęciem kampanii oczyszczania klienta. Wówczas aktualizacja przyniosła dobre wyniki (CTRL + F Chromium). Listę oczekiwanych usprawnień podamy, gdy będziemy bliżej rozpoczęcia tego wydarzenia.
Bardzo doceniamy wszystkie opinie na temat klienta, jakie do nas docierają, i pilnie się w nie wsłuchujemy! Rok 2020 był dla nas udany i zamierzamy dalej z zapałem ulepszać klienta dla naszych graczy!