Was ist lerp?
Die Source Engine hat in den Standard Einstellungen (cl_interp 0.1, cl_updaterate 20) eine Interpolations Dauer von 100 Millisekunden (lerp: 100). Anders ausgedrückt, das Spiel findet beim Client 100 Millisekunden später (in der Vergangenheit) statt als beim Server. Dies macht auch Sinn, den bei cl_updaterate 20 kommen die Datenpakete nur alle 50 Millisekunden beim Client an. Kommt ein Paket beim Client nicht an, nimmt die Engine das letzte empfangene Paket vor dem aktuellen Bildberechnung und das aktuellste empfangene Paket um ein Zwischenpaket zu berechnen (Interpolieren).
Die Source Engine hat in den Standard Einstellungen (cl_interp 0.1, cl_updaterate 20) eine Interpolations Dauer von 100 Millisekunden (lerp: 100). Anders ausgedrückt, das Spiel findet beim Client 100 Millisekunden später (in der Vergangenheit) statt als beim Server. Dies macht auch Sinn, den bei cl_updaterate 20 kommen die Datenpakete nur alle 50 Millisekunden beim Client an. Kommt ein Paket beim Client nicht an, nimmt die Engine das letzte empfangene Paket vor dem aktuellen Bildberechnung und das aktuellste empfangene Paket um ein Zwischenpaket zu berechnen (Interpolieren).
In diesem Beispiel fehlt ein Paket bei 0:15. So würde die Engine die Pakete von 0:10 und 0:20
nehmen um das Paket bei 0:15 zu berechnen. Würde auch das Datenpaket von 0:20 fehlen, oder die
Interpolations zeit wäre so niedrig, das die Berechnung statt findet bevor ein weiteres Datenpaket
ankommt, fängt die Engine an zu Extrapolieren (Hochrechnen, Vorhersagen). Dies macht sie aber nur
maximal 250ms lang, sollten dann immer noch Datenpakete fehlen kommt es unweigerlich zu einen lag.
Wird die Interpolations Zeit (lerp) so eingestellt das sie kleiner ist als der Empfangs Intervall
von 2 Datenpaketen (2/cl_updaterate) färbt sich der lerp wert im net_graph Orange. Weil es kann
schon bei einen einzigen fehlenden Datenpaket zur Extrapolation kommen.
Verwendet man einen höheren cl_updaterate Wert als 20 kann man die Perfekte Interpolations Zeit mit 2/cl_updaterate berechnen.
Z.B.:
cl_updaterate = 100
2/100 = 0.02 (20 Millisekunden Interpolations Zeit = cl_interp 0.02)
cl_updaterate = 66
2/66 = 0.0303 (~31 Millisekunden Interpolations Zeit = cl_interp 0.031)
Das Problem ist jedoch das die meisten Server kaum die Tickrate halten können. Fällt die Tickrate z.B. bei einen Tick100 Server kurzzeitig auf 90 runter, würde sich sofort der lerp wert, bei cl_interp 0.02, im net_graph orange färben. Somit wäre ein etwas höherer cl_interp besser.
Wenn das Spiel bei mir in der Vergangenheit statt findet, muss ich immer vor dem Gegner schießen?
Nein. Der Server hat verschiedene Mechanismen um die Interpolations Zeit des Clients auszugleichen. Der Server merkt sich alle Positionen der Spieler und Gegenständen eine bestimmte zeit zurück. Kommt jetzt ein Datenpaket eines Spielers mit einen Schuss an, versetzt der Server alle Spieler und Gegenstände die bestimmte Interpolations Zeit des Spielers zurück um dem Schuss zu berechnen. Somit wird beim Server die Situation nachgestellt, die auch der Client bei sich gesehen hat.
Welche Nachteile hat die Interpolations Zeit?
In Prinzip keine. Es kann jedoch ein "Ich war schon längst in Deckung, wieso wurde ich immer noch getroffen?" - Effekt entstehen wenn die Spieler unterschiedlich hohe Interpolations Zeit haben. Dies ist aber kein Bug. Der Gegnerische Spieler hat weder durch die Wand geschossen noch liegt eine falsche Berechnung der Schüsse vor. Ihr könnt euch sicher sein das der Gegnerischer Spieler auf euch geschossen hat und euch getroffen hat als er euch noch gesehen hat. Nur wenn dieser Spieler mit lerp 100 spielt und man selber mit lerp 20, bekommt man selber erst 80ms später mit was der Gegner eigentlich zu dieser Zeit gemacht hat.
Welche Vorteile hat die Interpolations Zeit?
Das Spiel läuft absolut flüssig. Geringere Anzahl von fehlenden Datenpaketen werden problemlos ausgeglichen und bei Gegnerischen Spielern, die eine geringere cl_cmdrate haben, können so die Zwischenpositionen berechnet werden.
Warum ist ein lerp von 0 schlecht?
Die Datenpakete werden so in Bilder umgerechnet, wie sie beim Client ankommen. Eine geringe updaterate oder kleiner choke führt sofort zum ruckeln. Spieler die eine geringere cl_cmdrate haben ruckeln dauerhaft und es kann zu einen Durchschusseffekt kommen. Lerp 0 ist nur auf LAN´s, wenn alle Spieler gute Netsettings haben, vom Vorteil.
[Quelle und weitere Informationen]
Verwendet man einen höheren cl_updaterate Wert als 20 kann man die Perfekte Interpolations Zeit mit 2/cl_updaterate berechnen.
Z.B.:
cl_updaterate = 100
2/100 = 0.02 (20 Millisekunden Interpolations Zeit = cl_interp 0.02)
cl_updaterate = 66
2/66 = 0.0303 (~31 Millisekunden Interpolations Zeit = cl_interp 0.031)
Das Problem ist jedoch das die meisten Server kaum die Tickrate halten können. Fällt die Tickrate z.B. bei einen Tick100 Server kurzzeitig auf 90 runter, würde sich sofort der lerp wert, bei cl_interp 0.02, im net_graph orange färben. Somit wäre ein etwas höherer cl_interp besser.
Wenn das Spiel bei mir in der Vergangenheit statt findet, muss ich immer vor dem Gegner schießen?
Nein. Der Server hat verschiedene Mechanismen um die Interpolations Zeit des Clients auszugleichen. Der Server merkt sich alle Positionen der Spieler und Gegenständen eine bestimmte zeit zurück. Kommt jetzt ein Datenpaket eines Spielers mit einen Schuss an, versetzt der Server alle Spieler und Gegenstände die bestimmte Interpolations Zeit des Spielers zurück um dem Schuss zu berechnen. Somit wird beim Server die Situation nachgestellt, die auch der Client bei sich gesehen hat.
Welche Nachteile hat die Interpolations Zeit?
In Prinzip keine. Es kann jedoch ein "Ich war schon längst in Deckung, wieso wurde ich immer noch getroffen?" - Effekt entstehen wenn die Spieler unterschiedlich hohe Interpolations Zeit haben. Dies ist aber kein Bug. Der Gegnerische Spieler hat weder durch die Wand geschossen noch liegt eine falsche Berechnung der Schüsse vor. Ihr könnt euch sicher sein das der Gegnerischer Spieler auf euch geschossen hat und euch getroffen hat als er euch noch gesehen hat. Nur wenn dieser Spieler mit lerp 100 spielt und man selber mit lerp 20, bekommt man selber erst 80ms später mit was der Gegner eigentlich zu dieser Zeit gemacht hat.
Welche Vorteile hat die Interpolations Zeit?
Das Spiel läuft absolut flüssig. Geringere Anzahl von fehlenden Datenpaketen werden problemlos ausgeglichen und bei Gegnerischen Spielern, die eine geringere cl_cmdrate haben, können so die Zwischenpositionen berechnet werden.
Warum ist ein lerp von 0 schlecht?
Die Datenpakete werden so in Bilder umgerechnet, wie sie beim Client ankommen. Eine geringe updaterate oder kleiner choke führt sofort zum ruckeln. Spieler die eine geringere cl_cmdrate haben ruckeln dauerhaft und es kann zu einen Durchschusseffekt kommen. Lerp 0 ist nur auf LAN´s, wenn alle Spieler gute Netsettings haben, vom Vorteil.
[Quelle und weitere Informationen]



