In the Forums...
Posted: June 10, 2000
Written by: Ryan "Xero" Martinez
Command Line Options (cont.)
This option can be used to specify a mod folder for Half-Life to load whenever it is started. -game cstrike for Counter-Strike, -game firearms for Firearms, or -game tfc for TFC. This can save you some time if you only play one of Half-Life's mods.
This nifty trick allows you to issue console commands right in the shortcut command line for Half-Life. This can have dozens of uses. For example, you could add +connect zzz.zzz.zzz.zzz:27015 (where zzz... is a server's IP address), and that shortcut would now connect to whatever server you told it to (it's great for making direct shortcuts to your favorite servers!). Here are some other ideas - +exec mysettings.cfg would exec your custom .cfg file whenever Half-Life was started, +net_graph 1 would turn the netgraph on for you. As you can see, this command line option can be very useful.
The New Netcode
One of the biggest changes in the netcode is the fact that client framerates are no longer dependent on network updates. The older netcode requested a network update for every frame rendered, leaving modem users with low-end framerates on high-end machines. Even people on the best broadband couldn't get perfect connections and 72fps at the same time. With the new netcode however, server updates, client updates, and framerates are all completely independent of each other. 100 beautiful frames per second are now possible on your modem connection.
But that's just one of the improvements... Valve has also programmed in lag compensation for aiming, allowing for LAN-like play on even 33.6 modems! The effect is very similar to client-side hitscan, but it's completely server side, meaning the netcode is just as secure as any average FPS game's netcode.
On top of all these things, Valve has reduced bandwidth and made huge strides in the efficiency of the code. Modem users can now expect to be able to take on much larger games with more opponents onscreen with less lag. And most important of all, Valve made the netcode highly tweakable.
How It Works
I know what many of you are wondering... how is Valve compensating for lag? Well it's quite simple and elegant: let's say a modem user with a 200 ping shoots at an enemy. The server receives that packet saying he shot, and checks the players ping, which is 200. It then checks to see if the enemy was where he shot 200ms ago; if he was, the hit is counted. If he wasn't, the hit isn't counted.
Now this does have some disadvantages. First, and most noticeably, sometimes bullets seem to curve around corners as they hit you, because it takes a while for the hit (which actually happened a little while ago) to catch up with you. This can be somewhat annoying, but similar problems happen due to client-side movement prediction to begin with. The other disadvantage is that when you shoot someone, the actual hit happens a bit later than if you were on a LAN. If an enemy were to kill you before your shot gets to the server, then you lose anyways. In this manner, low-pingers still hold an advantage. Whether these problems are worth the ability to aim like you're on a LAN is up to you.