OldSchoolHack

Registrieren / Anmelden Deutsch

Nettsettings und lerp erklärung

icon Thema: Nettsettings und lerp erklärung

Anmeldungsdatum: Apr 2009

Beiträge: 120

hallo leute. für unsere dods spieler hier eine kleine netsettings und lerp wer kunde vom Supportbeisser

LERP WERT:

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.


NETSETTINGS:

cl_cmdrate [standard: 30, min: 10, max: 100]
Anzahl der Datenpakete pro Sekunde die der Client zum Server senden soll.
Begrenzt wird cl_cmdrate durch die Server Befehle sv_mincmdrate und sv_maxcmdrate. Ist cl_cmdrate kleiner als sv_mincmdrate werden trotzdem nicht weniger Datenpakete pro Sekunde an den Server gesendet als sv_mincmdrate. Ist cl_cmdrate größer als sv_maxcmdrate werden auch nicht mehr Datenpakete pro Sekunde an den Server gesendet als sv_maxcmdrate.
Auch durch den Server Befehl sv_client_cmdrate_difference wird cl_cmdrate Begrenzt. sv_client_cmdrate_difference sagt aus wie weit cl_cmdrate von cl_updaterate abweichen kann.
Zusätzlich ist die maximale Anzahl der Datenpakete pro Sekunde, die an den Server gesendet werden sollen, von fps abhängig. Hat man z.B. nur 30 Frames pro Sekunde werden auch nicht mehr als 30 Datenpakete pro Sekunde an den Server gesendet obwohl cl_cmdrate viel höher ist.


cl_updaterate [standard: 20]
Anzahl der Datenpakete pro Sekunde die der Client vom Server anfordert.
Begrenzt wird cl_updaterate durch die Server Befehle sv_minupdaterate und sv_maxupdaterate. Ist cl_updaterate kleiner als sv_minupdaterate werden trotzdem nicht weniger Datenpakete pro Sekunde vom Server an den Client gesendet als sv_minupdaterate. Ist cl_updaterate größer als sv_maxupdaterate werden auch nicht mehr Datenpakete pro Sekunde an den Client gesendet als sv_maxupdaterate.
Zusätzlich ist die Maximale Anzahl der Datenpakete pro Sekunde die an den Client gesendet werden können von der Tickrate des Server abhängig. Ist es z.B. ein Tick 66 Server können nicht mehr als 66 Datenpakete pro Sekunde an den Client gesendet werden.


rate [standard: 10000]
Maximale Bytes pro Sekunde die an den Client gesendet werden. Begrenzt wird rate durch die Server Befehle sv_minrate und sv_maxrate. Ist rate zu klein entsteht choke.


cl_interp [standard: 0.1, min: 0.0, max: 0.5]
Zeit der Interpolation in Sekunden. cl_interp 0.1 entspricht 100 Millisekunden Interpolation (lerp: 100ms).
Begrenzt wird lerp durch cl_interp_ratio und cl_updaterate.
Berechnung: min lerp = cl_interp_ratio / cl_updaterate
Ist cl_interp_ratio 2 und cl_updaterate 66 ergibt ein mindest lerp von 30ms (cl_interp 0.03).


cl_interp_ratio [standard: 2]
Entscheidend für die Berechnung von mindest lerp (min lerp = cl_interp_ratio / cl_updaterate).
Begrenzt wird cl_interp_ratio durch die Server Befehle v_client_max_interp_ratio und sv_client_min_interp_ratio.
Nur bei cl_interp_ratio 0 ist lerp von 0 möglich.


Zur Info:
cl_interp 0 und cl_interp_ratio 0 haben die selben Auswirkungen wie der alte Befehl cl_interpolate 0. Damit wird nämlich die Interpolation komplett abgeschaltet (nicht auf allen Servern möglich). cl_interpolate gibt es seit dem Palermo Update nicht mehr.


Wichtig:
Trotz vielen anders behaupteten Foren und Tutorials, sind nur die hier aufgeführten Befehle wichtig für die optimalen Netsettings. Befehle wie cl_rate, cl_cmdbackup, ex_interp, cl_dlmax oder cl_interpolate gibt es in den jetzigen DoD:S nicht (mehr). Es gibt auch Befehle die eine Auswirkung hätten, wie cl_predict oder cl_extrapolate, sind aber Cheat geflagt (d.h. können nicht geändert werden). Und andere Befehle haben keine Auswirkungen auf die Netsettings, z.B: cl_resend. [Stand: 01.09.2009, Source Engine v14/v15 / Orange Box Engine].

Bevor jemand blind die Netsettings von anderen Seiten kopiert, und in schlimmsten Fall weiter gibt, bitte erstmal informieren ob es die überhaupt gibt und welche Auswirkungen die haben.

Wer dennoch einfach einen Lerp wert von 0 haben will kann das mal so in seine cfg setzen:

DODS lerp 0 settings
der lerp wert in dods ist für die hitboxen zuständig. dh. je näher der wert gegen 0 geht umso exakter sind die hitboxen der gegner direkt auf dem model. ich denke doch das dies eine wichtige einstellung in wars ist da sich nicht viele Spieler auf dem Server befinden und es keine lags geben sollte.

diese settings solltet ihr in eurer cfg haben um den lerp 0 wert einzustellen.

cl_interp_ratio 0
cl_interp 0
cl_cmdrate "101"
cl_updaterate "101"
cl_lagcomp_errorcheck "1"
cl_lagcompensation "1"
cl_smooth "1"
cl_smoothtime "0.6"
rate "30000"

Nun habt ihr perfekte hitboxen.

ersetzt natürlich nicht den skill^^

euer Supportbeisser