What is it?


HLDS Ping Booster is a small tweak to the Half-Life Dedicated Server that drastically reduces player pings and generally makes the game much more responsive.

Technical explanation:
There is a small flaw in the way frame timing is implemented in HLDS. Basically your average HL server is just sitting idle about 15ms between every frame. This little tweak fixes that.

Servers


Want to see the booster in action? Download The All-Seeing Eye for a list of boosted servers. (The filter for Ping Booster is under Half-Life > Server Type > Ping Booster)

Installing


Just uncompress HLDSPingBooster-1.0.tar.gz in your HL server directory (the one where hlds_run is), and instead of using hlds_run to start the server, use hlds_boost. Clients don't have to install anything.

(This problem exists on the Windows HLDS as well, but we have not yet made a fix for that platform.)

Download


HLDS Ping Booster for Linux

Contact info

Any questions/bug reports can be mailed to Zibbo
 

FAQ


I have a problem with the Booster not finding booster.so.

Download the 1.0 version.
If it still doesn't work, edit hlds_boost, and change LD_PRELOAD=./booster.so to LD_PRELOAD=/full/path/here/booster.so



My server seems to use much more CPU when Booster is installed.

A normal HL server is often sleeping more than it's doing actual work. It was designed to run at 100fps, but due to the flaw (which the booster fixes), it rarely runs at over 30fps.

A HL server with Ping Booster basically has no limit on how fast it can go. The default Ping Booster configuration is to wake up when there is some work to do and not limit the number of server frames per second in any other way. This is ideal for reducing latency, but at the same time it raises CPU usage slightly.

However, it is possible to limit the server fps by editing hlds_boost and changing sys_ticrate to something smaller. 100 is the default value in HL, setting it there will make the server perform more or less like it was designed to. Setting it to about 20-30, you should get about same kind of CPU usage as before and still get some small benefits from the booster (not as clearly visible though).

Note that a server running at 100fps does NOT use twice as much CPU as a server running at 50fps. It doesn't work that way. The more server frames you have the less work there is to be done in every frame. The extra CPU usage comes mostly from sending more server-to-client updates.



When I'm playing on a Boosted server, ping seems to be ok, but I get a lot of choke.

Like explained in the previous question, Boosted servers generally run at a higher fps than a normal HL server. One of the benefits of this is the ability to send more server-to-client updates per second. This is also (most likely) what causes your connection to choke.

You have probably raised your cl_updaterate from the default 20 (cl_updaterate controls the number of server-to-client packets the client wants to get per second). Using a higher setting may have worked just fine before because the server can only send one packet per frame to you, so when it's running at 20-30fps you never get over 30 packets per second no matter how many you want. With a boosted server you may actually get that 100 packets per second that you requested. So what you have to do is lower your cl_updaterate to a level where it seems to work well.

You may also need to tweak your 'rate' to find the ideal configuration.



When are you going to make a windows version?

Dunno. It may require a bit more work than with Linux. Probably not anyday soon.. But then again you never know :)



I can't use hlds_boost to start the server. Is there any other way of using it?

hlds_boost is just a shell script, provided for convenience. If you look inside it, you should be able to figure out how to integrate it in your own start scripts. Basically you have to have the enviroment variable LD_PRELOAD pointing to booster.so, use sys_ticrate 1000 and sv_maxupdaterate 100. You can put the last two in your server.cfg if you want.