By Whisper (modified and currently experimenting!)
posted on the GameArena Forums. This is a work in progress - any corrections, tips? email me
Broadband quick start settings;
rate=10000 or <= sv_maxrate (bytes/sec limit from server) cl_updaterate=60 or = fps_max <= 100 > 20 (pack/sec requested from server) cl_rate=10000 or = rate (bytes/sec limit to server) cl_cmdrate=60 or = cl_updaterate (packets/sec sent to server) interp=0.1
fps_modem=fps_max
Newbies: Press tilde"~" to get the console. Type "netgraph 3" in the console to see choke and loss data. Type "rate" to see the current rate. Type "rate=10000" to set the rate. All without quotes.
Choke: server too slow - you need to ask for less data or find better
server.
Loss: you too slow - you need a better
computer, or send less data, or have lower fps_max and graphics settings. May
vary map to map.
Packet: A discrete piece of data for network transmission. Size of packet
varies depending on how much is going on. Thus the need for an upper limit for
bytes/sec (rate and cl_rate).
Ping: Time in milliseconds for your connection to reach the server. Broadband
might be 40 to 100, dial up around 200, LAN 0 to 40. Busy servers with overloaded
connections will make ping worse (higher).
Ok this is the final time I expect to have to answer this question, as it
seems most people have NFI what they are doing or why they are doing it, when
it comes to CS Netcode settings, rate and choke.
Firstly
b is for bit
B is for Byte
There are 8 bits to a Byte
The first and most important setting is in actual fact server side, and no
clients have any say on this number. This setting is called.
sv_maxrate=xxxx
sv_maxrate is measured in bytes per second, and is how much bandwidth
the server dedicates to be able to send to each client, each and every second.
The sv_maxrate settings for each of the GameArena servers at the time
of writing were as follows.
CS#1=6000
CS#2=8000
CS#3=8000
CS#4=6000
CS#5=8000
CS#6=6000
CS#7=6000
CS#8=8000
CS#9=8000
Clan EXi=8000
Clan nK=15,000
GameCreate=10,000
When you are alone on the map and not doing anything, then the server only
needs to send about 1000 bytes a second. When you are in a firefight, the
server can end up wanting to send 10,000 bytes a second.
So if you set your rate above the sv_maxrate you can expect choke when things
get busy and you are asking for more data than the server will let you have.
There is no point having a rate above sv_maxrate.
Now the remaining Client Side settings that can have an affect on all of
this are as follows.
rate
cl_updaterate
cl_rate
cl_cmdrate
interp
fps_max
fps_modem
rate is the number of bytes per second that the
client is able to accept, when rate and sv_maxrate differ, the
lower of the two will be used.
cl_updaterate is the number of game packets
per second the client will attempt to request off the server. This should
be no higher than 100 or the maximum number of frames per second you are getting,
and should be no lower than 20.
interp - frame interpolation ON/OFF. Since ver 1.6 this has been locked at the default 0.1. Type interp by itself to toggle off then on. The default is that it is on. Those with cheats may still be able to change this value.
fps_max - Sets the maximum frame rate that CS will try to display. Usually fps_max=100, for crappier graphic cards or computers fps_max=60. Set this to no more than 100 as any more is a waste/not possible.
fps_modem - Is the minimum frame rate that CS will display. You can set this the same as fps_max.
cl_FlushEntityPacket - This error can be caused by having your cl_cmdrate and cl_updaterate set too high for the current rate. Your ping will go crazy and CS will hardly update at all causing weird problems. Try lowering the cl_updaterate and cl_cmdrate to 50, or 40. You might also try increasing the rate if you have a fast enough connection (as you increase the rate watch your loss, once your rate is too high you will get loss - lower the rate till you get no loss). With a frame rate of 60 and cl_cmdrate of 40 is still very playable. Down to 30 and you will start to notice a delay between you instruction and the result, ie when buying weapons for instance. The optimal cl_cmdrate and cl_updaterate would match the frame rate (what you set fps_max and fps_modem too).
choke - You'll probably experience some choke when things get busy,
small amounts for a small time under 10 is ok. If it is consistantly going
too high and effecting play, or it is present when there is nothing much happening
then your cl_cmdrate and cl_updaterate are too high. Experiment and bring
them down by 5, see how you like it and see how the choke goes. You'll notice
your ping goes down as you lower the cl_updaterate and cl_cmdrate because
you are taking the load off your connection, which is not necessarily a good
thing if you don't get updated quickly enough!
To improve choke you can:
1. Change your rate setting to be similar or equal to what the servers
is, if possible. This enables you to have as much bandwidth as the server
can provide.
2. Lower your cl_updaterate so you are requesting less game packets
per second.
3. Get a good computer, with a good Network Card.
4. Upgrade to a faster Internet connection.
5. Politely and nicely request the Server hosts buy better servers and to
put them on faster connections. :)
cl_rate is exactly the same as rate, except
that it is the number that determines how much bandwidth the client can
send to the server in bytes per second.
Now this is one of the most important things to understand. Most retail
broadband Internet connections in Australia are limited to 16,384 bytes
a second IN TOTAL upload speed.
Unless you are on a 5GB or 10GB BigPond Cable Plan that has unlimited upload
speed then your upload speeds will be limited to the following.
128Kb=16KB or 16,384 bytes per second. This is all other BigPond Cable Plans,
Optus Cable and some ADSL plans.
256Kb=32KB or 32,768 bytes per second. This is some ADSL plans.
56K Modem users have far less, and they usually only get 5KB to 6KB a second
in total to download, but can only upload at about 3KB a second, AND cannot
do both at the same time, unlike Cable and ADSL. I.e. You cannot download
at 5KB a second whilst simultaneously uploading at 3KB a second, modems
unfortunately don't work like that, so effectively you are left with being
able to download at 3KB/s and Upload at 3KB/s at the same time, or there
abouts.
cl_cmdrate is the number of game packets
per second, you the client will try to send to the server. Again this should
not be set higher than your frames per second, and not any lower than 20.
Finally for people who share Internet connections, you need to be aware
of what your total upload and download speeds are in bytes, and then setup
each client accordingly, so you share the bandwidth, otherwise you will
end up saturating your connection with CS data, and you will have issues.
For the record here are my settings for a peak connection and peak machine:
rate=10,000
cl_updaterate=100
cl_rate=10,000
cl_cmdrate=100
fps_max=100
fps_modem=100
interp=0.1
Tweaked settings for a slower connection with an older machine with an older video card, say a 256K / 32K up slower ADSL link (which has inherent latency anyway) and a GEForce 2;
rate=10,000
cl_updaterate=40
cl_rate=10,000
cl_cmdrate=40
fps_max=60
fps_modem=60
interp=0.1
For users who can get 100 fps. This is all run on a BigPond Cable connection
I don't share which is 1,000Kb down and 16Kb up, and my Computer is a Athlon
1800XP with 768MB of RAM and a Geforce4 4400, with a Intel Network Card
and WindowsXP SP1.
The following resources were used to produce this article.
http://www.summerblue.net/games/cs_report/
http://www.geekboys.org/docs/Half-Life%20Netcode%20Explained.doc
http://qgl.ausforums.com/?agn=thread&id=1029590