Setting up a dedicated OpenAG TDM server

June 27, 2019

It’s been a while, eh? Slightly over a year, I suppose.

You’re setting up an agriculture server? What is this, the digital Neolithic Revolution?

Nah, the stone age one was fine. Today we’re talking about a quality of life mod for the game HLDM, the included deathmatch shooter included with the game Half-Life.

Wait, Half-Life? Why not Quake?

Not too many people ask me this, & I admit this section isn’t really intended to answer the question, however let’s answer it to see what I like about Half-Life deathmatch.

Whenever you mention movement shooters, Quake normally comes to mind, for good reason – it has great skill-based movement mechanics & people run really fast. IMO it’s a good example of one. However, what if you play Quake & it’s too slow for you? That’s where HLDM comes in. It’s much, much faster, has even more important skill-based movement mechanics & weapons can often kill you with one hit. Plus, a lot of the movement mechanics from Quake have been retained, like bunnyhopping. With the HL exclusive (mods not included) Tau cannon, you can basically make movement in the Y axis just as important as it is in the X & Z axes, which isn’t really something you see in any other FPS. Seeing pros compete is incredibly satisfying for this reason, because players fling everywhere, kinda like competitive CS:GO but with their Danger Zone exclusive bump mines (and a high skybox, obviously). It’s pretty neat to see the airshotting skills such people have. Even better is how such skills are easy to grasp but hard to master & with a high skill cap, so anyone can pick up the game & develop such skills (although with zero tutorial).

I thought we were talking about AG?

Yes! Adrenaline Gamer is not an entirely different game at all, it’s simply a quality of life mod for HLDM, allowing for things like match start votes, disabling annoying bugs like wallgauss & several other tiny but important improvements. Much less people play it than standard HLDM, but considering you’re reading what is practically a tutorial on how to setup an AG server, you probably have a friend or so to play with, which is pretty fine for HLDM.

Before we get started, I should mention that we will be using OpenAG for our server since the original AG is very, very old & also lacks any support for modern Linux systems as far as I am aware. You can use any AG client you want, really, but I’d still recommend OpenAG there because it (sic) consistently receives updates. If you need to install that, just follow the instructions.

Onto the server we go!

I very strongly suggest you make a separate user, as one should.

To start, we have to download the HLDM server onto our machine. To do that one can use SteamCMD, which can be installed using the following oneliner:

curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -

(taken from here)

Once you’ve got that down, you can use the script steamcmd.sh to start it right up. From here we can start downloading the HLDM dedicated server, the app ID of which is 90. We’ll download it inside ./hlds/, using an anonymous login to Steam since the DS is free.

login anonymous
force_install_dir ./hlds/
app_update 90
quit

Then we’ve got it downloaded. Actually, no, there’s an issue with SteamCMD that prevents us from getting all the files in one go. To fix this we can head into ./hlds/steamapps & run this oneliner:

for i in 10 70 90; do curl -L#O https://raw.githubusercontent.com/dgibbs64/HLDS-appmanifest/master/HalfLifeDeathmatch/appmanifest_$i.acf; done

(thanks to Daniel Gibbs for providing the fixed appmanifest files)

You can run the aforementioned SteamCMD commands once again & the server should be fully downloaded. Now it is time for us to install OpenAG.

To install OpenAG, you want to cd into hlds, then extract the full mod package from the homepage. You should get this new directory called ag right in there. That’s pretty good. What you can do right away is just delete any non-Linux files like EXEs, DLLs, & also DYLIBs. It isn’t required, but it is worth mentioning that you can do that without any consequences. A bunch of other files can also be deleted to take out the clutter a bunch, like ircbot, which isn’t really useful unless you want to see statistics of your friends duking it out on your phone, perhaps?

Inside ag/server.cfg you will find several tiny parameters like the hostname & the server password. The hostname may be a tad misleading name as it actually refers to the name your server has in the server browser. Thought it’d be worth clearing that up. If you will only use SSH for remote control, it’s worth keeping the RCON password empty.

Inside ag/gamemodes you will find several config files for the several gamemodes AG has to offer. Describing them is outside of the purpose of this document, but nonetheless many of the cvars in the config files are self-explanatory, so have a go at it if you desire.

At this point we’re more or less all ready to start up the server, so let’s move right on with that.

./hlds_run -console -game ag +maxplayers 32 +map crossfire

The only truly important part is -game ag, as this tells HLDS to use AG rather than the default valve game (HL1 / HLDM).

Congrats, you’ve successfully forgotten how physics work! Bring a friend or two, duke it out, practice your strafe jumps, whatever. It’s up to you, it’s your own server anyway.

In future versions of this tutorial I might cover how to add HLTV to your server, or metamod-r (an updated fork of the original Metamod), or maybe even AMX Mod X? Who knows, at this point I don’t really feel like I need much more than AG for a decent HLDM experience, unlike a certain game where I feel it’s quite necessary, at least for a server I own. That game’s a lot less obscure as far as setting up servers goes, though.

To conclude, bring it on! (reference to a sound clip typically played at the start of an AG match)