Special: Counter-Strike (Shooter)

von Joerg



Entwickler:
Publisher: Vivendi Universal
Release:
kein Termin
Spielinfo Bilder  
Lag Kompensation

Sagen wir, ein Spieler schießt bei der Client Zeit 10.5 auf ein Ziel. Die Information wird in ein User-Kommando gepackt und an den Server versendet. Während das Datenpakt noch unterwegs ist, fährt der Server mit der Simulation der Spielwelt fort und das Ziel könnte sich in eine andere Position bewegt haben. Das User-Kommando trifft bei Server Zeit 10.6 ein und der Server würde den Treffer nicht registrieren, obwohl der Spieler exakt auf das Ziel geaimt hat. Dieser Fehler wird durch die serverseitige Lag Kompensation behoben (sv_unlag 1).

Das Lag Kompensations System behält eine History von allen kürzlich eingenommenen Positionen der Spieler für eine Zeitspanne von 1 Sekunde (diese Variable kann mit "sv_maxunlag" geändert werden). Wird ein User-Kommando ausgeführt, sieht der Server nach wann dieses Kommando erstellt wurde. Diese Kommando Ausführungszeit wird wie folgt berechnet:

Kommando Ausführungszeit = derzeitige Serverzeit - Client Latenz - Client Sicht Interpolation


Dann bewegt der Server alle anderen Spieler auf den Punkt zurück an dem sie zur Kommando-Ausführungszeit standen. Das User-Kommando wird ausgeführt und der Treffer wird korrekt erfasst. Nach Ausführung des User-Kommandos werden die Spieler wieder auf ihre Original-Positionen zurückgesetzt. Auf einem listen Server könnt ihr mit der Variablen "sv_showimpacts 1" den Unterschied zwischen Client- und Serverhitbox sehen.


Dieser Screenshot wurde auf einem Listen-Server mit 200 Ms Lag aufgenommen (hierbei wurde net_fakelag verwendet), kurz nachdem der Server den Treffer bestätigt hat. Die rote Hitbox zeigt die Zielposition des Clients vor 100 Ms. Seitdem hat sich das Ziel nach links weiterbewegt, während das User-Kommando zum Server unterwegs war. Nach der Ankunft des User-Kommandos stellte der Server die Zielposition (blaue Hitbox) wieder her, basierend auf der Kommando-Ausführungszeit. Der Server verfolgt den Schuß und bestätigt den Treffer (der Client sieht Blut Effekte). Client und Server Hitboxen stimmen aufgrund von Vorhersage-Fehlern nicht genau überein. Selbst eine kleine Differenz von wenigen Millisekunden kann eine Fehlberechnung von einigen cm bei sich schnell bewegenden Objekten hervorrufen. Die Multiplayer Treffer-Erkennung ist nicht auf den Pixel perfekt und hat bekannte Präzisionslimitierungen basierend auf der tickrate und der Geschwindigkeit der sich bewegenden Objekte. Eine Erhöhung der tickrate verbessert die Präzision der Treffer-Erkennung, braucht aber mehr CPU-/Speicherleistung und Bandbreitenkapazität für den Server und Clients.

Die Frage taucht auf, warum die Trefferberechnung auf dem Server so kompliziert ist durch Spielerpositionen zurückversetzen und arbeiten mit Vorhersage-Fehlern während der Treffer-Erkennung. Dies könnte doch von Client-Seite wesentlich einfacher gemacht werden und mit pixel-genauer Präzision. Der Client würde einfach dem Server mit einer Treffer-Durchsage mitteilen das und wo ein Spieler getroffen wurde. So einfach können wir es uns nicht machen weil der Server bei solch wichtigen Entscheidungen den Clients nicht vertrauen kann. Selbst wenn der Client sauber und per VAC geschützt ist, könnten die Datenpakete von einem 3ten PC auf dem Weg zum Server modifiziert werden. Diese Cheat-Proxies könnten Treffer-Durchsagen in die Pakete bringen ohne das dies von VAC erkannt wird (eine "man-in-the-middle" Attacke).

Netzwerk Latenz und Lag Kompensation können Paradoxa erschaffen die zur realen Welt unlogisch erscheinen. Zum Beispiel könnt ihr von einem Angreifer getroffen werden den ihr nicht mal mehr seht, weil ihr schon längst in Deckung seid. Was passiert ist, ist ganz einfach das der Server eure Hitbox in der Zeit zurückversetzt hat, als ihr für den Gegner noch sichtbar gewesen seid. Diese Unstimmigkeit kann aufgrund der relativ langsamen Geschwindigkeit der Datenpakete nicht behoben werden. In der realen Welt habt ihr dieses Problem nicht, weil das Licht (die Datenpakete) so schnell unterwegs ist, das du und jeder um dich herum die Welt so sieht wie sie in diesem Moment beschaffen ist.


 
Übersicht
Basis Netzwerk
Objekt Interpolation
Eingabe Voraussage
Net Graph


     

           

Kommentare

Es gibt noch keine Kommentare zu diesem Thema!
schrieb am