So handhabt 2XKO das Onlinespielen

Die Technologie, die das Onlinespielen so fair, rasant und spaßig macht wie das Offlinespielen.

Hallo zusammen! Ich bin Tony Cannon, Senior Principal Software Engineer von 2XKO. In diesem Artikel beleuchten wir unsere Anstrengungen für das bestmögliche Erlebnis beim Onlinespielen.

Wir haben viele Informationen für dich, deshalb hast du hier eine kurze Zusammenfassung:

  • Für uns ist es unglaublich wichtig, dass das Onlinespielen so sicher und lagfrei wie möglich ist. Wir setzen viele verschiedene Systeme ein, um das zu gewährleisten. Dazu gehören die Client-Server-Architektur, der Rollback-Netcode und unser sogenannter Fairplay-Modus.
  • Wir nehmen den Kampf gegen das Cheaten sehr ernst. Deshalb nutzen wir Riot Vanguard, um sicherzustellen, dass deine Gegner richtige Menschen sind, die nicht mit Skripts schummeln.
  • Wir setzen viele Werkzeuge ein, damit unsere Systeme rund um das Spiel reibungslos funktionieren.
    • Auf unserem sogenannten Game-Validation-Server lassen wir eine Kopie jedes Spiels in der Cloud ablaufen. Basierend darauf führen wir unsere Anti-Cheat-, Fähigkeitenbewertungs- und Zuschauersysteme aus.
    • Beim Matchmaking kann jetzt lobbyübergreifend nach Spielen gesucht werden, damit du schnell einen Gegner findest, wenn deine Lobby mal nicht gerammelt voll ist.

Alles klar. Gehen wir ins Detail.

Komplett aufs Onlinespielen ausgerichtet

Von Anfang an ist die Entwicklung von 2XKO komplett auf Onlinespielen ausgerichtet gewesen. Oberste Priorität beim Aufbau der wesentlichen Technologien hatten die Integration von GGPO und die Online-Durchführung sämtlicher Spieletests. Obwohl das Spiel anfangs peer-to-peer lief, führten wir in unserem Rechenzentrum in Las Vegas einen Packet-Proxy aus, damit alle Spieletests richtig über das Internet ablaufen konnten. Es ist ungeheuer wichtig, das in der Designphase richtig zu machen. Alle Bewegungen, Mixups, Animationen und Effekte wurden für Online-Interaktionen entwickelt und getestet, damit sich das Spiel so toll anfühlt wie ein Offlinespiel.

Client-Server-Architektur

Mit voranschreitender Entwicklung gingen wir von Peer-to-Peer zu einer Client-Server-Architektur über. Der Umstieg war hauptsächlich von unserem Anspruch motiviert, dass wir Matches mit vier Spielern wollten und dass die Performance und Skalierbarkeit möglichst konsistent ist. In einem Vier-Spieler-Match tauscht jeder Spieler nur gut ein Drittel der Datenmenge mit dem Client-Server aus, der für eine Peer-to-Peer-Topologie nötig wäre. Das verringert Bandbreitenanforderungen, verringert die Chance des Paketverlusts und wir können auch mit weniger zuverlässigen Verbindungen ein möglichst gleichbleibendes Erlebnis bieten. Natürlich gibt es noch viele weitere Gründe für den Einsatz der Client-Server-Architektur.

Datenschutz und Schutz der IP-Adresse

Der erste und wichtigste Grund: Mit der Client-Server-Architektur erfahren deine Mitspieler niemals deine IP-Adresse. Das ist eines der größten Risiken bei einem Peer-to-Peer-System. Allein durch das Zusammenspielen mit andern Spielern öffnest du einen Angriffsvektor, um etwa dein Netzwerk mit Paketen zu überschwemmen, wodurch du die Verbindung verlierst und eine Match-Niederlage erleidest. Schlimmer noch: Mit der Übermittlung der IP-Adresse machst du dich angreifbar für Doxing-Angriffe. Wir nehmen die Sicherheit unserer Spieler sehr ernst und der Einsatz der Client-Server-Architektur ist der effektivste Weg, um deine IP-Adresse zu schützen. 

Autorität über Zeit und Eingaben

Der Server spielt noch eine weitere wichtige Rolle im System: Er ist die höchste Autorität für Eingaben, Zustände und die Zeit. Die Robustheit des Ausgleichsalgorithmus für diese „Kluft“ stellt für Entwickler nach der fertigen Einrichtung des Rollbacks einen der bedeutendsten Qualitätsfaktoren für den Netcode dar. Damit ist gemeint, dass Spieler die Last des Rollbacks gemeinsam tragen. Wenn ich ein Rollback über drei Frames sehe, dann solltest du dasselbe erleben. Wenn ich ein Rollback über fünf Frames erlebe und du nur über einen Frame, dann ist diese Kluft nicht richtig austariert. 

Ohne zu tief in die Details zu gehen: Die Ausbalancierung der Kluft sorgt im Grunde dafür, dass die Spieluhren aller Spieler perfekt synchronisiert sind. Das ist bereits in einem Peer-to-Peer-Spiel mit zwei Teilnehmern schwierig. Wie stellen wir sicher, dass alle Spieler mit denselben Informationen arbeiten? (Kleiner Nerd-Moment: Das steht tatsächlich mit dem Zwei-Generäle-Problem in Zusammenhang und ist wahrscheinlich eine unlösbare Frage, aber ich schweife ab …). In einem Spiel mit vier Spielern ist das ein noch viel größeres Problem. 

Das steckt hinter der Aussage, dass der Server die Zeit-Autorität ist. Mit einer zentralen Autorität, die die Uhren aller Spieler synchron hält, können wir die Kluft zwischen den Spielern für alle viel besser ausbalancieren.

Fairplay-Modus

Wir arbeiten auch an einem anderen System, um das Onlinespielerlebnis für 2XKO besser zu machen: dem Fairplay-Modus. Wir hatten alle schon Matches gegen Spieler, die über WLAN spielen, mit einem angesteckten Smartphone oder einem Computer, der die Mindestanforderungen nicht erfüllt. Was passiert? Das Match fängt an zu stottern oder hält kurz an oder macht einen gewaltigen Rollback, der Charaktere kreuz und quer durch die Gegend teleportiert, was noch schlimmer ist. In einem Peer-to-Peer-Spiel kann man nicht mehr tun. Wenn man nicht rechtzeitig alle Eingaben der teilnehmenden Spieler bekommt, dann hilft nicht einmal mehr ein Rollback. Das ist besonders schwierig, da sich das auch ausnutzen lässt. Böswillige Spieler können einen Lag-Switch zwischen ihre Controller schalten, um auf Knopfdruck Paketverluste zu simulieren, oder am PC die Windows-Titelleiste ziehen, damit das Spiel nicht weitertickt. In beiden Fällen wird ein riesiger Lag erzeugt, wodurch du deine Kombo möglicherweise zur falschen Zeit beendest. 

Mit dem Fairplay-Modus haben alle Spielereingaben in 2XKO eine kurze Kompensationszeit, um anzukommen. Kommen sie zu spät an, wird die letzte Eingabe des Spielers repliziert und das Spiel läuft weiter. Das ist eine ziemlich große Sache! Heißt im Klartext: Egal, was deine Gegner mit ihrem Netzwerk anstellen, dein Gameplay-Erlebnis sollte dadurch nicht beeinträchtigt werden. Wenn die ihren Lag-Switch aktivieren oder die WLAN-Verbindung abbricht, solltest du das gar nicht bemerken. Das ist aber ein zweischneidiges Schwert. Solltest du mal für ein paar Sekunden ein Netzwerkproblem haben, dann kann es passieren, dass dir danach eine richtig fette Kombo vom anderen Team reingedrückt wird.

Fairplay ist aktuell noch eine experimentelle Funktion und es muss noch umfassend abgestimmt werden, damit es richtig gut läuft. Uns ist es wichtig, dass es Betrüger bestraft, die sich durch absichtliche Paketverluste oder andere Netzwerkmanipulationen einen Vorteil verschaffen wollen, aber nicht Leute, die zufällige Netzwerkprobleme haben. Wir geben dir Bescheid, wenn wir das System komplett implementieren, damit du uns deine Eindrücke und Rückmeldungen dazu schicken kannst.

Globale Infrastruktur und globaler Schutz

Selbstverständlich sind die ganzen Netzwerkqualitätsverbesserungen ohne eine robuste, global aufgestellte Technik im Hintergrund nur halb so viel wert. Riots leistungsfähige Netzwerkinfrastruktur hält alles im Hintergrund zusammen. Der Netzwerkverkehr von 2XKO läuft über den „Riot Direct“-Backbone, um sicherzustellen, dass deine Datenpakete verzögerungsfrei beim Server ankommen. Die Server selbst werden vom „Generalized DDoS Service“ geschützt, sodass böswillige Akteure kein leichtes Spiel haben, das hochbrisante Finale des Turniers, das du in deiner privaten Lobby veranstaltest, zu stören. Wir nutzen auch Riots Game Provisional Platform für die weltweite Bereitstellung von Servern, um für alle Spieler in ihren Matches in all unseren unterstützten Regionen möglichst niedrige Pings zu ermöglichen. Wir möchten Server in der Nähe von allen Spielern bereitstellen, aber es kann noch etwas dauern, bis wir das Ziel erreichen. Bis wir sie alle eingerichtet haben, bedanken wir uns für deine Geduld.

Anti-Cheat mit Riot Vanguard

Für faire Onlinewettkämpfe ist Integrität oberstes Gebot. Darum verknüpfen wir robuste Netzwerkleistung mit starkem Betrugsschutz. Als Anti-Cheat-System kommt Vanguard zum Einsatz, um es Skriptern und Bot-Usern so schwer wie möglich zu machen. Vanguard hat seine Leistungsfähigkeit eindrucksvoll in League unter Beweis gestellt, wo es die Anzahl aktiver Bots um über 99 % reduzieren konnte. So können wir gewährleisten, dass deine Gegner richtige Menschen sind, die nicht mit Dingen wie Auto-Parieren- oder Gegenschlag-Skripten schummeln. An dieser Stelle müssen wir aber auch sagen, dass die Sicherstellung der Wettkampfintegrität ein andauernder Prozess ist. Wir beobachten die Entwicklungen stetig und passen unsere Systeme und Ansätze immer wieder an.

Feste Eingabeverzögerung und Einzelbildabstimmung

Wir regulieren auch unsere Untersysteme für Eingabeverzögerung und Einzelbildabstimmung (Frame-Pacing), damit sich das 2XKO-Gameplay so konsistent wie möglich anfühlt. Es soll keinen Unterschied machen, ob du online oder offline, auf PC oder Konsole spielst. 

Feste Eingabeverzögerung

Unser erster Trick ist eine feste Eingabeverzögerung von drei Frames für alle Eingaben. Das ist ein üblicher Ansatz in Kampfspielen, um die Länge von Rollbacks zu reduzieren. In 2XKO wenden wir das online und offline an. Im Umkehrschluss heißt das, dass du dein eingeübtes Kombotempo und Muskelgedächtnis aus dem Offlinetraining auch direkt ins Onlinespiel übertragen kannst. Wir haben uns vor vielen Jahren für die drei Frames als Verzögerung entschieden. Angefangen bei der zeitlichen Abstimmung von Gegenschlägen für vermasselte Angriffe bis hin zu extrem schnellen Angriffen wurde alles im Spiel basierend auf dieser Drei-Frames-Verzögerung entwickelt und getestet. So soll sich das Spiel trotz der Verzögerung astrein anfühlen. 

Einzelbildabstimmung

Unser zweiter Trick ist der umfangreiche Einsatz der Abstimmung von Einzelbildern (Frame-Pacing). Die Einzelbildabstimmung bestimmt, wie schnell und gleichmäßig Einzelbilder simuliert, gerendert und angezeigt werden können. Mit ungleichmäßiger Einzelbildabstimmung kann es zu stotternder Darstellung kommen oder dazu, dass ein Folgeangriffe, bei dem du nur einen Frame für die Ausführung hast, einfach nicht durchkommen, obwohl du dir sicher bist, den Zeitpunkt perfekt getroffen zu haben. Wir konzentrieren uns bei der Einzelbildabstimmung auf die Minimierung der Eingabeverzögerung und die Unterschiede zwischen Konsole und PC. Aktuell ist die Zeit zwischen dem Drücken einer Taste und der Darstellung auf dem Bildschirm auf PC, PS5 und Xbox fast identisch. Deswegen sollte sich 2XKO immer gleich anfühlen: Beim Online- und Offlinespielen, auf deinem PC zu Hause oder auf einer Konsole bei einer Veranstaltung.

Game Validation Server (GVS)

Weiter oben habe ich erwähnt, dass der Spielserver die absolute Autorität für Spielzustände ist. Bisher wurde aber noch nicht erklärt, was das genau bedeutet. Die größten Vorteile ergeben sich daraus für unsere Anti-Cheat- und Anti-Smurf-Anstrengungen. Jedes kompetitive 2XKO-Match wird als Kopie auf dem Server ausgetragen. In einem 2-gegen-2-Match läuft also ein fünftes Match in Echtzeit in der Cloud mit. Das ist unser Game Validation Server oder GVS. 

Für uns ergeben sich daraus unschätzbare Vorteile. Der Einsatz eines zentralen Servers gibt uns die Möglichkeit, zu bestimmen, wer genau bestraft werden soll, wenn jemand einfach Match verlässt oder absichtlich die Netzwerkverbindung trennt. Der GVS geht aber noch einen Schritt weiter: Unterscheidet sich der Zustand der Spielkopie von dem der anderen Spieler, weil der Spieler sein Spiel manipuliert hat, dann können wir den Spieler über die Prüfsumme des Spielzustands mit der vom GVS abgleichen. Damit schalten wir eine weitere Möglichkeit für Spieler aus, etwa ein Unentschieden zu erzwingen, indem sie ihren Spielzustand manipulieren. 

Der GVS füttert die Match-Ergebnisse auch in unsere nachgelagerte Datenpipeline. Beispielsweise senden wir detaillierte Statistiken von jedem Match an Riots zentralen Bewertungsdienst. Der Bewertungsdienst lässt unsere Spielzusammenfassungsdaten mit dem Algorithmus „True Skill 2“ von Microsoft auswerten, um so schon nach einigen wenigen Spielen das Können eines Spielers berechnen zu können. So musst du weniger unausgeglichene Matches erdulden und wir erhoffen uns davon auch, dass der Einsatz von Smurf-Konten drastisch sinkt.

Lobbys und Zusehen

Abgesehen vom Kern-Gameplay haben wir auch viel in unsere Systeme rund um das Spiel investiert. Das wichtigste davon ist das Lobby-System. Kampfspiele sind am unterhaltsamsten, wenn du sie zu Hause mit ein paar Freunden zocken oder auf einem örtlichen Turnier oder bei einem wöchentlichen Treffen in deiner Gegend Spaß haben kannst. 2XKO-Lobbys sollen diese sozialen Systeme online nachbilden.

Laufende Matches

Eine meiner Lieblingsfunktionen ist, dass ich beliebigen laufenden Matches einfach zusehen kann. Anderen Spielern in ihren Matches zusehen zu können, ist einer der wichtigsten Aspekte vom Offlinespielen. Das ist ein toller Weg, um neue Techniken für deinen Charakter zu erlernen; um zu sehen, welche Werkzeuge andere Spieler nutzen, oder um einfach deine Freunde im Kampf gegen einen Gegner anzufeuern, der dich aus einem Turnier geworfen hat. Diese schönen Gefühle wollten wir auch beim Spielen über das Internet rüberbringen.

Kommt ein Spieler in einer 2XKO-Lobby einem Spielautomaten eines laufenden Spiels nahe genug, dann zeigen wir über dem Kopf ein Fenster an und in wenigen Sekunden kennst du alle wichtigen Details zum Match. Ganz gleich, ob sie gerade in der Championauswahl sind oder ein Match beginnen oder schon ganz am Ende angekommen sind und der nächste Treffer die Partie entscheidet: Du siehst fast in Echtzeit, was die Spieler auch sehen, ganz ohne langwieriges Synchronisieren oder Wiedergabeverzögerungen. So bist du mitten in der Action drin, als wärst du von Anfang an dabei gewesen.

So funktioniert serverseitiges Zusehen

Wir mussten ganz schön experimentieren, um das Zuschauersystem richtig aufzusetzen. Kampfspiele wie 2XKO, die Rollbacks nutzen, sind komplett deterministisch. Du kannst also den Match-Zustand immer wiedergeben, solange du die Eingaben kennst. Wenn sich jemand einem Automaten nähert und von Runde eins an zusieht, dann leiten wir die Eingaben entsprechend weiter und alles ist gut. Aber was ist, wenn man in der Mitte des Matches mit dem Zusehen anfängt? Tja, man könnte ihnen auch dann alle Eingaben im Schnellvorlauf zeigen, bis sie beim aktuellen Zustand angekommen sind, aber das würde dauern. Versionen der 2XKO-Lobbys vor Version Alpha Lab 1 funktionieren tatsächlich genau so. Es hat funktioniert, aber das Erlebnis war unterirdisch. Eine Wartezeit von 5 bis 20 Sekunden lud niemanden dazu ein, die Funktion aktiv zu nutzen.

Als der GVS online ging, konnten wir endlich etwas Besseres anbieten. Zur Erinnerung: Der GVS ist unser System zur Validierung des Spielzustands auf dem Server in Echtzeit. Fängt ein Spieler jetzt an, einem Match in der Mitte des Spiels zuzusehen, dann schicken wir ihm nicht alle Eingaben. Stattdessen fragen wir beim GVS eine Momentaufnahme des aktuellen Spielzustands ab und schicken die Eingaben ab diesem Zeitpunkt. Eine Momentaufnahme ist ein speichersparsamer Speicherstand der deterministischen Teile des Systems. Das sind nur etwa 50 KB, die superschnell beim Spieler ankommen. Anstatt durch drei Minuten von Spielereingaben zu spulen, laden wir nur noch diesen 50-KB-Speicherstand und der Spieler ist sofort auf dem aktuellen Stand des Matches. Ich finde, das ist wie Zauberei.

Ohne die serverseitige Match-Simulation hätten wir das niemals bewerkstelligen können. In einem Prototyp der Zuschauerunktion nahmen wir die Momentaufnahme des ersten Spielers im Match und schickten sie an einen Zuschauer. Das führte zu allerlei Problemen. Zuerst einmal ist die Erfassung und Komprimierung der Momentaufnahme ziemlich leitungsintensiv. Auf leistungsschwächeren Geräten führte das jedes Mal zu Einbrüchen der Bildwiederholrate, wenn jemand mit dem Zusehen begann. Das ist natürlich komplett inakzeptabel! Kannst du dir vorstellen, wie es sich anfühlt, wenn du deine Trefferbestätigung verpasst, nur weil jemand im falschen Moment beim Match zusehen will? Nicht nur das. Es ist auch sehr unsicher. Wir wollen böswilligen Akteuren keinerlei Angriffsvektoren bieten, mit denen sie etwa Momentaufnahmen fabrizieren könnten, die eine Art Buffer-Overflow-Angriff oder andere Mittel zur Kompromittierung der Geräte der anderen Spieler ermöglichen. All diese Probleme konnten wir vermeiden, weil unsere Zuschauerdaten mit dem Server von einer einzigen vertrauenswürdigen Quelle stammen.

Lobbyübergreifendes Matchmaking

Ein letzter Punkt, den ich dir noch vorstellen möchte, ist unser lobbyübergreifendes Matchmaking. Die 2XKO-Lobbys bieten viele Wege, um in ein Match zu kommen: Du kannst einzelne Spieler direkt herausfordern, an einem Automaten sitzen und auf Gegner warten oder quasi eine Münze hochhalten, um wie in den guten, alten Arcade-Tagen als Nächstes dran zu sein. Du kannst dir vom Matchmaker auch einen Gegner suchen lassen. 

Das funktioniert in der Regel ganz gut, wenn die Lobby gerammelt voll ist. Es gibt aber auch ein paar Sonderfälle. Was passiert, wenn die ganze Lobby bereits in Matches ihren Spaß hat und nur du als Einziger noch nach einem Match suchst? 

In Alpha Lab 1 zeigten sich viele großartige Vorteile vom Spielen in einer Lobby: die Bestenlisten, Siegsträhnen oder dass du einfach zu einem Automaten hingehen und zusehen konntest. Das führte aber in solchen Sonderfällen zu längeren Wartezeiten für ein eigenes Match. Spieler, die aber einfach nur so schnell wie möglich ein Match starten wollten, wären mit einer Option wie „Match finden“ im Hauptmenü schneller ins Spiel gekommen, weil das System dann sämtliche Spieler für Matches in Betracht gezogen hätte und nicht nur die aktuell aktiven Spieler in der Lobby. 

In der geschlossenen Beta modifizierten wir den Matchmaker, damit er in allen Online-Lobbys nach Matches sucht und nicht mehr nur in deiner aktuellen Lobby. Fand er ein Match in deiner aktuellen Lobby, dann reservierte er ein Match an einem Automaten der Lobby und schickte Spieler dorthin, damit dein Spiel starten konnte. Fand er ein Match mit einem Spieler aus einer anderen Lobby, dann lief das fast genauso ab. Alle Spieler bekommen in ihrer eigenen Lobby eine Reservierung an einem Automaten und wir zeigen ein Hologramm des Gegners, der sich zu dir an den Automaten setzt. Nach dem Ende des Matches kehren die Spieler wieder in ihre ursprüngliche Lobbys zurück. Keine Sorge, das beeinträchtigt deine Siegessträhnen in keiner Weise. 

Da alle Spieler aller Lobbys shardweit im selben lobbyübergreifenden Matchmaker landen, sollte die Matchsuche genauso schnell ablaufen wie die Suche nach einem Match über eine Hauptmenüoption in Spielen ohne Lobbys. Der Matchmaker ist so eingestellt, dass er dir nach einer festgelegten Zeit das bestmögliche Match anbietet. Zu sehr aktiven Zeiten mit vielen Spielern solltest du schon nach wenigen Sekunden ein faires Match finden. Um 3 Uhr morgens, wenn kaum jemand online ist, versuchen wir natürlich auch, dich schnell in ein Match zu bringen, aber dann kann der Niveaunterschied zwischen den Spielern im Match spürbarer ausfallen als zu den Stoßzeiten. Die langwierigere Matchsuche zu den Randzeiten ist ein Phänomen, das nicht nur 2XKO hat, sondern das einfach dem Matchmaking in Onlinespielen an sich geschuldet ist, wenn weniger Spieler verfügbar sind. Die Gewichtung der Zeit für die Matchsuche gegenüber dem Niveaunterschied lässt sich natürlich anpassen. Wir freuen uns daher auf deine Rückmeldungen zu dem System. Unser Ziel ist es, das System während des Vorabzugangs so perfekt wie möglich einzustellen.

Ein Blick in die Zukunft

Das war ein ganz schön umfangreicher Batzen an Informationen. Wenn du es bis hierher geschafft hast, dann kannst du stolz auf dich sein. Wir sind felsenfest davon überzeugt, dass das Onlinespielen von Kampfspielen keine zweite Geige spielen sollte. Jede Funktion, die wir entwickelt haben – von der Servervalidierung über die Rollback-Feinabstimmung und das sofort zugängliche Zusehen bis hin zum lobbyübergreifenden Matchmaking –, ist so angelegt, dass du online wie offline faire, schnelle und unterhaltsame Matches erleben kannst. Wir sind noch immer eifrig dabei, alles abzustimmen und zu testen. Dazu achten wir sehr genau auf deine Rückmeldungen, während wir den Vorabzugang und die Zeit danach angehen. Sage uns unbedingt, was du vom Spiel hältst, und schicke uns weiter viele Fehlerberichte und Vorschläge!

Danke fürs Lesen!

Tony Cannon