Lag Compensation

Bei einem Online-Shooter wie Counter-Strike: Global Offensive (CS:GO), bei dem es sehr auf Präzision ankommt, sind viele komplexe Mechanismen nötig, die das Spielgeschehen steuern und für alle Spieler faire Bedingungen schaffen. Einer dieser Mechanismen ist die Lag Compensation, die zwar bei vielen Spielern nicht gerade beliebt ist, aber trotzdem ihre Daseinsberechtigung hat. Warum das so ist und was die Lag Compensation in CS:GO genau macht, wird in diesem Artikel näher erläutert.

Lag Compensation in CS:GO

Was ist Lag Compensation?

Wenn mehrere Spieler zusammen auf einem Server spielen, hat jeder eine unterschiedlich gute Verbindung. Sei es, weil die Distanz zum Server verschieden ist oder die Spieler unterschiedlich schnelle Internetverbindungen haben. Jeder hat einen anderen Ping.

Aus unserem Artikel zum Thema net_graph:

Der Ping gibt die durchschnittliche Latenzzeit in ms an. An diesem Wert kann man ablesen wie lange die Datenübertragung zwischen Client und Server dauert. Der Ping gibt somit die Verzögerung an, mit der man die Daten vom Server erhält.

Die verschiedenen Voraussetzungen würden normalerweise zu einem Ungleichgewicht führen, da Spieler mit einem schlechteren Ping einen deutlichen Nachteil hätten. Aber sogar Spieler mit einem relativ guten Ping würden darunter leiden, dass es keine Lag Compensation gibt.

Um zu erklären, warum das so ist, stellen wir uns mal folgende Situation vor: Man sieht einen anderen Spieler, zielt auf ihn und drückt ab. Diese Information wird nun als Datenpaket an den Server geschickt: Fadenkreuz war auf Position xy und die Waffe wurde abgefeuert. Während das Paket auf dem Weg zum Server ist, simuliert dieser aber das Spielgeschehen weiter. In der Zwischenzeit hat sich der Gegenspieler schon weiter bewegt und befindet sich nun an einer ganz anderen Position. Wenn der Server die Information über den abgegebenen Schuss bekommt und die Position des Fadenkreuzes mit der des Gegenspielers vergleicht, dann wird er den Treffer gar nicht anerkennen, weil der Gegenspieler nicht mehr da steht, wo er war, als der Schuss abgegeben wurde. Und genau dieser Fehler wird von der serverseitigen Lag Compensation ausgeglichen.

Mit folgendem Bild aus Counter-Strike: Source kann man sich diesen Mechanismus visuell besser vorstellen. Die darauf gezeigte Situation wurde künstlich hergestellt, um den Effekt zu verdeutlichen.

Darauf sieht man man eine Spielfigur und die dazugehörige Hitbox (eigentlich sogar zwei Hitboxes). Die rote Hitbox zeigt an, wo der Spieler die gegnerische Spielfigur auf seinem Monitor gesehen hat, als er abgedrückt hat. Der rote Punkt auf Höhe des Fadenkreuzes ist der Treffer, der später auch so gewertet wird. Bis die Information über den abgegebenen Schuss beim Server angekommen ist, befindet sich die gegnerische Spielfigur aber schon dort, wo sie auf dem Screenshot auch wirklich zu sehen ist.

Bei diesem Beispiel wurde künstlich eine Verzögerung von 200 Milisekunden hergestellt. Der Server, der nun die Information über den abgegebenen Schuss erhalten hat, geht also in der Zeit zurück (in diesem Fall 200ms) und stellt die serverseitige Position des gegnerischen Spielers zu diesem Zeitpunkt wieder her. Das ist die blaue Hitbox. Der Server erkennt, dass es ein Treffer war und kann diese Informationen nun auch an den gegnerischen Spieler ausliefern.

Zu welchem Zeitpunkt der Server das vom Spieler erhaltene Kommando ausführen muss, also wie weit er in der Zeit zurückgehen muss, errechnet er sich mit folgender Formel:

Command Execution Time = Current Server Time - Packet Latency - Client View Interpolation

Das bedeutet der Server addiert den Ping und die Interpolationszeit und geht um diesen Wert in der Zeit zurück, um die erhaltenen Informationen auszuwerten.

Nachteile durch Lag Compensation

Jetzt stellt sich der ein oder andere vielleicht die Frage, warum sich die Position der roten und der blauen Hitbox auf obigem Screenshot unterscheidet, obwohl sie doch eigentlich exakt gleich sein müsste. Das sind leider kleine Präzisionsfehler in der Berechnung, mit denen man leben muss. Diese hängen hauptsächlich davon ab, mit welcher Tickrate der Server läuft und wie schnell sich Objekte in der Spielwelt bewegen. Die serverseitige Treffererkennung stößt dabei an ihre Grenzen und ist leider nicht auf den Pixel genau.

Dazu kommt ein zweiter Nachteil. Eine Erfahrung, die sicher schon viele von euch gemacht haben: Man ist eigentlich schon um die Ecke und in Sicherheit, aber trotzdem wird man vom Gegner getroffen. Hat der Gegner etwa magische Kugeln, die um Ecken fliegen können? Nein, hat er nicht. Für dieses Szenario ist die Lag Compensation verantwortlich. Zwar war man auf dem eigenen Bildschirm bereits in Sicherheit, der Gegner erhält diese Information aber mit einer kleinen Verzögerung. Bei ihm war man noch nicht um die Ecke und er hatte freie Schussbahn. Es war also trotzdem korrekt vom Spiel den Treffer zu werten, auch wenn man sich manchmal darüber aufregen könnte. Aber man profitiert natürlich selbst genauso von diesem Effekt, je nach Spielsituation eben.

Warum braucht CS:GO die Lag Compensation?

Trotz der damit einhergehenden Widersprüche und Paradoxa bleibt die Lag Compensation ein wichtiger Mechanismus, der seine Daseinsberechtigung in CS:GO hat. Diese Latenzkorrektur ermöglicht es, dass jeder Spieler auf seinem Bildschirm genau da hinzielen kann, wo er die Gegner sieht und dabei auch etwas trifft. Jeder Spieler hat praktisch seine eigene Instanz des Spielgeschehens und trotzdem funktioniert das gemeinsame Spielen ohne Beeinträchtigung. Ohne die Korrektur wäre das nicht möglich: Man würde nicht treffen, wenn man auf den Gegner zielt, sondern müsste immer vorauszielen, abhängig von der Latenz zum Server.

Vielleicht mag manch einer jetzt denken, dass man die Trefferekennung doch auch clientseitig durchführen könnte und dann eine entsprechende „Treffer-Information“ an den Server schickt. Theoretisch wäre das möglich, damit würde man aber Cheatern die Türe öffnen. Grundlegend gilt, dass der Server den Clienten bei solchen wichtigen Informationen nicht trauen kann. Die Datenpakete könnten über Umwege geleitet und dabei manipuliert werden – selbst VAC wäre dagegen machtlos.

Durch die Lag Compensation bekommt jeder Spieler ein stimmiges Spielgefühl. Zwar treten hin und wieder unlogische Spielmomente auf (z.B. wenn man scheinbar um die Ecke getroffen wurde), aber alle Spieler profitieren davon und leiden darunter gleichermaßen. Insgesamt überwiegen die Vorteile deutlich die manchmal auftretenden Paradoxa.

Ob es einem gefällt oder nicht, die Lag Compensation wird in CS:GO also unbedingt gebraucht. Würde es sie nicht geben, dann hätten wir stattdessen andere absurde Szenarien im Spiel.