Geh zur Artikelliste
09.03.23Entwickler

Wie wir zu den besten VALORANT-Servern seit Veröffentlichung gekommen sind

Teilen:

Die Bereitstellung von 128-Tick-Servern war für VALORANT schon lange vor Veröffentlichung enorm wichtig. Es war immer unser Ziel, allen Spielern mit Hilfe von 128-Tick-Servern eine kompetitive Spielerfahrung der Weltklasse zu bieten. Du kannst mehr darüber erfahren, wie wir dieses Ziel vor Veröffentlichung erreicht haben, indem du unseren Artikel zu VALORANTs 128-Tick-Servern liest.


Die Serverleistung aufrechtzuerhalten ist ein ständiger Kampf. Da wir mit der Zeit neue Funktionen einführen, müssen wir stets sehr aufpassen, damit wir in unserem Leistungsbudget bleiben und weiterhin 128-Tick-Server zur Verfügung stellen können. Mit der Zeit häufen sich kleine Verschlechterungen und gelegentliche große Verschlechterungen benötigen unsere sofortige Aufmerksamkeit.


Im August 2022 begegnete uns die größte Abnahme der Serverleistung, die seit Veröffentlichung aufgetreten war. Dieses Problem beeinträchtigte VALORANT-Spiele mit mehr als den üblichen zehn Spielern (also benutzerdefinierte Spiele und E-Sport-Spiele). Diese Probleme zu lösen erforderte die Arbeit einer kleinen Armee von Ingenieuren, Produzenten, Managern und dem E-Sport-Team, das in İstanbul vor Ort war – direkt vor einer unserer größten kompetitiven Veranstaltungen des Jahres.

Die Nachforschungen bei der Behebung dieser Abnahme enthüllten mehrere Gelegenheiten für enorme Verbesserungen an der Server-Framezeit, was zu großen Leistungsverbesserungen führte. Seit Patch 5.07 können die Spieler auf den zuverlässigsten 128-Tick-Servern spielen, seit VALORANT im Juni 2020 erschien.


Mein Name ist Aaron Cheney, und ich bin Ingenieur im Leistungsteam von VALORANT. Hier ist eine Übersicht darüber, was dieser Artikel behandelt:

  • Er beschreibt, wie das Leistungsteam Abnahmen bemerkt.
  • Er erzählt von der umfangreichen Leistungsabnahme, die kurz vor Champions 2022 entdeckt wurde.
  • Er spricht über unsere Lösung des Problems, enthüllt, wie unser Team auftauchende Probleme löst und erklärt, welche Lehren wir aus dem Vorfall ziehen.

Zuerst beschreibe ich, wie wir Leistungsabnahmen bemerken und erkläre einige der wichtigen Hintergrundinformationen, mit denen man das Ausmaß der Abnahme verstehen kann.

Wie bemerken wir Leistungsabnahmen?

Leistungsabnahmen sind eine Unumgänglichkeit der Videospielentwicklung. Spiele sind enorm komplexe Systeme mit vielen beweglichen Teilen, von denen jedes sich auf die Leistung insgesamt auswirkt. Diese Komplexität steigt nur noch, wenn mit der Zeit Funktionen und Systeme hinzugefügt werden. Es ist daher wichtig, das Auftreten von Abnahmen zu bemerken und deren Ursache zu bestimmten.


VALORANT hat ein eigenes Leistungsteam, das damit betraut ist. Unser Team überwacht, wartet und verbessert Client- und Serverleistung auf allen möglichen Hardwaresystemen. Wir nutzen dazu mehrere Werkzeuge und Prozesse, um Abnahmen früh zu erkennen und zu beheben, bevor sie bei den Spielern ankommen.

Ziele für die Serverleistung

Bei 128-Tick-Servern muss jedes Server-Einzelbild in unter 7,8125 Millisekunden (ms) bearbeitet werden. Aber wenn wir das machen, braucht ein einzelnes Spiel einen kompletten CPU-Kern. Um unsere strengen 128-Tick-Anforderungen und Arbeitszielen gerecht zu werden, sind die VALORANT-Server optimiert, um drei Einzelbilder in ~7,8 ms zu bearbeiten. Das bedeutet, dass jedes Server-Einzelbild im Durchschnitt kürzer als 2,6 ms sein muss. Tatsächlich ist unser Leistungsziel für die Einzelbildzeit der Server 2,34 ms. Dieses Leistungsziel erfüllt zwei wichtige Funktionen:

  1. Es bietet uns den nötigen Puffer. Indem wir in unseren Leistungszielen etwas Raum haben, können wir längere Einzelbilder auffangen, ohne unter 128-Tick zu fallen. Dadurch sind unsere Server in mehr Situationen weniger anfällig und haben Platz für das Betriebssystem, Zeitplanung und andere Software, die auf dem Server läuft.
  2. Es hilft uns, VALORANT finanziell rentabel zu halten. Serverinfrastruktur ist teuer. Es wäre zwar toll, wenn jedes VALORANT-Match auf einem einzigen Rechner liefe, aber das ist kein funktionierendes Geschäftsmodell.

AskVal_Feb22_Champions_Article_Graph_3_DE.jpg

Die Gegenwart messen und die Zukunft vorhersagen

Das Leistungsteam nutzt zwei wichtige Datenquellen, um Abnahmen zu finden:

  1. Vorveröffentlichungsdaten – Diese Daten stammen aus diversen Quellen, wie interne Spieltests, automatisierte Tests und PBE.
  2. Live-Daten – Diese Daten werden von unseren Spielern in Live-Umgebungen auf der ganzen Welt gesammelt.

Vorveröffentlichungsdaten ermöglichen uns, die Zukunft vorherzusagen, indem wir unveröffentlichte Inhalte und Funktionen analysieren. Dieser Datensatz ist wesentlich kleiner als Live-Daten, was es aufgrund von Rauschen und Varianz erschwert, Schlüsse zu ziehen – Trends sind mit weniger Daten auch weniger eindeutig. Ausnahmefälle werden auch nicht immer getestet, da wir – so sehr wir es auch versuchen – nicht alles ausgedehnt testen können.


Live-Daten andererseits helfen uns dabei, die aktuelle Spielererfahrung zu verstehen, indem wir genau das messen, was Spieler im Spiel sehen. Dieser Datensatz ist sehr viel größer als interne Daten (und generiert Milliarden von Aufzeichnungen), weshalb sie mitunter schwer zu verarbeiten sind. Wir fassen diese Daten zusammen, um sie sichten zu können.


Ganz allgemein gesagt ermöglichen uns Vorveröffentlichungsdaten, proaktiv zu sein, was unveröffentlichte Inhalte angeht, während wir mit Live-Daten auf Live-Bedingungen reagieren können. Wenn wir beides zusammen nutzen, können wir mit diesen beiden Datensätzen den Großteil der Probleme bemerken.

Ein typisches VALORANT-Match

Die Mehrheit der VALORANT-Spieler nutzt die ungewerteten und gewerteten Warteschlangen. Beide Warteschlangen sind im Prinzip der gleiche Spielmodus mit genau zehn Spielern, nur mit anderem Einsatz. Es gibt zwar viele andere Möglichkeiten, VALORANT zu spielen (Klonprogramm, Spike-Ansturm, Deathmatch usw.), aber wir wenden eine nicht unerhebliche Menge Ressourcen auf, damit der Spike-Spielmodus die bestmögliche Spielerfahrung bietet.

Die meisten VALORANT-Partien haben genau zehn Spieler, aber es gibt einige besondere (und wichtige) Situationen, in denen mehr als zehn Spieler nötig sind.

Untypische VALORANT-Matches

Während einer E-Sport-Übertragung sind bis zu 22 Spiel-Clients mit einem Spike-Match verbunden. Dies sind benutzerdefinierte Matches, damit die Übertragung für die Zuschauer die bestmögliche Erfahrung bietet. In diesen Spielen ist die Aufteilung meistens wie folgt:

  • 10 Plätze sind für die Spieler vorgesehen (5 pro Team).
  • 2 Plätze sind für die Trainer vorgesehen (1 pro Team).
  • 10 Plätze sind für die Beobachter vorgesehen, die von unserem Übertragungsteam gesteuert werden. Diese zusätzlichen Plätze ermöglichen es den Fans, von zu Hause oder in der Arena zuzuschauen!

Diese Matches mit 22 Clients sind weit von typischen VALORANT-Matches entfernt. Jeder mit einem Spiel verbundene Client muss vom Server in Betracht gezogen werden, damit jeder Client vom Server die nötigen Informationen erhält, um das Spiel auf dem Bildschirm anzuzeigen. Das würde in unserer Live-Umgebung normalerweise Probleme bereiten. Aber für E-Sport-Matches nutzen wir dedizierte lokale Hardware, um unseren Athleten die gleichbleibend hohe Gameplay-Integrität zu bieten.

Leistungsziele für untypische VALORANT-Matches

Ich habe ja vorhin die Ziele für die Serverleistung erwähnt. Unser Ziel von 2,34 ms gilt für typische VALORANT-Matches mit genau zehn Spielern. In Situationen, in denen mehr als zehn Spieler verbunden sind, skalieren unsere Leistungserwartungen linear mit der Anzahl zusätzlicher Spieler.


Beispielsweise wird die durchschnittliche Einzelbildzeit bei 22 Clients in etwas mit einem Faktor von 2,2 hochskaliert – von 2,34 ms auf 5,2 ms. Das ist immer noch weit unter den erforderlichen 7,8 ms, die für 128-Tick-Server nötig sind.

Basierend auf unserer Erfahrung mit untypischen VALORANT-Matches und basierend auf unserem umfangreichen Verständnis der Serverleistung von VALORANT konnten wir so Leistungsdaten von typischen Matches extrapolieren, um untypische Matches zu verstehen.

Aber was geschieht, wenn sich etwas ändert? Was geschieht, wenn die Serverleistung nicht länger linear mit der Anzahl der verbundenen Clients skaliert?

Die Abnahme

Drehen wir die Uhr auf August 2022 zurück. Das erste Anzeichen von Schwierigkeiten trat in einem Spieltest mit 22 Clients auf. Spieler in diesem Spieltest bemerkten Tick-Fluktuationen und allgemeine Inkonsistenzen im Gameplay. Videoaufnahmen des Matches bestätigten, dass etwas nicht stimmte. Wir hatten echt Glück, dass wir das Problem bemerkten, denn Spieltests mit 22 Clients waren damals nicht standardisiert. Inmitten von Teamänderungen und Vorbereitungen auf Champions 2022 dachte ein schlauer VALORANT-Entwickler daran, unsere Tester für einen Test mit 22 Clients zu beauftragen.

Es war zwar noch nicht an der Zeit, den Alarm auszulösen, aber wir begannen sofort damit, das Problem zu bestätigen, abzufangen und zu beheben.

Das Problem bestätigen

Ein einzelner Datenpunkt ist noch kein Trend. Wir begannen damit, die Telemetrie unserer Live-Umgebung zu verarbeiten, um Schwere und Ausmaß des Problems zu erfassen, wofür wir die Spiele nach Anzahl der verbundenen Clients trennten, von zehn bis 22 Clients. Unsere Entdeckungen waren schockierend.

Wir kannten zwar den genauen Grund des Problems nicht, aber unsere Schaubilder zeigten ein alarmierendes Verhältnis zwischen den verbundenen Clients und der Serverleistung. Das Problem skalierte nicht linear mit der Anzahl der Spieler.


Die Daten bestätigten, dass wir vor einem großen Problem standen – gerade mit Champions 2022 vor der Tür, das auf Patch 5.04 gespielt werden würde. Wir lösten den Alarm aus und begannen sofort damit, das Problem abzufangen.

(Das Diagramm zeigt die Server-Einzelbilderzeiten nach Patch. Jede Zeile steht für die Anzahl der Clients, von den typischen Matches mit zehn Clients bis zu Matches mit dem Maximum von 22 Spielern. Wie erwartet verschlechtert sich die Leistung mit jedem verbundenen Client, aber die Spitze bei Patch 5.03 bedeutete, dass unsere Leistung nicht linear abnahm.)

Die Abnahme abfangen

Ein Problem abzufangen bedeutet im Allgemeinen, dessen Effekte zu verringern, ohne den Grund wirklich zu kennen. Diese Technik wird in der Medizin eingesetzt, um die Situation zu bewerten und „die Blutung zu stillen“ und wird bei Riot verwendet, um auftretenden Problemen schnell zu begegnen.

Wir griffen zu zwei Maßnahmen, um das Problem in den Griff zu kriegen.

Ausweichpläne erstellen

Erstens arbeitete das VALORANT-Management daran, mit unseren Partnern in İstanbul Ausweichpläne zu erstellen. Damit wollten wir uns auf den Fall vorbereiten, dass wir das Problem nicht vor Beginn von Champions 2022 lösen könnten.


Da wir wussten, dass das Problem mit der Anzahl verbundener Clients skalierte, interessierte uns insbesondere die Mindestanzahl der Beobachter, die für eine uneingeschränkte E-Sport-Zuschauererfahrung nötig wäre. 22 Clients standen außer Frage … wie viele Clients könnte man also unter diesen Umständen theoretisch verbinden? Wir arbeiteten mit unseren E-Sport-Freunden zusammen und stellten fest, dass 15 verbundene Clients stabile 128-Tick-Server ermöglichten, was uns insgesamt fünf Zuschauerplätze gab, die wir für die Übertragung nutzen konnten. Das alles war möglich, weil unsere Standard-Serverzeiten diesen Puffer hatten.

Die Ursache finden

Zweitens setzen die VALORANT-Entwickler ihre Untersuchungen fort, um das Problem besser zu verstehen und die Ursache der Abnahme zu finden. Wenn ein so großes Problem auftritt, liegt das meistens nicht an mehreren Systemen.


Wir dachten, wir hätten vielleicht Glück, würden die Ursache des Problems schnell finden und vor Beginn der Champions 2022 beheben. Das hat leider nicht geklappt.

Die Abnahme beheben

Die Abnahme wurde am 25. August 2022 zuerst bemerkt und eine Woche später gelöst. Im Verlauf dieser sieben Tage wurden viele VALORANT-Ingenieure dazu geholt, um mehrere mögliche Lösungen zu erforschen.

Am ersten Tag der Untersuchungen stellten wir fest, welcher Teil der Code-Basis für die Abnahme verantwortlich war: Replikation Mit Replikation stellt die Unreal Engine Konsistenz zwischen Servern und Clients sicher, indem Akteure und Komponenten synchronisiert werden. Hier erfährst du mehr über das Replikationssystem der Unreal Engine.

Wir wollten zuerst die Änderungen zwischen 5.02 und 5.03 analysieren und so herausfinden, was sich an der Replikation geändert hatte. Das war nicht so einfach, da wir vor kurzem zur Unreal Engine 4.26 gewechselt hatten, wodurch mehrere wichtige Teile der Engine verändert wurden. (Mehr über das Update der Unreal Engine für VALORANT findest du in diesem Twitter-Beitrag von VALORANTs Tech Lead Marcus Reid (in englischer Sprache).

Die Untersuchung der Replikation war nicht leicht. Es ist kein System, das besondere Aufmerksamkeit seitens der VALORANT-Entwickler braucht, da wir schon seit Jahren etablierte Vorgehensweisen hatten. Es ist außerdem kein System, das von Riot-Ingenieuren erstellt wurde – wir haben Anpassungen an der grundlegenden Engine vorgenommen, um unseren Anforderungen zu genügen, aber tiefgehendes Verständnis dieses Themas ist ungewöhnlich.


Als nächstes nahmen wir diverse Teile des Spiels systematisch auseinander, um die Unterschiede zwischen 5.02 und 5.03 zu messen, um der Ursache auf den Grund zu gehen. Wir nutzten Profilwerkzeuge von Unreal und eigens von Riot entwickelte Werkzeuge, um Leistungscharakteristiken zwischen den beiden Patches zu vergleichen. Das führte uns schlussendlich zu der Erkenntnis, dass Charaktere, Waffen und Fähigkeiten in 5.03 wesentlich öfter repliziert wurden als in 5.02.

Wir gingen dann zwei möglichen Lösungswegen nach:

  1. DIE Abnahme finden und beheben. Das war das Szenario, das für uns ideal war.
  2. Andere Möglichkeiten zur Leistungsverbesserung finden. Wenn wir andere Bereiche finden könnten, in denen wir Verbesserungen vornehmen könnten (genug, um die verlorene Einzelbildzeit aufzuholen), dann könnten wir die Leistung wieder in den Griff bekommen, auch wenn wir das eigentliche Problem nicht finden und beheben konnten.

Mehrere Ingenieurteams folgten verschiedenen Ansätzen, um mögliche Behebungen und Verbesserungen zu testen. Dabei konnten viele Ingenieure Erfahrungen mit Replikation sammeln. Wir entdeckten in dieser Zeit mehrere Möglichkeiten zur Leistungsverbesserung, die ein zu großes Risiko für sofortige Implementierung bargen und stattdessen für die Zukunft vorgemerkt wurden.


Am 1. September 2022 fanden wir das Problem: Eine einzige Zeile im Code des Upgrades auf UE 4.26 sorgte dafür, dass die Replikation in VALORANT unter bestimmten Umständen wesentlich öfter stattfand als normal. Das führte zu einer Leistungsabnahme, die enorm zunahm, je mehr Clients sich mit dem Server verbanden. Das Problem war in typischen Matches mit zehn Spielern zwar vorhanden, machte Matches mit 22 Clients aber unspielbar.


Die Abnahme war aufgespürt, die Behebung war ohne Risiko, und wir waren sehr zuversichtlich. Das war das Beste aller Welten. Wir haben zwar die Champagnerkorken nicht sofort knallen lassen, aber wir hatten eine sehr zufriedenstellende Änderung in unserem Code.

Nach der Abnahme

Sobald die Ursache der Abnahme erkannt und behoben war, führten wir ausgedehnte Tests durch, um sicherzustellen, dass die Leistung wieder unseren Erwartungen entsprach und wir keine neuen Probleme ausgelöst hatten.

Den Fehler beheben

Obwohl wir am 1. September 2022 herausfanden, wie man den Fehler beheben konnte, wurden die Änderungen erst am 8. September 2022 auf unsere E-Sport-Umgebung aufgespielt – nach der Gruppenphase. Das hatten wir getan, um alle Risiken so weit wie möglich zu verringern, indem wir uns Zeit für Tests und Validierungen nahmen, und um den Leute in İstanbul möglichst wenig Schwierigkeiten zu machen.


In unseren Live-Umgebungen behoben wir den Fehler mit Patch 5.05, was deutliche Verbesserungen mit sich brachte.

Nach Champions 2022

Der Spaß hörte mit 5.05 nicht auf. In der Woche voller Untersuchungen am Replikationssystem konnten wir eine Menge Gelegenheiten zur Verbesserung der Leistung finden und diese für die Entwicklung einplanen. Wir konnten diese nicht sofort umsetzen, da wir den Grund des Problems noch nicht erkannt hatten. Nachdem wir die ursprüngliche Abnahme behoben hatten, nutzten wir unsere neue Expertise mit der Replikation, um mehrere Bereiche anzugehen, die unsere Serverleistung noch weiter verbessern würden.

Diese Bemühungen führten zu spürbaren Leistungsverbesserungen auf ganzer Linie, was zu einer Verringerung von 15 % der gesamten Server-Einzelbildzeit im Vergleich zu den Werten vor der Abnahme führte. Diese Änderungen verringerten ebenfalls die Varianz in allen Regionen und erhöhten die Stabilität der Server-Einzelbildzeit.


Seit Patch 5.07 erfüllten mehr als 99,3 % der Server-Einzelbilder unsere strikten 128-Tick-Anforderungen, was bedeutet, dass die Spieler auf den stabilsten, konsistentesten Servern seit Veröffentlichung von VALORANT spielen.

(Das Diagramm zeigt die Server-Einzelbilderzeiten nach Patch. Jede Zeile steht für die Anzahl der Clients, von den typischen Matches mit zehn Clients bis zu Matches mit dem Maximum von 22 Spielern. Nach den großen Abnahmen in Patch 5.03 und 5.04 haben wir die Abnahme behoben und kehrten mit Patch 5.05 zu den normalen Werten zurück. Mit Patch 5.07 veröffentlichten wir spürbare Verbesserungen, die zu einer Verbesserung von 15 % im Vergleich zu den Werten vor der Abnahme führten.)

Gezogene Lehren

Dieses Leistungsproblem zu lösen erforderte eine kleine Armee: ein Dutzend Ingenieure, E-Sport-Partner, Test-Dienstleister, Produzenten, Teamführung und die Hilfe von Partner-Teams, die uns mit Rat und Tat zur Seite standen. Wir haben durch diesen Vorfall viel gelernt und Lücken in unseren Prozessen gefunden, die wir angehen wollen.

  • Überwachung für untypische Matches – Wir achten vor allem auf die typische VALORANT-Spielerfahrung, also der klassische Spike-Spielmodus mit zehn Spielern. Unsere Daten zeigten keine Aufschlüsselung nach Anzahl der verbundenen Spieler, was die Größe der Abnahme verschleierte, bis wir neue Tabellen erstellten. Wir haben nun neue Prozesse erstellt, anhand derer wir die Leistung prüfen und verstehen, was untypische VALORANT-Matches mit mehr als zehn Spielern angeht.
  • Erhöhte Test-Abdeckung für untypische Spiele – Auch wenn wir uns weiterhin vor allem auf den klassischen Spike-Spielmodus mit zehn Spielern konzentrieren, wollen wir neue Prozesse und Testabläufe erstellen, um die Serverleistung in Umgebungen mit 22 Clients besser zu verstehen. Die Datenmenge für Spiele mit 22 Clients ist verschwindend gering im Vergleich zu allem anderen, also müssen wir regelmäßig Tests mit 22 Clients durchführen. Daher führen wir jetzt für jede Veröffentlichung Spieltests mit 22 Clients durch, anstatt wie vorher nur vor großen Turnieren. Wir werden vermutlich auch weitere, ausgefeiltere Testmethoden brauchen.
  • Fachbereichexperten (SMEs) ausbilden – Auch wenn es sehr viel Zeit kostet, können SMEs dabei helfen, Wissenslücken zu füllen und das Team weiterbringen. Mehrere Ingenieure konnten im Verlauf der Behebung dieser Abnahme Erfahrung mit Replikation sammeln, was sich als großartige Nutzung von Ressourcen herausstellte.
  • Das Risiko für Turniere minimieren – Wir spielten Champions 2022 auf einem frischen Patch – der darüber hinaus noch auf einem neu integrierten Update der Unreal Engine basierte – und setzten uns so einem Risiko aus. Wir wollen zwar, dass Gameplay-Änderungen (an Spielbalance, Charakteren usw.) rechtzeitig für große Turniere fertig werden, aber kommende Turniere werden wohl nicht so auf Kante genäht werden. Zumindest werden wir die Risiken bewerten, wenn das nicht vermeidbar ist.

Auf jeden Fall werden wir weiterhin Verbesserungen vornehmen, damit alle VALORANT-Spieler unter besseren Bedingungen kämpfen. Viel Spaß mit den 128-Tick-Servern, und viel Spaß beim Fraggen!

Wirwarten

Ähnliche Inhalte