Optimal rate settings
Write following lines to file C:\Counter-Strike Source\cstrike\cfg\config.cfg
cl_cmdrate 100 cl_updaterate 100 cl_interp 0.02
By default above lines are already in the config.cfg so you need to just change default values to these.
Technical explanation of the above client variables (cvar)
- cl_cmdrate 100
Defines how many times per second the client sends updates about player’s actions to server. Actions include all keyboard and mouse events. Actually anything above 66 is redundant because Setti is running with 66 ticks. Because server only updates itself 66 times per second it cannot handle more than 66 updates from clients either.
- cl_updaterate 100
Defines how many times per second the client requests data from server. The higher this value is the closer client’s and server’s view of the game world is. Anything above 66 is redundant here too because the server cannot send more than 66 updates per second. If client requests more than 66 the server just limits the updates to server maximum.
- cl_interp 0.02
Interpolation means how much delay there is on player’s view. If network connections are bad this smoothes small glitches caused by bad connection. However most players have so good connection that this value can be set very low. Value 0.02 means 20 milliseconds. 20 milliseconds is the optimal value because server updates itself 66 times per second. By that we get update every 1 / 66 second which is 0.015 seconds (15 milliseconds). Round 15 milliseconds up and you’ll have 20 milliseconds.
If you are interested to get more valid information about rate settings you can read the following pages:
- http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking
- http://whisper.ausgamers.com/wiki/index.php/Tickrate
Both wikis include lots of useful information. These resources are by far the best than can be found in the internet. Do not believe what other people write on forums and message boards. Only trust what you read on those two links.
4 Comments
You must be logged in to post a comment.

[…] As a contribution to k1ller`s blog post. […]
Pingback :: March 23, 2007 @ 1:56 am
Hi!
Not bad k1ller, maybe add the “rate” command as many ppl don’t seem to know what it does as well (Def: Amount of internet bandwidth to allow your CS:S in bytes/s; value of 5000=~5kb/s, 20000=~20kb/s).
Low rate with high cl_update gets you choked and is bad. Low cl_update and high rate is also bad
Low cmdrate is even worse and is what is commonly known as ratehacking (sv_mincmdrate is glitchy and not always works).
I also seen reports of ppl getting stutter (like Cru [PL] decribed in mboard) cause of the low cl_interp, in my opinion its the others ppl setting that make you see them stutter.
For example before the January 17. Steam update (removed cl_interp, added cl_interp_ratio) I would always play with cl_interp 0.02-0.03 and some ppl with crappy internet and settings (e.g: bjkamo, @ndr3w and most portuguese players xd) would lag from my point of view making them impossible to hit.
So untill DZ makes a Patch 17 which will make cl_interp command redundant try to set it higher like 0.03 or 0.05.
“Value 0.02 means 20 milliseconds. 20 milliseconds is the optimal value because server updates itself 66 times per second. By that we get update every 1 / 66 second which is 0.015 seconds (15 milliseconds). Round 15 milliseconds up and you’ll have 20 milliseconds. -k1ller”
Its actually 120 millisecond k1ller as its a Source Engine bug.
Comment :: March 23, 2007 @ 5:57 pm
So what are you saying, that the server actually updates itself every 120 mseconds? That would be 8.3 updates per second… I don’t think so. The server updates itself 66 per second which leads to 0.02 ms accuracy. Any event that happens in less time than 0.02 ms (there are no such events) is ignored.
The “100 ms extra delay” what you are describing is (completely) client side problem. That is exactly the kind of problem I described in my post. People write sort of random stuff, even if correct, on forums and messageboards without proper explanation. Nobody who reads your “It’s actually 120 ms. It’s Source Engine bug” will understand what you actually said. What people understand is that there is some “bug” in Source engine. Then those people go on to their messageboards and forums to tout what they think they understood.
Here be the examples of bad websites giving false information:
* What is Tickrate? (Cl_interp error)
* CSS Lag: Ping Loss and Choke (Practically full of errors)
* Resolving Lag/Ping Issues With Counter-Strike: Source Server (Atleast rate settings explained wrong)
* Practically any website you find with Google
Here’s a proper link to the explanation about the “cl_interp 0.01 is actually 110 ms delay” bug: Hello. My name is Christoph ‚disruptor’ Dölger. I’m a German professional cyber-athlete. Same thread explains a lot more stuff about lags, delays and such. Very good thread.
Another issue is that rate setting. I have not tested how much data is transferred per second when I play but I have a feeling it cannot be constantly more than 10 kB/s. At peak times, when there’s lots of action, it might peak higher. But what’s the difference between 20 kB/s and 30 kB/s? If my game even at peaks has to receive/send less than 15 kB/s data why would it be better to have cl_rate 30000 (30 kB/s) than 20000 (20 kB/s)? By default cl_rate seems to be either 10k, 20k or 25k of which two latter are good enough for anything. There could be need for 30k for some other mods. Or maybe if turbo physics are enabled and server is running on 100 ticks or even more.
I know that you know these things but anyone who reads your post does not get any information out of it unless he already knows what you know.
Anyone who actually wants to know how things really work should read documentation by Valve or by Whisper. For example cl_cmdrate does not mean directly that client sends 100 different data packets to server each second. Do not believe what you read eg. on this board as you will understand everything wrong. Read the links given in the blog post.
Comment :: March 23, 2007 @ 7:32 pm
Omg, my apologies..
Indeed after reading twice what I wrote was a little confusing to say the least. Heh, I can’t seem to put facts on paper so that others understand them as well. I will try to think about that next time I write something “essay-like”. I also promise not to become a teacher some day
About the “rate” command I seen many ppl with deficient rate settings in both Setti and my private server, that was the reason I mentioned it.
These rookies read some websites where some wannabe teaches them to set rates “correctly” (e.g. rate 9999 or 5000 = leads to choke); I myself screwed my config that way more than once.
The best is really to let it at default like 20000.
Last time I checked on a tick100 server with couple of players the bandwidth used was about 10kb/s download and around 6-10kb/s upload. What is not completely clear to me is whether rate command is destined for down/up or just one of them, the most logical is that its both imho.
That would explain why Whisper and Co. recommends setting rate @ 30k.
Best thing is to delete my first comment and read the 3 most comprehensive links which are Whispers Wiki, Valve Netcode Wiki and Steampowered thread from disruptor.
Have a nice evening, hf and see ya next week!
Comment :: March 23, 2007 @ 9:22 pm