Ah rate, the setting that is set wrong by 95% of people who don’t have a clue and just copy everyone else. First we will start off with a quick history lesson. Quake, the game engine that was used to make Half-Life and in turn CS was created using the same engine. Quake has rates too! And in fact the max rate on Quake is 25000. This is why today most players use a rate of 25000. This is wrong. Half-Life 1/CS actually has a maximum rate of 20000, it has been proven many times and setting your rate to 25000 is pointless.
People also say "rate 25000 is for LAN and 20000 is for online", wrong again. When you play on LAN rate does nothing at all, in fact you could have rate set to 100 and it would have no effect on LAN. This is because when you play on LAN rate is ignored and it uses sv_lan_rate instead, and by default, yes you guessed it, it is set to the maximum - 20000. So all the players thinking they have been playing with a rate of 25000 on LAN are wrong, you have been playing with 20000 all along.
Best Setting: 20000
Another setting set wrong by 95% of people, the norm was to set this to 101 as your cl_updaterate was set to 101(I will cover this later) but again, this is wrong. Cmdrate is data that you SEND to the server, so every time you shoot, walk, move your mouse, anything, cmdrate uploads data. Now because most people use 100fps people set it 1 above this to 101, so that you are always sending more data than needed, but 101 actually isn’t enough.
This can be seen by net graph. Red dots appear at the bottom when data is not sent because your cmdrate is not high enough. Try setting your cmdrate to 50 for example and look at net_graph 1, lots of red dots at the bottom = bad. Red dots at bottom of net graph showing unsent data.
Now with 101 you still get red dots from time to time, in fact the best cmdrate to use is always 5 more than your fps, so for the maximum 100fps 105 is fine. No red dots, all data is sent.
Best setting: 105 Assuming you have 100fps (Always +5 your FPS, 100fps = 105 cmdrate.)
Updaterate is a tricky one as the best setting is different depending on the server. Cmdrate is data you send to the server, updaterate is data you receive from the server. People just used to set this to 101 to match cmdrate but didn’t really know why.
So how do you know what to set it to? Servers have a setting called sv_maxupdaterate which determine the maximum updates it will send to you, the default for a CS server is 30, which is bad, most servers nowadays have this set to 100+ but some publics you will find still have it set to 30. There is no way you can check what it is set to unless you have rcon to the server, but you can look at the lines on net_graph 1 to predict it.
To show this, set your updaterate to 100, then ex_interp 0. (I will cover this later) then join a server, if you see lots of orange and yellow dots on your net graph, this means your interp is set wrong for the server and you are not receiving the right amount of updates for your interp setting. Try lowing your updaterate by increments of 10 until the yellow/orange dots go away, you will find servers that have maxupdaterate set to 30 they will go away when you set it to 30 etc. ♥♥♥♥ server using the default sv_maxupdaterate 30, reg will be random and terrible.
Still on ♥♥♥♥ server, but using correct updaterate and interp.
But what if you join a server that does have sv_maxupdaterate set to 100+? Like I said, everyone just used to set it to 101 and leave it like that, this is wrong, the correct setting should match your interp otherwise will cause reg problems. The last few CS updates they briefly changed this to maximum 100 but because everyone had 101 in their config, it defaulted to 30 and caused mass spam to steam support asking them why, so because of this they changed the max to 102, just to stop the spam of forum threads to steam support, but really the correct setting you should use is 100, which matches perfectly with ex_interp 0.01 which I will go over next. Good server using sv_maxupdaterate 100+.
My server has sv_maxupdaterate set to 100, but I’m still getting yellow/orange dots! Just because a server has the right setting does not mean it can still actually send 100 updates per second, some bad servers can’t handle it and you should lower your updaterate by 10 until the dots go away, note servers like this are very bad as it depends on how many players and how much action is going on at the time. For example both teams rush B the server cant handle all the traffic of 10 people shooting at once and can only send for example 50 updates per second instead of 100 at that time, so everyone in that moment gets bad reg (which is shown by orange/yellow dots). But when everyone is dead except 2 players, the server can now again send 100 updates per second and you good reg returns. To fix this, you either buy a good server, or lower your sv_maxupdaterate on the server to compensate for its shityness.
Best setting: 100 Assuming server is using sv_maxupdaterate 100 and can handle it.
*You can set this to 101/102 if you want, it will make no difference, however you will have to set interp manually and will loose the ability of CS calculating interp for you.
Another tricky one, closely tied in with cl_updaterate, interp has been a question of debate for a long time, there was a bug with interp throughout CS 1.5 and caused much whine within the community. This was because you could use it to your advantage in some situations.
In 1.6 however, valve fixed it and interp now works as intended, as long as you have it set correctly that is. The correct setting is always 1 divided by your updaterate, so if your updaterate is set to 100, the best setting is 0.01. But why do some people set it to 0? Valve added a nice feature that automatically calculates the best interp for you depending on your updaterate, by setting it to 0 and check your console it will show you what it has calculated it to. So if you have updaterate set to 100, then ex_interp 0, CS will automatically set your interp to 0.01, then if you change your updaterate to 30, your interp will automatically change to 0.33 etc. So the best setting you can use is always 0, then depending on the server, you should lower your updaterate depending on how good the server is and depending on what the sv_maxupdaterate is set to and CS will automatically set your interp to the correct value.
This caused a problem with people using updaterate 101 as when you set your interp to 0 it will try and divide this by 10 and you will get 0.009 which is designed for an updaterate of 110 which you can not set and will cause reg problems. Setting your updaterate to 101 and using ex_interp 0.01 wont do any harm but it is pointless using 101 and you loose the benefit of CS auto calculating your interp for you.