Wyz mentioned that a guide to adjusting the in-game bandwidth settings was needed, so I decided to write one up. I'll include sources at the end in case anyone wants to go back and see where I got my information from. Some of the information comes straight from my head: 5 years of experience with the HL engine in two competitve environments (First TFC, now NS) have seared the knowledge into my brain. I'm providing documentation due to Wyz's request. Keep in mind the Guide I chose to follow (the best one that I've ever found) is quite dated, so use the numbers I give under bandwidth settings instead. I know the better values than they give, since connections then weren't quite as good.
First an explanation about the history of the Half-Life netcode. I'm sure most of you know that HL uses a highly modified Quake 1 engine with the Quake 2 renderer. The original netcode was identical to Quake 1. That is, the lower the latency, the faster your information got to and from the server. People could snipe you with the crossbow in HLDM before you could even see they were there. At the time, most of the world (greater than 90%) was gaming with Dial-up of some type, so everyone pinged fairly high. Below 250 ping was pretty good, less than 100 drew the scorn of everyone in the server. Your FPS (or frames per second) was also tied into your ping, which made having a crappy computer worse than a crappy connection. After a year of this, Valve released an updated netcode in the HL 1.1.0.0 patch.
The 1.1.0.0 patch introduced client side prediction for movment, weapons firing, and decals. The result of that is this: A player with 300 ping (Now referred to as Player A) and 100 ping (Player B) were now on equal footing. For example, Player A sees Player B in a game of TFC. Player A hits Player B with a sniper rifle round to the head on his own screen. Player B sees Player A at the same time, and moves behind a wall. Now here's where the client side prediction comes into play. Player A's client sends the information that a shot was fired at a precise moment (tick) in the game. That information must first get to the server, then be relayed to the other players once the server decides if the shot hit or missed. If it hits, it will register on the player it hit as soon as the information reaches them. Remember that Player B had moved behind a wall on seeing Player A? Well, Player B thinks he's safe, until half a second later he suddenly dies from a headshot behind the wall. This is what you see a lot of the time, a very long pause in the registration of hits. This was just so you understand some of the commands I'm about to list, and understand what they do.
First the client side prediction commands. cl_lc 1/0 enables or disables lag compensation (all variables here are boolean: 1 for on, 0 for off). This is the most basic client side prediction, and allows you to play by the rules I posted in the above paragraph. Most people have never played with it off, so I recommend leaving it on: It's a completely different game with it off. Weapons require leading due to lag if you disable it, so I strongly recommend leaving it enabled (which it is by default). Next is cl_lw. This is for weapons animations and sounds. If cl_lc is on, leave this on as well. It is what's responsible for generating the weapons firing animations and sounds. Back in the day these were lagged as well, since they were sent to the server to confirm you actually fired before the animation/sound were played. Turning them off makes the server verify the weapon fired before the sound/animation is played. Turning this off while leaving lag compensation on is suicide, since you don't be able to judge if bullets are landing or not until it's way too late. The last variable is cl_lb. This controls the blood prediction if weapons prediction is turned on. You may turn this on or off at your discretion, see if you can correct your aim better with it on or off and base your decision off of that. Now on to the bandwidth settings.
To help test these commands, let me introduce everyone to our friend, Mr. Netgraph. By typing net_graph 1 in the console, you enable Mr. Netgraph. You may also use net_graphpos 1/2/3 to adjust where on the screen the graph is located (1 is bottom left, 2 bottom center, 3 bottom right). A picture explaining what all the information on Mr. Netgraph means can be found at this URL:
http://www.tweak3d.net/tweak/halflife/5.shtml
First is an explanation of the numbers for rate and cl_rate. The numbers are in bytes per second. So a 14.4K modem would optimally use about 1500, roughly the speed of the modem. The rate setting controls how much you attempt to download from the server. Take whatever your connection speed is and adjust it accordingly. Remember that connections now are much faster and reliable than most guides will assume, so you can put your settings higher. Everyone on Cable/DSL should be able to use at least 10000. I have 512K Cable right now and I use 20000 with no problem. You must figure out for yourself what the best value is. cl_rate is the speed at which you upload to the server. Once again, find a value that's appropriate for your connection. Most can handle 10000, others can go up to 20000 (like mine) with no problems. 20000 is the max setting allowed by the half-life engine for both cl_rate and rate. Next are the command rates. cl_updaterate is the number of updates per second sent to the server. The higher they are, the more information updating the server to your location and actions will be sent. At this point, type net_graph 3 into the console. Notice the bar goes away and numbers replace it. One is for loss: the number of packets sent but not recieved. Choke is packets that can't be sent or recieved. The default is far too low for any real broadband connection. I suggest walking it up, starting with 30, at increments of 10. When you reach a point that you start getting choke higher than 1-5, adjust by values of 1 until the choke dissapears. Another value is cl_cmdrate. This is the number of commands you download from the server per second. Adjust is just like cl_updaterate. Both of these commands should be somewhere between 30-50 for even lower end broadband connections. The max setting is 60 according to the Half-Life engine, however most people bump them to 101 each if they can handle it, just to be safe.
While not a command that affects latency anymore, I felt fps_max should be included in this guide. With the netgraph on, you can see your FPS. cl_showfps 1 will also show the FPS in the upper left-hand corner of your monitor. In certain situations, your FPS will drop suddenly, causing choppiness on the screen. This affects most computers that aren't beasts, even mine at times. You can lock your FPS so that they never go above a certain number. Try to find a stable number that your FPS almost always stays at, and lock it slightly below that number. I have a solid computer, so I use fps_max 72. It's much easier to aim when your FPS isn't moving around a lot, and a number slightly lower than what it's stable at should keep it steady, increasing your accuracy in high screen-lag situations.
Now would also be a time to check your refresh rate. While it varies from monitor to monitor, most people playing at 1024x768 to around 1280 x 1024 can get away with increasing their monitor refresh rate to 75 Hz from the default 60 Hz. This allows you to raise your frame rate above 60 fps (which some of you are probably locked at). More importantly, it decreases eye strain by displaying all information on the screen faster, at a rate your eyes can see easier. I'm sure some of you have had headaches or your eyes hurt after staring at a monitor for a while. You can adjust this by going to Display Properties in the Control Panel (right clicking for those of you without a replacement windows shell) > the Advanced button > Monitor Tab > Screen refresh rate drop-down box. Sometimes removing the X from the Hide modes monitor cannot display button allows you to access refresh rates that Windows won't allow you to use, yet your monitor will. If the refresh rate is too high, the screen will turn black. Simply wait 15 seconds, and windows will restrore you to your previous refresh rate. Find the highest one you can do to, and use it.
Keep in mind the higher the resolution, the lower the maximum refresh rate you can use. Only the better monitors can use 75 Hz at 1600x1200 and higher, most can't use 75 Hz any higher than 1280 x 1024. If you can't use 75 Hz at your current screen size, I highly suggest either lowering it, or if you're already down to 800x600, seriously consider buying a new monitor. Your eyes endure a lot of strain using 60 Hz. I had to buy a newer monitor to get higher refresh rates, because the strain on my eyes caused terrible miagraines. Just a bit of advice from someone who knows about the pain refresh rates can cause.
This concludes the guide, I hope everyone finds it very useful. My source for this guide was Tweak3D.Net's Half-Life Netcode Guide, found at
http://www.tweak3d.net/tweak/halflife/
I've quoted from this guide several times. I suggest everyone read if for the other information it has that wasn't pertinent to this guide I've posted. It has a few other visual goodies.