Special: Counter-Strike (Shooter)

von Joerg



Entwickler:
Publisher: Vivendi Universal
Release:
kein Termin
Spielinfo Bilder  
Eingabe Voraussage

Nehmen wir an ein Spieler hat eine Netzwerk Latenz von 100 Ms und bewegt sich nach vorne. Die Information über die Betätigung der "+forward" Taste wird in einem User-Kommando gespeichert und zum Server gesendet. Dort wird das Kommando mit dem Bewegungs-Code bearbeitet und der Charakter des Spielers bewegt sich in der Spielwelt nach vorne. Diese Änderung der Spielewelt wird an alle Clients mit der nächsten Momentaufnahme versendet. So würde der Spieler seine eigene Bewegung mit einer Verzögerung von 100 Ms sehen. Diese Verzögerung bezieht sich auf alle Spieleraktionen wie Bewegung, schiessen usw. und wird bei höherer Latenz noch schlechter.

Eine Verzögerung zwischen der Eingabe des Spielers und dem daraus resultierenden Feedback erzeugt ein komisches und unnatürliches Spielgefühl. Es macht es dann schwierig, sich präzise zu bewegen und zu zielen. Die clientseitige Eingabe Voraussage (cl_predict 1) ist ein Weg diese Verzögerung zu entfernen um ein direktes Spielgefühl zu ermöglichen. Anstatt auf das Update der neuen Position vom Server zu warten, berechnet der Client einfach die Ergebnisse seiner eigenen User-Kommandos. Dafür benutzt er exakt die gleichen Codes und Regeln die der Server für diesen Prozess benutzen wird. Nachdem die Vorhersage beendet ist, wird sich der Spieler schon in der neuen Umgebung befinden während ihn der Server noch an der alten Position sieht.

Nach 100 Ms erhält der Client die Momentaufnahme des Servers. Diese enthält die Änderungen, basierend auf dem zuvor gesendeten Userkommando welches der Client gerade selbst vorhergesagt hat. Nun vergleicht der Client die Serverposition mit seiner vorhergesagten Position. Wenn diese voneinander abweichen ist eine Vorhersage-Fehler aufgetreten. Das zeigt an, dass der Client keine korrekten Informationen über andere Objekte und seine Umgebung hatte als er das User Kommando ausführte. Der Client muß nun die eigene Position korrigieren, da letztendlich der Server bestimmt wo sich welches Objekt befindet. Mit der Variablen "cl_showerror 1" kann der Client sehen wann Vorhersage Fehler auftreten, Korrekturen dieser Fehler können sich durch Bildsprünge bemerkbar machen. Um diesen Effekt abzumildern werden die Vorhersage Fehler schrittweise in einem kurzen Zeitraum (cl_smoothtime) behoben. Das Smoothing kann mit der Variablen "cl_smooth 0" abgestellt werden.

Die korrekte Vorhersage des Verhaltens eines Objekts kann nur dann funktionieren wenn der Client die gleichen Regeln benutzt und von der gleichen Beschaffenheit wie der Server ausgeht. Das ist üblicherweise nicht der Fall da der Server mehr interne Informationen über die Objekte hat als die Clients. Clients sehen nur einen kleinen Teil der Spielwelt und bekommen gerade genug Informationen um Objekte zu rendern. Daher funktioniert die Vorhersage nur für die eigene Spielfigur und die von ihr kontrollierten Waffen. Eine genaue Vorhersage über das Verhalten anderer Spieler oder von interaktiven Objekten ist dem Client in diesem Moment nicht möglich.


 
Übersicht
Basis Netzwerk
Objekt Interpolation
Lag Kompensation
Net Graph

     

          

Kommentare

Es gibt noch keine Kommentare zu diesem Thema!
schrieb am