|
Counter Strike is a modification of the popular game , Half Life. Since this modification was done not by the Half Life developers but rather by 3rd party developers (Jesse Cliff and Minh Lee), Counter Strike ended up being highly customisable. All aspects of CS can be configured using CVARS/Commands. Two of the most common problems encountered by CS gamers are lag and bad registry. This guide will act as a mean to eliminate both lag and registry problems by setting a guideline on how to correctly configure the netcode settings which directly effect your bullet registry and lag issues.
What Causes Bad Registry and Lag? There are many factors that could contribute to lag and bad registry. Issues such as; a poor connection , ISP problems , Graphic card problems etc. However most of the times , its a result of wrongly configured rates/netcode settings. Most gamers tend to stick with the default settings not realising they are playing at dialup rates and getting horrible registry. Netcode setting/rates need to be configured in accordance to the speed and type of connection you have. What Does Not Cause Bad Registry and Lag? One of the most evident misconceptions expressed by gamers on public servers it that of a higher ping player lagging the whole server. This is not true at all. A single person cannot lag a server. A server will only lag when there are alot of clients present/dowloading maps etc, 3rd party plugins using too much of the servers processing power and problems related to the server host network. A high ping does not necessarily mean lag. Ping is simply a measure of how long it takes data from your computer to reach the server. A person can have 250 ping and play as well as a person with 20 ping but sometimes a person with 20 ping will lag without any increase in his ping. A person with lag can distinguised by the choppiness of his movement. Blaming the server for bad registry is also a common mistake. Not all servers have the same server rates. Therefore it is upon the gamer himself to adjust his rates according to the server. Most servers cap off some rates and therefor the need arises for the gamers in that serr to adjust their rates.
Configuring Netcode Settings/Rates: What file to edit?
All of the Counter Strike settings are saved in a file called config.cfg. This file is usually found in: C:/Valve/Steam/Steamapps/your account name/Counter Strike/cstrike
or
C:/programfiles/Valve/Steam/Steamapps/your account name/Counter Strike/cstrike
Any text editor can be used to open and edit .cfg files , notepad is most commonly used. Once you open up your config.cfg you will see a long list of commands. All commands/cvars are placed on different lines, one line can have only a single command. The format for a command is: command [x] (where x is the variable) example: rate 25000. You have the option of changing/adding settings to the config.cfg file or you can make a new .cfg file and add new settings/rates in there. If you do choose to make new a new .cfg file (you can name it whatever you want), you have to make sure that Counter Strike loads it up everytime you start CS. There are two ways of doing this:
Method 1: Simply add a line at the end of either config.cfg or autoexec.cfg. The line should read exec urNewConfigFilename, for example if ur new .cfg file is called rates.cfg you will add this to the end of either your config.cfg or autoexec.cfg : exec rates.cfg Method 2: Once CS has loaded, type into the console (press `):exec urNewConfigFilename example: exec rates.cfg Netcode Settings / CVARS The following commands are related to the CS netcode. The cl commands are client sided. The sv commands are server sided , you should only use these if your running a server and they are supposed to goto into the server.cfg file. At the end of the guide i have put up a sample rates.cfg , so you have a fair idea of what to modfiy to improve the registry.
cl_cmdrate: This command sets the amount of packets you (the client) sends to the server per second. Theoretically it would be assumed that the more data/packets you send to the server , the quicker the response from the server. However if your sending more data/packets than the server can recieve, obviously those extra packets will be dropped by the server and thus you would be wasting your bandwidth. The proper value for cl_cmdrate should be equal to your FPS or a bit higher. If setting cl_cmdrate to your fps value makes you lag, then try setting your cl_cmdrate to the maximum you can without getting any lag. Recommended Setting : cl_cmdrate equal to your FPS or slightly higher (+5) Ideal Setting : cl_cmdrate 101 Usage : All gamers
cl_updaterate : This command sets the amount of packets/data you can recieve per second from the server. To be in sync with the server , a high value is recommended.The proper value for cl_updaterate should be equal to the servers sv_maxupdaterate. Recommended Setting : cl_updaterate should be equal to the servers sv_maxupdaterate Ideal Setting : cl_updaterate 101 Usage : All gamers ex_interp : Interpolate means to estimate the value of something and this is exactly what this command does. Since you cannot be fully synced with the server at every instance, the CS engine has to interpolate between 2 'true' packets. For example, a server updates your information every second, now suppose you are at de_dust2 Bombsite A originally and after a second you reach Bombsite B( lets just assume you have speed haxx), now since the server sends you data/packets every second , the position you see on your screen at A and B will be accurate but since you do not recieve any data/packets between the 1 second gap (while you are between bombsite A & B), the CS Engine has to estimate (interpolate) your positions between A & B. ex_interp is the value in seconds it takes to interpolate in between each successive update. The correct value for ex_interp should be 1/cl_updaterate since there is a 1 second gap between each update. For example if your cl_updaterate is 100 then 1/100=0.01. However it is alot easie just to type ex_interp 0 into the console and the engine will automatically adjust your ex_interp using the 1/cl_updaterate formula. I have seen alot of gamers on different forums saying "this interp is better", "that interp has better registry". Do not listen to other people and try to adjust your rates according to their rates! What maybe working for them may not work for you since you probably have different rates. If you want to be able to hit what you shoot(ie your shots registering on where your crosshair is) use the proper formula i.e ex_interp=1/cl_updaterate or better yet simply use ex_interp 0. Recommended Setting : ex_interp = 1/cl_updaterate or ex_interp 0 Ideal Setting : ex_interp 0 Usage : All gamers rate : Sets the amount of data (in bytes) the client sends to the server per second. Typical starting values for different connections are as follows: dialup/modem 1000-4000, ISDN 5000-7000, Cable/DSL 6000-10000, T1 7000-20000, LAN 20000+ . For best results set rate to the servers sv_maxrate (slightly below sv_maxrate is fine but make sure not to set it over the sv_maxrate) Recommended Setting : rate 20000 (for those with very good connection) otherwise set to servers sv_maxrate or lower Ideal Setting : rate 20000 Usage : All gamers sv_maxupdaterate : Sets the maximum number of packets the server can send per second to a client. Now the correct setting for this is totally dependant on the servers bandwidth. If the server is on a really good network then use sv_maxupdaterate 101 otherwise use the default which is sv_maxupdaterate 60. Recommended Setting : Set according to available server bandwidth Ideal Setting : sv_maxupdaterate 101 Usage : Server Operators / Server Admins sys_ticrate : Sets the maximum FPS per second the server can calculate. This command defines how smooth or choppy the server will operate. The greater the FPS the better the experiance for the gamers on the server. Now if you have an average server (with regards to hardware) and you set this command really high , lets say sys_ticrate 999, what will happen is that since your server cannot handle that much FPS, there would be FPS spikes, that is the FPS will be really high one second and then drop really low. This will be a very bad experiance for the gamers on your server. The best option would be to set a value that is low but at the same time quite playable. Something like 100-150 is quite a reasonable value. However always set it slightly higher than the value you want. For example if you want 100FPS set the sys_ticrate 130 (set it 20-50+) Recommended Setting : sys_ticrate 100-200 (totally dependant on your server) Ideal Setting : The highest value your server can handle (ideally anything over 100FPS is pretty good) Usage : Server Operators / Server Admins sv_maxrate : Sets the maximum amount of data the server can send per second to a client. If sv_maxrate is set to 0, then the server will take into consideration all the players 'rate' value and then send the data according to everyones different 'rate' values. Now although this may seem a good idea, it actually may lead to wastage of the servers bandwith.Take for instance if the server can only handle sending 15000 bytes/sec and one of the players has a rate of 20000, the server will try to fulfil the clients request of 20000 bytes/sec thus leading to more load on the server and waste of bandwidth. Recommended Setting : sv_maxrate 20000 Ideal Setting : sv_maxrate 20000 Usage : Server Operators / Server Admins Sample rates.cfg // i used these rates on a 1.5mb DSL connection and had no registry/lag problems //these are also called LAN rates , use only if u have a good connection rate 20000 cl_updaterate 101 cl_cmdrate 101 ex_interp 0 fps_max 101 Notes and Tips: cl_showfps 1 : Use this command in the console to view your FPS net_graph 1 : Shows the gamer his/her latency, FPS and also shows the netcode activities in the formof a graph. This is a great tool for troubleshooting any rates problem. If you notice that you are gettingspikes or execessive dots in the graph then you certainly are having problems such as choke or loss. If you notice execessive red dots at the bottom of the graph then try setting your cl_updaterate higher than your FPS. The red dots should disappear now. If you are getting alot of yellow/orange dots in the middle of the graph, it means that you are dropping packetss/extrapolating, in other words your cl_updaterate is higher than the servers sv_maxupdaterate. You should start lowering your cl_updaterate until the yellow/orange dots disappear. net_graph 3 : Similiar to net_graph 1 but shows choke and loss as numeric values. choke : Choke happens when the server cannot respond to your requests fast enough. This maybe due to you requesting alot of information from the server (for instance your rate is set higher than the servers sv_maxrate eg your rate is 20000 , sv_maxrate is 15000) or simply the server maybe under quite a load. You could try lowering your rates or simply find another server. loss : Happens when your computer cannot handle the servers request and is simply too slow. Try lowering rates which relate to sending requests to the server eg cl_cmdrate . Read-Only : Always keeps your config.cfg read only. Server admins can always mess up your settings, therehave been countless incidents posted on the Steam Forums about immature admins slowhaxxing clients, binding kill to mouse1, messing up the config.cfg and what not. This could have been prevented if the players had made their config.cfg read only. Although even with a read-only config admins can mess with your setting, those settings will not get saved and when you restart CS, you will have your original settings back. To make your config.cfg read only do this: right click config.cfg file>select Properties>check the box that says Read-Only
|