Herzlich Willkommen im Netsettings Tutorial,
Da es jetzt hier auch die Netsettings-Berechnung nach meiner Formel gibt, will ich hier auch mal das Tutorial dazu posten, für alle die wissen wollen, was dahinter steckt.
Das Tutorial an sich ist schon etwas älter, und in einem anderen Forum entstanden. Den Punkt mit ex_interp werde ich hier aktualisieren.
Berechnen lassen könnt Ihr Euch die Netsettings hier.
------------------------------------------------------
hier werde ich die aktuellen Fakten zu den Counterstrike 1.6 Netsettings erläutern.
Aus den bisherigen Erfahrungen kann ich sagen, dass ich die meisten Befehle aus den Netsettings richtig aufgeschlüsselt habe.
Um mit den ganzen Settings zu arbeiten, solltet ihr bereits in der Lage sein, eine Userconfig.cfg zu erstellen.
Wenn ihr nicht wisst, wie das geht: Arrow klicken
Zunächst einmal die Befehlserklärung
Hier werde ich alle Befehle erklären, die in dem Tutorial vorkommen.
rate
Anweisung an den Server, wieviel Byte/Sekunde maximal vom Server zum Client geschickt werden können.
cl_rate
Anweisung an den Client, wieviel Byte/Sekunde an den Server geschickt werden sollen. Ist i.d.R. auf 9999 festgelegt.
sv_maxrate
Serverseite Begrenzung des Wertes "rate" und damit gleichzeitiges Maximum der eigenen Rate.
fpx_max
Beschränkung der fps (Bilder pro Sekunde) auf dem eignen PC.
Viele haben hier den Wert 100, obwohl der PC nicht in jeder Situation/auf jeder Map diese 100 fps schafft, oder der Monitor sogar nur 75 - 85 Hz darstellt.
Dieser Wert sollte so eingestellt sein, dass die fps möglichst stabil sind, und zur Wiederholungsrate (Hz) des Monitors passen.
cl_cmdrate
Dieser Wert gibt an, wieviel Pakete/Sekunde vom Client zu Server übertragen werden.
cl_updaterate
Das Gegenteil von cl_cmdrate. Hier wird die Anzahl der Pakete/Sekunde vom Server zum Client festgelegt.
cl_cmdbackup
Gibt an, wie oft die Pakete vom Client zu Server wiederholt geschickt werden sollen (um Loss zu vermeiden).
ex_interp
Dies ist die Interpolation der Models. Hiermit werden die Models so plaziert, dass man sie dort sieht, wo sich die Hitboxen (Trefferzonen) auf dem Server befinden.
Dies ist der Zeitliche Ausgleich (Interpolation) zwischen 2 Paketen. Bei z.B. cl_updaterate 50 bekommt man alle 20ms ein neues Paket. Die Zeit zwischen diesen 2 Paketen muss interpoliert werden, also mit "berechneten" Daten ausgefüllt werden, damit die Bewegung flüssig bleibt. Setzt man ex_interp nun zu hoch, so wird mehr interpoliert als notwendig ist, und dadurch wird die Bewegung des Gegners ungenauer, da sie ja nur berechnet ist.
Seit CS 1.6 wird e_interp bei einem Wert von "0" automatisch berechnet... mit der Formel 1/cl_updaterate.
UDP-Header
Counterstrike läuft auf dem Netzwerkprotokoll "UDP" und nicht wie viele andere Programme auf "TCP". Aus diesem Grund bringen auch Spielereien mit MTU oder RWin keine Veränderung.
Jedem UDP-Paket steht ein Header voraus, der 4 x 16 Bit (also 64 Bit oder 8 Byte) groß ist.
Paketgröße
Schaltet man im Spiel den net_graph 3 ein, so bekommt man neben den Werten "fps" und "ms" auch die Werte "In" und "Out".
Bei In und Out wird vorne die größe des letzten Paketes (nicht die Menge, wie manche glauben), und hinten die übertragenen KByte/Sekunde angezeigt.
Dieser Wert verändert sich relativ schnell (je nach Netsettings bis zu 100 mal pro Sekunde).
Im Schnitt sind die Paketgrößen wie folgt:
Out: 22 Byte + 8 Byte Header = 30 Byte
In: (22 Byte pro Slot) + 8 Byte Header = x Byte
Bei einem Server mit 18 Slot wären das (22 Byte x 18 ) + 8 Byte Header = 404 Byte Maximum.
(Wenn sind nicht alle Spieler bewegen, nicht jeder schiesst oder einige schon tot sind, wird das Maximum natürlich nicht erreicht.)
choke
Choke (engl. = Drossel) ist ein Hinweis vom Server, dass nicht so viele Pakete geschickt werden können, wie durch den Befehl "cl_updaterate" angefordert wurden.
Der Server berechnet hierbei "rate / letzte Paketgröße = max. cl_updaterate".
Kommt der Server bei dieser Rechnung zu dem Ergebnis, dass die angeforderten Pakete die "rate" übersteigen würde, gibt er an, wieviele Pakete zurückgehalten werden.
Die Vorbereitung
Zunächst einmal braucht ihr einige Infos über Eure Internetleitung und den Server, für den Ihr Eure Netsettings optimieren wollt.
Führt also hierfür den Speedtest von Speedmeter.de durch.
Die erhaltenen Daten notiert ihr Euch.
Vom Server braucht ihr die "sv_maxrate" sowie die Anzahl der Slots auf dem Server.
Die sv_maxrate könnt ihr über HLTV herausfinden... anonsten könnt ihr auch nen Serveradmin fragen, oder als Richtwert "20000" nehmen.
Die Netsettings
rate
Um den Wert für rate zu bekommen rechnet ihr:
(Downloadgeschwindigkeit in KByte/s - Uploadgeschwindigkeit in KByte/s) x 1000
Hinweis: Der maximale Wert für Rate wird durch den Wert sv_maxrate vom Server beschränkt.
Hinweis für Modem- und ISDN-User: Da Eure maximale Bandbreite bei ca. 5 - 8 KByte/Sekunde liegt müsst ihr etwas anders Rechnen:
(Downloadgeschwindigkeit in KByte/s x 1000) - (cl_cmdrate x Paketgröße Out*) = rate
*Die Paketgröße Out liegt meistens bei ca. 22 Byte + 8 Byte UDP-Header
cl_cmdrate
Der Wert für cl_cmdrate sollte mit dem Wert fps_max übereinstimmen, damit in jedem Paket ein Frame gesendet wird.
Grundsätzlich ist CS in der Lage, jeden Wert bei cl_cmdrate mit jedem Wert bei fps_max zu syncronisieren, jedoch ist es nicht sinnvoll z.B. 2 oder 3 Frames in einem Paket, oder 30 leere Pakete zu versenden.
cl_cmdbackup
Dieser Wert sollte so hoch wie nötig, aber so niedrig wie möglich eingestellt werden, da hierdurch die Leitung zusätzlich belastet wird. Nichtnur die Bandbreite, sondern auch die max. Verbindungen / Sekunde (Siehe Speedtest).
Fangt am besten mit "0" an. Wenn ihr im Netgraph "Loss" beobachten könnt, dann hebt cl_cmdbackup auf "1" an.
cl_updaterate
Nun wird es etwas kompliziert (also ich fand es bisher einfach Laughing ):
cl_updaterate sollte nur so hoch sein, dass die Menge der Pakete x die größe der Pakete nicht höher ist, als die rate, da es sonst zu choke kommt.
Hier am einfachsten ein Beispiel:
Ihr spielt auf einem Server mit 18 Slots und habt eine rate von 20000. Pro Slot rechnen wir mit 22 Byte (siehe oben "Paketgröße")
20000 / ((18 Slots x 22 Byte) + 8 Byte) = 50
Auf diesem Server sollte die cl_updaterate also "50" betragen.
Man kann natürlich auch mehr spielen, solange kein Choke auftritt. Falls es dann doch zu choke kommt, muss man mit der cl_updaterate wieder etwas runter.
ex_interp
Wie oben schon erklärt passt ex_interp die interpolation der Models an die eigene Verzögerung (also den Ping) an.
Im Prinzip ist der Wert für ex_interp nichts anderes als der eigene Ping in Sekunden.
Habe ich also einen Ping von 50, dann sind das 0.05 Sekunden... der Wert ex_interp sollte also 0.05 betragen.
Je niedriger der Ping, desto kürzer die Interpolation, also desto niedriger der Wert ex_interp.
Am Besten ex_interp "0", dann wird dieser Wert automatisch berechnet.
So, das sollte nun alles gewesen sein.
Nun viel Spaß beim Rechnen, Zocken und Treffen.
prowler






