CLIENT: Wie es im Jahr 2021 läuft
Wir haben verkündet, dass wir regelmäßig über den Fortschritt der Arbeiten an der Verbesserung des League-Clients sprechen werden.
Beim heutigen Artikel handelt es sich um den siebten Beitrag der Reihe. (Hier findest du den ersten, zweiten, dritten, vierten, fünften und sechsten Beitrag dieser Reihe.)
Kurz und bündig: Wir haben das erste Quartal 2021 damit verbracht, alle nötigen Voraussetzungen zu schaffen, um das Chromium Embedded Framework (CEF) upzugraden. Wir haben immer noch viel Arbeit vor uns, gehen jedoch davon aus, am Ende des 2. Quartals bei einer neuen Version des Chromium Embedded Framework (CEF) angelangt zu sein, die den Spielern jede Menge Vorteile bringen wird.
Aktualisierung des Chromium Embedded Framework (CEF)
Wie bereits im letzten Beitrag erwähnt, ist die Aktualisierung der Version des Chromium Embedded Framework (dabei handelt es sich um den Web-Browser, auf dem die Architektur des League-Clients basiert) des Clients eines der größten Projekte, an dem wir gerade arbeiten. Wir haben seine Wichtigkeit bereits beim letzten Mal unterstrichen, ich möchte sie aber dennoch ein weiteres Mal betonen: Die Aktualisierung des CEF ist die wichtigste Änderung, die wir vornehmen können, um den Client zu verbessern – sowohl in Hinblick auf die direkten Vorteile als auch auf die Möglichkeit, weitere Verbesserungen vorzunehmen.
Die letzte Aktualisierung des CEF (Version 74) datiert auf November 2019 zurück – zum Zeitpunkt, an dem dieser Beitrag verfasst wird, ist Version 90 die aktuellste CEF-Version. Die Aktualisierung des CEF (wir wollen das Framework auf Version 90 upgraden) wird die folgenden Vorteile mit sich bringen:
- Eine Verringerung der Client-Abstürze
- Veraltete CEF-Versionen vertragen sich nicht immer mit der Hardware. Die ersten Daten zeigen, dass ein Großteil der Abstürze auf die veraltete Version des CEF zurückzuführen ist. Wir gehen davon aus, dass die Spieler nach dem Upgrade seltener von Abstürzen betroffen sein werden.
- Kompatibilitätsverbesserungen
- Das CEF-Team testet unermüdlich neue Versionen mit unterschiedlichen Hardware-Kombinationen. Und von diesen Tests profitiert auch der League-Client.
- Eine höhere WebSocket-Leistung
- Der League-Client besteht aus zwei großen Teilen: dem „Frontend“, bei dem es sich um die visuelle Anwendung handelt, mit der du interagierst, und eine wesentlich kleinere „Foundation“, die hinter den Kulissen läuft, Daten von unseren Servern abruft und alle Informationen im Auge behält, die der Client benötigt, um dir die richtigen Dinge anzeigen zu können. Hier sind einige Beispiele für die Dinge, um die sich die Foundation kümmert:
- „Dieser Spieler hat die Einstellung aktiviert, den Client während des Spielens zu schließen, und er hat gerade ein Spiel betreten, also deaktiviere das Frontend, bis er fertig ist.“
- „Dieser Spieler hat gerade den Reiter ,Sammlung’ geöffnet. Welche Champions besitzt er?“
- Bei einem WebSocket handelt es sich im Grunde um ein Rohr, das das Frontend mit der Foundation verbindet. Ein breiteres Rohr mit weniger Drehungen und Wendungen kann Daten schneller transportieren, und genau darin besteht der Vorteil einer neueren CEF-Version. Verbesserungen an den WebSockets können vor allem bei Spielern mit einer älteren Hardware in Bereichen, in denen besonders viele Daten übertragen werden (wie bei der Spielzusammenfassung oder der Championauswahl), zu einer besseren Leistung führen. Verglichen mit unseren CEF-Versionen können sich die folgenden Unterschiede ergeben:
- Eine 4,1-fache Leistung auf Windows-Rechnern
- Eine 7,8-fache Leistung auf Mac-Rechnern
- Der League-Client besteht aus zwei großen Teilen: dem „Frontend“, bei dem es sich um die visuelle Anwendung handelt, mit der du interagierst, und eine wesentlich kleinere „Foundation“, die hinter den Kulissen läuft, Daten von unseren Servern abruft und alle Informationen im Auge behält, die der Client benötigt, um dir die richtigen Dinge anzeigen zu können. Hier sind einige Beispiele für die Dinge, um die sich die Foundation kümmert:
- Eine verbesserte Animationsleistung
- Eine höhere Leistung in diesem Bereich wirkt sich vor allem auf Animationen aus, die prozedural anhand von Daten generiert werden, wie die Erfahrungsleiste auf dem Bildschirm der Spielzusammenfassung (und davon gibt es jede Menge). Diese Animationen sind technisch gesehen eine Art Speicherloch, weshalb sich die allgemeine Leistung des Clients bei langen Sitzungen verbessern wird.
- Bessere Bildwiederholrate – Verringerte „Trägheit“ und eine schnellere Erkennung der Klicks
- Einfachere (schnellere, verlässlichere) Bedienbarkeit für unsere Entwickler
- Zusätzliche Möglichkeiten, Speicherlöcher bei längeren Spielsitzungen zu vermeiden
- Eine neue Metrik, die uns bessere Daten darüber liefert, wie lange es tatsächlich dauert, bis Dinge im Client gerendert werden
- Intelligenterer Einsatz der CPU
- Die aktuelle CEF-version des Clients (74) hatte erstmals eine Funktion namens „Network Service“, die alle Netzwerkanfragen durch einen einzelnen Thread in deiner CPU laufen lässt, wodurch sich die anderen Threads mit anderen Dingen wie dem Laden von Inhalten befassen können. Wir verwenden diese Funktion aktuell nicht, da sie bei der letzten Aktualisierung des CEF noch brandneu war und wir keine Zeit hatten, uns damit zu befassen. Mit unserem nächsten Upgrade können wir jedoch beginnen, die Unterstützung davon in League zu planen.
- Verbesserte JavaScript-Leistung
- Die neueren Versionen von Chromium haben eine wesentlich bessere V8-Engine, die für JavaScript zuständig ist. Genau wie bei den Kompatibilitätsverbesserungen handelt es sich hier um einen Vorteil, den wir allein durch das Versions-Upgrade erhalten.
Im letzten Quartal haben wir uns auf das Upgraden unserer bestehenden Web-Komponenten (wie die Webseitentechnologie für das Einbetten von Videos, Pop-Up-Benachrichtigungen und dergleichen) auf Versionen konzentriert, die mit den neuen CEF-Versionen kompatibel sind, um sicherzustellen, dass das Upgrade des CEF selbst zu keinen Problemen führen wird. Das Upgraden dieser Komponenten soll nahtlos funktionieren, weshalb wir auch hoffen, dass es die Spieler im Verlauf der letzten paar Patches nicht bemerkt haben. Diese Upgrades wirken sich auf große Code-Mengen aus, weshalb wir uns bewusst sind, dass uns einige kleinere Probleme während des Testens entgangen sein könnten – wir beheben diese Probleme jedoch, sobald sie auftreten.
Es wird nur noch wenige Wochen dauern, bis wir alle Komponenten upgegradet haben und das CEF selbst aktualisieren können, was uns hoffentlich bis Ende Juli 2021 gelungen sein wird.
Sozialmenü
Ein weiterer wichtiger Bereich, den wir beim letzten Mal erwähnt haben, ist das Sozialmenü. Unser langfristiger Plan sieht es vor, das Sozialmenü von ComponentsJS (alte Architektur) auf Ember umzustellen. Aktuell haben wir die Arbeiten an diesem Projekt auf Eis gelegt, um uns auf die Aktualisierung des CEF zu konzentrieren, wir konnten jedoch bereits einige der ersten Schritte für die Umstellung auf Ember abschließen und werden uns nach der Aktualisierung des CEF wieder diesem Projekt widmen.
Und das sind die größten Probleme des Sozialmenüs, die wir bereits beheben konnten, ehe wir uns ganz auf das Upgrade des CEF konzentrierten:
- Es kann keine Verbindung zum Sozialmenü hergestellt werden
- Die Freundesliste lädt nicht, der angezeigte Status ist falsch, die Freunde werden nicht angezeigt
- Die Informationen zu Ranglistenspielen verschwinden von der „Visitenkarte“, wenn sich der Spieler in einem normalen Spiel befindet
- Beim Starten des Clients zeigt das Sozialmenü der Reihe nach „Verbindung getrennt“, den traurigen Poro und „Freundesliste wird geladen“ an
Neues zum Speicherbedarf und JavaScript-Fehlern
Wir haben uns auch weiterhin den Speicherbedarf der Spiele im Verlauf einer Sitzung angesehen. Wir freuen uns, berichten zu können, dass wir die Speichermenge seit Patch 10.25 um nahezu 30 MB pro gespieltem Spiel verringern konnten und es zu immer weniger Abstürzen aufgrund voller Speicher kommt.
Zu guter Letzt möchte ich noch über die JavaScript-Fehler sprechen. Wir haben in unserem letzten Beitrag einen Fehler bezüglich der Anzahl an JS-Fehlern in den Riot-Regionen gemacht. Im Verlauf von Patch 10.25 traten unglaubliche 265 Millionen JS-Fehler auf. Die richtige Zahl unterstreicht die Dringlichkeit dieses Problems noch einmal, außerdem hat sich die Anzahl an Spielern, bei denen diese Fehler aufgetreten sind, nicht verändert, sondern nur unsere Zählweise. Seither konnten wir die Anzahl an Fehlern auf 140 Millionen pro Patch verringern und sind zuversichtlich, sie sogar noch weiter drücken zu können.
Was ansteht
Obwohl auf dem CEF-Upgrade unser Hauptfokus liegt, haben wir bereits weitere Projekte geplant, die wir später in diesem Jahr in Angriff nehmen wollen.
- Die Umstellung des Sozialmenüs auf Ember, wie oben erwähnt
- Spielzusammenfassung: Obwohl wir bereits gegen Ende des letzten Jahres/Anfang dieses Jahres einige größere Probleme mit der Spielzusammenfassung behoben haben, haben wir in diesem Bereich noch viel Arbeit vor uns. Viele Spieler beschweren sich immer noch über die Dauer bis zur Rückkehr zum Client oder über gelegentliches Einfrieren der Spielzusammenfassung. Sobald dieses Projekt beginnt, werden wir anfangen, uns alle Interaktionen des Clients mit der Engine und den Diensten des Spiels anzusehen, und nach Möglichkeiten suchen, die Erfahrung zu verbessern. Die Spielzusammenfassung ist mit vielen anderen Diensten verknüpft, für die nicht das Client-Team zuständig ist, weshalb wir mit anderen Teams zusammenarbeiten werden, um Probleme in diesen Bereichen zu lösen.
- Verzögerter Beginn der Championauswahl. Hierbei handelt es sich um ein Problem, das vor allem in bestimmten Regionen auftritt, was darauf hindeutet, dass es mit den Netzwerkverbindungen der Spieler zusammenhängt (die Internetinfrastruktur ist von Region zu Region unterschiedlich). Obwohl wir nicht viel tun können, um die Netzwerkprobleme zu lösen, werden wir dennoch mit dem Team für die wettkampforientierte Erfahrung zusammenarbeiten, um sicherzustellen, dass alle Spieler innerhalb eines vertretbaren Zeitraums in die Championauswahl gelangen.
- Stabilität des Clients während langer Sitzungen: Gegen Ende des letzten Jahres haben wir uns darauf konzentriert, die Speicherlöcher zu beseitigen, die dazu führen, dass der Client immer mehr Speicher verbraucht, je mehr Spiele die Spieler absolvieren oder je länger sie den Client geöffnet haben, ohne mit ihm zu interagieren. Aus diesem Grund werden wir auch nach Möglichkeiten suchen, den Spielern intuitivere Optionen zur Verfügung zu stellen, damit sie den Client dauerhaft so erleben können, als hätten sie sich gerade erst angemeldet – unabhängig von der Anzahl an gespielten Spielen oder der Zeit, über die der Client geöffnet war. Dazu könnten wir versuchen, kompliziertere Speicherlöcher zu schließen, wir müssen jedoch erst abwägen, ob kurzfristigere Lösungen an dieser Stelle nicht zielführender sind.
Das ist alles für dieses Update! Unsere Arbeit basiert zu einem nicht unerheblichen Teil auf dem Feedback, das wir durch Dinge wie regelmäßige Spielerumfragen sammeln. Lass uns bitte auch in Zukunft wissen, an welchen Teilen des Clients wir arbeiten müssen und welche Änderungen die größten Auswirkungen auf deine Erfahrung haben!