Hi
Netzwerkglättung, Interpolation, Hitboxen, in Online Shootern
Einer meiner größten Aufreger.
Ein Geschrei, das ich immer wieder höre. Vor allem von mir selbst aber auch von anderen:
"Ich war schon um die Ecke! Warum trifft der mich?"
"Ich war genau drauf! Mitten ins Gesicht. Der fällt einfach nicht!"
In unserem BF4 Forum habe ich diesen Beitrag schon gepostet. Finde ihn aber wichtig genug, um ihm einen eigenen Thread zu widmen.
Der Beitrag handelt von Problemen in Battlefield. Diese sind aber auf alle Online Shooter übertragbar.
Jedenfalls das warum.
Die unten beschriebene "vielleicht" Abhilfe wurde in BF integriert.
Eventuell lässt sich bei anderen Shootern mit einem Eingriff in die Config´s etwas nachbessern (Vorsicht da könnten Ban´s drohen).
Hier der Permalink zum Original Beritrag
Das ist das alte Problem mit den Hitboxen. Die ziehste halt hinter dir her. Das gabs bei Counter Strike schon.
Hier in dem Video wurden sie sichtbar gemacht.
Man kann auch mal in Youtube nach "BF3 Hitboxen" oder "BF4 Hitboxen" suchen. Es gibt einige Videos zu dem Thema. Habe aber bis jetzt nur zu CS welche mit Darstellung der Boxen gefunden. Das verdeutlicht es einfach am besten.
Das ist die Crux der Online Shooter.
Das hat mit der dem Server bekannten tatsächlichen Position der Spielermodelle zu tun. Also die Position, die mit dem Datenpaket beim austauch zwischen Server und Client, bekannt ist. Und mit der Position die das Spiel interpoliert. Das heißt abschätzt wo sich der Spieler als nächstes hinbewegt.
Das ganze, um uns ein flüssiges Bild wieder geben zu können. sonst würden alle über die Maps ruckeln. Hat ein Spieler einen hohen Ping, kann die Interpolation keine vernünftigen Ergebnisse mehr auf den Bildschirm zaubern. Das Ergebnis hat jeder schon mal gesehen.
Hier ist es im Battellog zum Thema BF3 gut erklärt.
ZitatAlles anzeigen2011-12-14 22:08 , bearbeitet 2011-12-14 22:53 von IDirtY_SeCreT
Guten Abend!
Da mich viele Leute immer wieder Fragen, was Interpolation eigentlich ist, habe ich mich entschieden hier mal ein infos reinzustellen. Die Erklärungen beziehen sich hierbei auf CSS, was aber an sich unwichtig ist, da Interpolation an sich immer ähnlich läuft.
ESL-Forum | mT
WTF ist eigentlich "Interpolation"?
Interpolation ist in der hohen Mathematik eine bekannte Methode, um zwischen 2 Positionen einen nicht vorhandenen Zwischenweg zu berechnen (Interpolation von lat. 'interpolare' = "verfälschen, entstellen", im übertragenen Sinne auch "zwischen einfügen").
Weil ein Server Datenpakete nicht konstant in einem durchgehenden "Strang" zum Spieler gesendet werden, sondern immer Abschnittsweise, ist die Interpolation auch in Games bzw. CS:S wichtig.
Gegnerpositionen werden bekanntermaßen in Datenpaketen überliefert und kommen visualisiert so beim Spieler an:
x x x x x x x x
0 15 30 45 60 75 90 105
Die Zahlen geben in Millisekunden an, wann das nächste Paket ankam (Nur fiktive Zahlen ums anschaulich zu halten). Denkt man jetzt logisch, so kommt man zu der Erkenntnis, dass jede Position des Gegners auf dem Monitor alle 15ms verändert wird. Da wir keine Interpolation haben, bewegt sich der Gegner also mit "Miniteleports" (= Laggendes Model = cl_interpolate 0) im 15ms Takt vorwärts. Er hat ja keine Zwischenbewegungen!!!
Mit Interpolation sähe das Ganze so aus:
x-----x-----x----x-----x-----x-----x-----x
0 15 30 45 60 75 90 105
Die "-"-Striche geben die hinzuberechnete Zwischenbewegung an. Ihr seht, dass egal wieviele Pakete pro Sekunde ankommen würden, wir immer eine flüssige Gegnerbewegung hätten. Da diese Positionen allerdings hinzuberechnet wurden und nicht wirklich existieren, sind sie 1. ungenau und wenn die Rechnungen aufgrund von Fehlern falsch laufen 2. falsch. Heißt im Klartext: Falsche Interpolation führt zur Anzeige einer falschen Gegnerposition (= "ALTER ICH WAR SO DRAUF, ABER ES GEHT NICHTS REIN!")
Die Interpolation findet auf eurem PC statt und nicht auf dem Server. Darum gibt es viele Faktoren bei euch, die diese Interpolation nochmals verfälscht oder beeinträchtigt.
Danke an mT aus dem ESL-Forum für diese anschauliche Erklärung.
Bei BF2 z.B. ist es wie folgt. (Wohl auch auf BF3 übertragbar)
jb4 | http://www.tacticalgamer.com
By default, Battlefield 2 appears to have a 100 millisecond buffer for interpolation. The problem with this is that while making things appear smoother, it also means that when firing upon a fast-moving object you may miss where they actually are as you're effectively facing an additional 100ms delay. At least that's the theory, and in general in my experimentation I found slightly improved hit detection results (and no noticeable increase in jerkiness) by using a lower value of 50 or even 30 for this setting. Note however that this variable should not be set too low (and certainly not a value of 0) as it will result in increased warping/jerky movements, and if you generally have a ping higher than 100 you shouldn't lower this setting. For those who do try this, also remember that the improvement from lowering this setting is not dramatic, since we're talking a difference of say 50ms (1/20th of a second). However particularly in situations where your opponent(s) are moving fast and/or erratically your accuracy should be noticeably improved.
Soll heißen, um so weiter der Regler rechts steht, desto stärker wird interpoliert, was aber, da es nur eine Berechnung ist, zu Ungenauigkeiten führen kann. Der Regler sollte also weiter nach links geschoben werden, besonders wenn man einen guten Ping hat, da man dadurch diesen Effekt minimiert. Aber man muss auch darauf achten, das sich gegnerische Models weiterhin flüssig bewegen. Denn wenn man die Interpolation, bei nicht ausreichender Leitungsstärke, zu weit reduziert, scheint es so als würden die Models teleportiert, weil einfach vom System berechnete Zwischenbilder fehlen.
mfg DirtY und vielen dank an die Leute, die diese texte geschrieben haben.
Seit irgendeinem Patch für BF3 gibt es bei Battlefield, in den Optionen einen Regler für den Netzwerkglättungsfaktor (s. Screenshot).
Mit dem Regler kannst du dich Clientseitig anpassen.
Im oben verlinkten Thema aus den Battellog Foren ist es prima erklärt. Ich zitiere:
Zitat"um so weiter der Regler rechts steht, desto stärker wird interpoliert, was aber, da es nur eine Berechnung ist, zu Ungenauigkeiten führen kann. Der Regler sollte also weiter nach links geschoben werden, besonders wenn man einen guten Ping hat, da man dadurch diesen Effekt minimiert. Aber man muss auch darauf achten, das sich gegnerische Models weiterhin flüssig bewegen. Denn wenn man die Interpolation, bei nicht ausreichender Leitungsstärke, zu weit reduziert, scheint es so als würden die Models teleportiert, weil einfach vom System berechnete Zwischenbilder fehlen"
Wie man auf meinem Screenshot sehen kann, habe ich mich bis jetzt noch nicht an den Regler ranngemacht. Hatte ihn vergessen.
Hatte das in BF3 mit hilfe der Killcam zurechtgefummelt. Das ist ein Tipp, den ich irgendwo im Web aufgeschnappt habe.
Den Regler nach links schieben. Bis das Bild in der Killcam deutlich ruckelt. Dann, Stück für Stück nach rechts schieben und an die Position herantasten ab der es in der Killcam flüssig läuft.
Das sollte die richtige Position für die Netzwerkglättung sein.
Gruß