Click to learn more about Gamer\'s Dungeon Community  
 
Latest News: macOS Mojave bringt Dunkelmodus und erste iPhone-Apps auf den Mac
Tue 25.09.18 04:57:53
 Weekly Shot
Click me real hard but I will pop up for ya
Der Golden Gibus Club


 Community
Members
Member Login
Calendar
War List
War Stats

Next Actions:
Keine Wars geplant

 User Online
4 User online
4 Guests
0 User in Chat
GDC TS not available
Online User Details

CS:Source
CS:S und der Netcode

Sodele Maedels, da es ja nun immer einige Diskussionen wegen des Netcodes etc gibt, hier mal eine Erklaerung fuer die, die es immer noch nicht so ganz verstanden haben, verzeiht auch nochmals wenn auch ich noch cl_cmdrate und cl_updaterate durcheinander werfe.
Mir ist trotzalledem aufgefallen, dass sich einige Leute extrem schlecht treffen lassen nachdem die vermeintlich besten Settings fuer einen selber gefunden wurden. Allerdings sollte das Spiel noch ein wenig Spass machen, auch fuer die Anderen.

Lest es euch mal durch, und schaut gegebenenfalls einfach mal nach was ihr so in eurer Config stehen habt. Es ist nur mal ein Anreiz das Spiel fuer alle spielenswerter zu machen. Mehr werde ich auch nicht dazu schreiben, denke das weiss jeder selber wie ein vernuenftiges Zusammenspiel funktioniert.

Als info: der Dorstener Server hat eine Tickrate von 100, die Kuschelhoehle hat meines wissens eine Tickrate von 66.

Funktionsweise des Counter-Strike: Source Netcode
Vorwort
Allgemeine Funktionsweise
Tickrate
Pakete und delta compression
cl_updaterate
cl_cmdrate
rate
Das Zusammenspiel der rates
cl_interpolate, cl_interp, lag compensation
cl_interpolate 1 versus cl_interpolate 0
cl_predict, cl_smooth, cl_interp_all
Der Netgraph
Wie lauten die besten Settings?

Vorwort

Dieser Guide ist an alle gerichtet, die wirklich wissen wollen, was sie in ihrer config stehen haben und warum. Ich habe diesen Artikel einfach aus einem Forum geklaut und stell ihn mal hier rein.

Allgemeine Funktionsweise

Der Counter-Strike: Source Netcode basiert auf einem Server/Client-System. Alles was du tust, wird zum Server geschickt und dort verarbeitet. Beachte aber, dass du den Schritt nach vorne nicht auf dem Client, also deinem Computer tust, sondern das diese Information zum Server geschickt wird. Dort wird diese Information verarbeitet und wird dann wieder zu dir geschickt. Erst dann bewegst du dich einen Schritt nach vorne! Natürlich gibt es auch einige Tricks im Netcode, dass dies nicht so sehr auffällt. Wichtig für dich ist nur zu wissen, dass alle Aktionen auf dem Server ausgeführt werden und nicht auf deinem Computer. Alle Bilder auf deinem Computer sind lediglich ein Abbild vom dem was auf dem Server passiert.

Tickrate

Der Standardwert bei Counter-Strike: Source ist Tickrate 33. Dieser Begriff ist am besten zu erklären, dass der Server mit 33 fps arbeitet. Jedoch gibt es beim Server keine grafische Abbildung, sondern die ganzen Positionsdaten, die Aktionen der Spieler auf der Map werden 33 mal die Sekunde aktualisiert. Umso höher die Tickrate ist, umso stärker wird die CPU belastet, da mehr in der Sekunde aktualisiert wird. Jedoch ist dadurch die Berechnung viel genauer.

Pakete und delta compression

Informationen die von dir zum Server und vom Server zu dir geschickt werden, werden in Paketen gesammelt. Dies passiert um Bandbreite zu sparen, so können auch mehrere Aktionen von dir ausgeführt werden, aber die Daten kommen trotzdem nur in einem Paket an. Dabei werden nicht alle Daten komplett neu gesendet, sondern mit der Delta Kompression werden jeweils nur die Veränderungen geschickt, um wiederrum Bandbreite zu sparen.

cl_updaterate

cl_updaterate gibt an, wieviele Pakete du vom Server innerhalb 1 Sekunde anforderst. Der Standardwert von cl_updaterate ist 20. Du forderst also jede Sekunde 20 Pakete vom Server an.
1000 Millisekunden (1 Sekunde) : 20 Pakete = 50 Millisekunden
Dir wird also alle 50 Millisekunden ein Paket geschickt. Alles was in diesen 50 Millisekunden passiert, wird in einem Paket zusammengefasst. Umso höher also die cl_updaterate ist, umso mehr Pakete werden dir gesendet und umso genauer ist das Spielgefühl. Jedoch hat die Sache einen Hacken. Dieser dürfte den meisten inzwischen bekannt sein, damit die mehr Pakete pro Sekunde angefordern kannst, muss der Server natürlich auch mit der entsprechenden Tickrate laufen. Wenn du zum Beispiel 100 Pakete anforderst auf einen Tickrate 33 Server, können dir maximal 33 Pakete geschickt werden, weil vom Server einfach nicht mehr berechnet wird. Oder ganz simpel. Du kannst nicht 5 Bonbons aus einer Schachtel nehmen, wenn nur 3 drin sind.

cl_cmdrate

Dieser Befehl gibt an, wieviele Pakete pro Sekunde von dir zum Server geschickt werden. Dieser Wert wird genauso berechnet wie cl_updaterate.
1000 Millisekunden (1 Sekunde) : 30 Pakete = ~ 33 Millisekunden
Der Standardwert cl_cmdrate 30 bedeutet, dass alle 33 Millisekunden ein Paket von dir zum Server geschickt wird. Jedoch tritt hier ein ähnliches Problem wie bei cl_updaterate bei einer zu geringen Tickrate ein. Damit du 30 Pakete die Sekunde schicken kannst muss dein Computer mit konstanten 30 fps laufen, da wie bei der Tickrate pro Bild deine Informationen aktualisiert werden.

rate

Rate gibt an wieviel Bandbreite du cl_updaterate und cl_cmdrate zur Verfügung stellen möchtest.
10000 (rate) : 1024 ( 1 Kilobyte ) = ~ 10 Kilobyte
Ein normaler DSL 1000 Anschluss kann bis zu 128 Kilobyte pro Sekunde erreichen, rein theoretisch könnte also ein DSL 1000 Anschluss ein Wert von maximal 131072 erreichen. Jedoch werden niemals soviele Daten verschickt. Was der besste Wert genau ist, ist schwer zu beantworten, da du immer unterschiedliche viel Bandbreite benutzt. Meiner Erfahrung nach ist ein Wert von rate 25000, was ungefähr 24 KB/sec vollkommen ausreichend und wird im Spiel nie ausgereizt.

Das Zusammenspiel der rates

Zusammenfassend möchte ich betonen, dass der Netcode wirklich nur gut funktioniert, wenn die Netsettings aller Spieler den selben Werten entsprechen und auch von allen erreicht werden können. Die meisten Internetanschlüsse dürften wohl den Wert von cl_updaterate 100 schaffen. Jedoch sind die meisten Computer immernoch zu schwach, um die cl_cmdrate 100, also die konstanten 100 fps, zu erreichen. Solange die meisten Spieler diesen Wert nicht erreichen, macht eigentlich auch cl_updaterate 100 keinen Sinn. Denn wenn zum Server nur alle 20 ms (50 fps oder auch cl_cmdrate 50) ein Paket geschickt wird, aber alle 10 ms ein Paket angefordert wird, erzeugt man eigentlich nur mehr Traffic, als die erhoffte Verbesserung. Dabei kommt es gerade bei nicht erreichbaren Settings zu einem schlechten Spielgefühl, da die Werte immer wieder schwanken und man manchmal das Gefühl hat, man trifft alles und beim nächsten mal der Gegner einfach nicht umfallen will. Mit konstanten 100 fps wie bei 1.6, wird auch der Netcode von Counter-Strike: Source mit unseren jetztigen Settings perfekt funktionieren.

cl_interpolate, cl_interp, lag compensation

Wie du schon erfahren hast, werden alle Informationen vom Server zu dir in Paketen geschickt. Da wie im ersten Abschnitt beschrieben, du dich nicht auf deinem Computer bewegst, sondern die Informationen erst von dir zum Server geschickt werden müssen und dann wieder zurück, hinkst du immer den Paketen vom Server hinterher. cl_interpolation 1 setzt dich in der Zeit zurück, damit neue Pakete ankommen können und du nicht auf diese erst warten musst und dadurch Ruckler vermieden werden. Das gesamte Spiel wird sozusagen gebuffert und vorhande Informationen werden absichtlich erst später zu euch geschickt. Damit die Interpolation korrekt funktioniert, muss cl_interp an den Wert von cl_updaterate eingstellt werden.
1000 Millisekunden (1 Sekunde) : 20 Pakete = 50 Millisekunden
Der Standardwert von cl_updaterate ist 20. Das heißt, alle 50 ms erreicht dich ein neues Paket. Damit die Bewegungen, Animationen zwischen zwei Paketen berechnet werden kann, müssen wir zum ersten Paket zurück. Wieviele Millisekunden die Interpolation zurück geht, steuert also cl_interp. Ein Wert von cl_interp 0.05 bringt dich die besagten 50 ms zurück zum ersten Paket. Valve setzt hier auf Nummer Sicher und setzt dich sogar zwei Pakete zurück. Dies entspricht den Standardwert von cl_interp 0.1, also 100 ms. So kann sogar ein Paket verloren gehen, ohne das die Interpolation aussetzt.

Snapshot steht gleich bedeutet für ein Paket

Also ist alles was du auf deinen Computer siehst 100 ms (bei cl_interp 0.1) vorraus gegenüber dem Server. Damit du nicht auch vorraus aimen musst, gibt es die serverseitige lag compensation (sv_unlag 1), die diesen Fehler behebt. Sagen wir mal, du schiesst auf ein Gegner zur client time 10.15 (command execution time). Die Feuerinformation wird mit dem nächsten Paket verschickt und während die Information zum Server gelangt (Ping), läuft der Gegner natürlich weiter. Wenn dann das Paket zur server time 10.20 (current server time) ankommt, würde der Schuss nicht registriert werden, da sich der Gegner schon weiter bewegt hat. Und dies obwohl du genau auf dem Models drauf warst. Genau dieser Fehler wird eben von der serverseitigen lag compensation behoben. Das lag compensation System speichert für ungefähr 1 Sekunde (dies kann mit sv_maxunlag geändert werden) alle letzten Positionen der Spieler. Wenn ein Befehl ausgeführt wird, wie der Schuss zum Beispiel, errechnet der Server wann der Befehl ausgeführt wurde.
Command Execution Time = Current Server Time - Client Latency (Ping) - Client View Interpolation (cl_interp Wert)
Wenn das Paket beim Server ankommt, werden alle Spieler zu der Position zurück gesetzt, wo sie zur command execution time (zum Augenblick wo du abdrückt hast) waren. Wenn der Befehl korrekt ausgeführt wurde, werden die Spieler wieder zur aktuellen Position verschoben. Du kannst dir mit sv_showimpacts 1 anzeigen lassen, wo sich die Hitboxen befinden.

Die blaue Hitbox ist die auf dem Server und die rote Hitbox ist die auf deinen Computer. Logischerweise hinkt die blaue Hitbox immer der roten hinterher. Umso besser die Verbindung zum Server ist, umso näher sind die beiden Boxen zusammen. Genau dies versuchst du zu verbessern mit den Netsettings. Das Model läuft inübrigen deshalb vor den Hitboxen, weil die Interpolation die 100 Milliesekunden buffert. Vergesse in diesen Moment nicht, dass der Server den cl_interp Wert automatisch abzieht. Würdest du auf die Hitbox anstatt auf den Model schiessen, würde der Treffer nicht registriert werden.

cl_interpolate 1 versus cl_interpolate 0

Aus der Erklärung von Valve heraus dürfte es zwischen cl_interpolate 1 und cl_interpolate 0 keinen Unterschied in der Trefferregistrierung geben, jedoch ist von vielen Spieler das gegenteilige zu lesen. Ich möchte aber diesen Artikel zu keiner int1 vs int0 Diskussion verkommen lassen, sondern einfach etwas mitgeben. Letztlich ist es zu dieser Diskussion einfach gekommen, weil Valve Bugs im Netcode hatte und längst noch nicht alle bekannten bugs gefixt hat. Sollte irgendwann alles gefixt sein, dürfte auch kein force mehr nötig sein.

cl_predict, cl_smooth, cl_interp_all

Wenn du einen Schritt nach vorne machst, muss die Informationen mit dem nächsten Paket zum Server geschickt werden und dann wieder zu dir zurück. Umso höher dein Ping ist, umso länger dauert dies zum Server und das Spiel ist gerade mit höheren Pings schlechter spielbar. An genau diesem Punkt setzt cl_predict ein. Wenn du einen Schritt nach vorne machst, verhält sich dein Computer als ob es der Server wäre und setzt dich sofort nach vorne und vergleicht dies später mit dem ankommmenden Paket vom richtigen Server. Sollte die Vorhersage/prediction falsch sein, gibt es einen prediction error. Dies kann mit cl_showerror 1 angezeigt werden. Wenn ein Fehler zustande kommt, wirst du an die korrekte Position verschoben.

Dies passiert sehr direkt und kann verwirrend sein, weshalb man mit cl_smooth 1 entgegen wirken kann. So wirst du etwas langsamer zur korrekten Position verschoben. Mit cl_smoothtime wird angegeben wie lange cl_smooth für die Verschiebung Zeit hat. Die Vorhersage funktioniert nur perfekt wenn der Computer alle Informationen hat, die auch der Server hat, was aber nicht der Fall ist. Dadruch funktioniert die Vorhersage auch nur für dich und kann nicht bei anderen Spieler angewendet werden. Deshalb ist immernoch die Interpolation für die anderen Spieler nötig.

Im Gegensatz wie viele Denken hat cl_interp_all nichts direkt mit cl_interp & cl_interpolation zu tun, sondern steht im Zusammenhang von cl_predict. Wie du weisst, wird bei aktiviertem cl_predict deine Bewegung sofort umgesetzt, als ob du auf dem Server spielst. Dabei wird alles vorhergesagt, worüber cl_predict Informationen hat. Zumindest war es so vor cl_interp_all. Bei deaktiviertem cl_interp_all wird der neue Code eingesetzt und es wird nur noch das predicted was auch wirklich nötig für dich ist.

Der Netgraph

fps: Zeigt dir an, wieviele fps (Bilder pro Sekunde) du hast.
ping: Zeigt dir deinen durchschnittlichen Ping an.
in/out: Zeigt dir, die Größe deines letzten erhaltenen und gesendeten Paketes, in Bytes an.
in/out: Zeigt dir deine verbrauchte Bandbreite an.
in/out: Zeigt dir an, wieviele Pakete du die Sekunde erhälst (Tickrate des Server) und verschickst (ist von deinen fps abhängig).
loss: Zeigt dir an, ob Pakete verloren gegangen sind.
choke: Zeigt dir an, dass du mehr Daten angeforderst hast (zu geringe Tickrate <100) oder verschicken möchtest (zu wenige fps <100), als vorhanden sind.
Wie lauten die besten Settings?

Für diese Werte benötigst du einen Internetanschluss der mindestens 30 Kilobytes pro Sekunde zur Verfügung stellen kann.
cl_updaterate 100
cl_cmdrate 100
rate 25000
cl_interp 0.01
Standardwerte die nicht verändert werden müssen:
cl_interpolate 1
cl_interp_all 0
cl_lagcompensation 1
cl_smooth 1
cl_smoothtime 0.1
cl_predict 1

Und noch etwas zu "Lowrates", auch keine weiteren Kommentare meinerseits

http://www.cs-expert.de/forum//thread.php?threadid=35727&sid=14ec129b26abe98a8cebe330135db7a0

http://www.280th.com/v3/apps/wbb2/thread.php?threadid=988&sid=2752b962c815210391211acf91a00848

http://counterstrike.4pforen.4players.de/viewtopic.php?t=239333&highlight=lowrates

By DaBIgLoOsA on Tuesday June 19 2007 @ 01:06AM CEST
Related Story Link

  DaBIgLoOsA writes on Tuesday June 19 2007 @ 05:57PM CEST [ reply | parent ]  
 
So, weil Azzes Transferleistung etwas... schwach ist. Also der Text ist von den Begrifflichkeiten her korrekt, nur ich selber, der dabi, is manchmal etwas minderbemittelt und wirft was ducheinander im Gespraech. Zufrieden Azze?!?
Evtl. doch noch ein kleiner Zusatz zu den Interpolationsgeschichten:

Source Engine update released
January 17, 2007, 10:30 am - Jason Ruymen

Updates to the Source Engine have been released. The updates will be applied automatically when your Steam client is restarted. The specific changes include:

Source Engine

Replaced cl_interp with cl_interp_ratio. Server can limit it with sv_client_min_interp_ratio and sv_client_max_interp_ratio

Added sv_rcon_log to allow rcon logging to be disabled

Cheat protected many more cvars

http://www.steampowered.com/v/index.php?area=news&id=907&cc=DE

 
  mttriplem writes on Tuesday June 19 2007 @ 07:37PM CEST [ reply | parent ]  
 
ganz schön abgefahren.. ich werds mir mal ansehen..
hab da bis jetzt noch nie was verstellt..

 
  Faust writes on Tuesday June 19 2007 @ 07:45PM CEST [ reply | parent ]  
 
Inituning ik hör Dir trappsen

 
  DaBIgLoOsA writes on Tuesday June 19 2007 @ 08:13PM CEST [ reply | parent ]  
 
Das es hier steht heisst nicht alle mal die cfg zerschiessen.
Im Grunde sind die Werte

cl_updaterate 66
cl_cmdrate 66
rate 25000
(cl_interp 0.01) den gibbet nicht mehr

richtig fuer DSL 2000+ mit FP (auch ohne gehts) und der Kuschelhoehle AKA Analhoelle.

Der Dorstener hat eine Tickrate von 100 und demnach sollten die Werte (Vorrausgesetzt 100FPS sind moeglich) passen

cl_updaterate 100
cl_cmdrate 100
rate 25000

NATUERLICH kann es vorkommen, dass der ein oder andere auf einmal Choke oder Loss hat, dann die (fuer Choke) cl_cmdrate um 10 verringern, habt ihr keinen Choke mehr, um 2 oder sogar nur um 1 erhoehen. Wenn Choke wieder erreicht ist 2 runter, passt.
Ist der Loss zu hoch, die cl_updaterate verringern.
Fuer beides gillt, je hoeher, umso besser. Der Ping spielt eine Rolle, aber dazu steht ja oben etwas.

Alles unter 30 (das ist nur meine Erfahrung) macht es auch fuer andere Mitspieler "unangenehm".
Und nun, versaut euch nicht die cfg und den anderen nicht den Spielspass!

 
  mttriplem writes on Wednesday June 20 2007 @ 02:43PM CEST [ reply | parent ]  
 
bist du nachhher etwas früher online?
würd mal ausprobieren, obs besser geht..
kannst mir ja über TS vielleicht noch en tip beim einstellen
geben..
nicht, dass nachher nix mehr läuft..

 
  DaBIgLoOsA writes on Wednesday June 20 2007 @ 05:08PM CEST [ reply | parent ]  
 
Ich bin wohl frueher online, wie immer. Sag mir mal was fuer eine Internetanbindung (auch welcher Anbieter) Du hast, ob du FastPath hast und was fuern Rechner, wieviel FPS am Schirm und welche Werte fuer rate, cl_cmdrate und cl_updaterate du im Moment hast.

 
  Sushi writes on Wednesday June 20 2007 @ 03:49PM CEST [ reply | parent ]  
 
Dadurch kannst du deine miesen stats auch nicht verbessern;I)

 
  Chucky writes on Wednesday June 20 2007 @ 07:00PM CEST [ reply | parent ]  
 
Au Mann, was waren das noch Zeiten, wo wir in seligen Zeiten INI-Tuning betrieben haben... *schwelg*

Inzwischen bin ich ja schon froh, wenn ich weiss, welche ini zu welchem UT-Mod gehört und wie ich in allen meinen Namen schön bunt kriege.

Anyways - nächste Woche bin ich wohl auch wieder mal bei XMP am Start!

 
  mttriplem writes on Monday June 25 2007 @ 03:53PM CEST [ reply | parent ]  
 
HAT HEUTE JEMAND BOCK ZU ZOCKEN?

 
  AzzraelDLX writes on Monday June 25 2007 @ 04:05PM CEST [ reply | parent ]  
 
Ja, XMP Bin heute abend wieder mit dabei, der Dabi wohl auch.
Chucky, äussere dich mal zum Thema "XMP Summer Cup"....siehe mein Posting zu Splintis Story...

 
  mttriplem writes on Monday June 25 2007 @ 04:10PM CEST [ reply | parent ]  
 
NEE CSS!!!!!!!!!!!

 
  Sushi writes on Monday June 25 2007 @ 04:10PM CEST [ reply | parent ]  
 
bin dabei

 
  Nekrataal writes on Tuesday June 26 2007 @ 04:21PM CEST [ reply | parent ]  
 
Nur mal so am Rande. Freeway hatte vor ca. einem Jahr schonmal einen Bericht - wenn auch nicht sooo detailliert - gepostet. Seitdem habe ich meine ini auf anderen Werten stehen, nach den Empfehlungen dort und sehe mein Netstats immer unten rechts eingeblendet. Subjektiv hat mir das nix gebracht. Hängt vermutlich auch vom Server ab.

 
  DaBIgLoOsA writes on Wednesday June 27 2007 @ 03:47PM CEST [ reply | parent ]  
 
Tuerlich ist das Serverabhaengig. Tickrate eben und die maximalwerte.

 
  mttriplem writes on Wednesday June 27 2007 @ 01:23PM CEST [ reply | parent ]  
 
gehts heute abend rund, ihr nattern??

 
  AzzraelDLX writes on Wednesday June 27 2007 @ 02:01PM CEST [ reply | parent ]  
 
Ei, siggi!!! Kannst Dir schonmal den Arsch pudern! Darfst nachher an meiner AK lutschen...

 
  DaBIgLoOsA writes on Wednesday June 27 2007 @ 03:47PM CEST [ reply | parent ]  
 
Trocken in den Arsch!

 
  Sushi writes on Sunday July 01 2007 @ 07:06PM CEST [ reply | parent ]  
 
Zocken heute!!!!!!!!!??????AB 20.30 Uhr stehe ich zur Verfügung!!

 

Thread closed ! Story is too old too contribute. Please contact administrator to repost this story.


 Topics
  • Convention (54)
  • Technique (64)
  • Games In General (172)
  • Community (223)
  • UT2003/4 (299)
  • CS:Source (17)
  • Internal (153)
  • XMP (87)
  • Magic the Gathering (58)
  • Team Fortress 2 (51)

  •  Main
    Latest Postings
    News Index
    Search
    Contribute News
    Contribute Image
    Links
    Stats
    FAQ
    Contact
    Chat

    Copyleft © 2003 Gamer's Dungeon
    All trademarks and copyrights on this page are owned by their respective owners.

    Powered by phpWebLog