I play Xonotic now
FreeBSD has been my server operating system of choice for the past two decades. I may have started on Linux (with a Walnut Creek CD of Linux Slackware), but after I got out of university I started toying around with the *BSD flavors (particularly FreeBSD and OpenBSD). FreeBSD is clean, has sensible defaults, and frankly, the ports and package system is just hassle-free when it comes to getting up and running. If you’re at all wanting a Unix system that is dependable, a great platform for development, and running simple services, FreeBSD is hard to beat.
Over the past year or so I started toying around with FreeBSD Jails. While I’m not an expert on the topic, they’ve proven useful for a few services that I like to run on our home network. Best of all, they run in independent environments, meaning I don’t have to worry about them stomping on each other as they get upgraded and maintained over time.
All of this leads me to Xonotic. I was bouncing around the internet recently and came across some old news about Unreal Tournament getting cancelled. In the process I discovered that some open source developers had taken the open sourced Quake Engine code and used it to build Xonotic.
Waxing nostalgic, I decided to throw up a jail and install it on my main server. I fired it up and was immediately back in my 20s, running through platform maps fragging everyone I could.
This game is fun! The graphics are definitely 2006/2007 era, but I think that’s part of the charm for me. It’s fast moving and visceral, and the player models and weaposn are really cool and well done. Now that I’ve got a dedicated server, it’s pretty trivial to log on and play a 5-10 minute round of Deathmatch or Capture the Flag. And one of the things I like about it is that the gameplay options are straight ahead. I was up and running with a dedicated server very quickly. A few key mappings later and I was running through the deathmatch map rotation.
The one thing that was not straightforward was the configuration script for the server. The sample startup scripts that were supplied with the base install of Xonotic were designed around a Linux installation structure. Since I installed via the FreeBSD packages, the filenames were slightly different, and the executable path and the data path for maps was different. It took a little mucking around to identify the path differences and adjust the script accordingly. What I ended up doing was creating a xonotic server user inside the jail to run the server, and set up a server.cfg file in that user directory to set the defaults for the server to run. Finally, I created a server startup script called xonotic_server_freebsd.sh to launch the server by reading in the config files, and then wrapped all that in a script called xonotic_tmux.sh, that launches a tmux session, kicks off the startup script, and detaches the session. This allows me to keep the session running on the server after I log off, but also allows me to ssh in, reattach to the session and make modifications as needed.
Needless to say, I’m having way more fun with this than I should be.