Metamorphism Quake - Part 3

By Kevin, February 26th, 2021

In the second post of this series, I went over reviewing visible bugs in the game and rectifying them enough to where the game can be played. Here, we now need get the game online.

Weekend 2

To this point, I had been loading Quake in Steam and starting a local LAN game just to jump in and see if bugs were being fixed. This works to a point, but what we really need to be doing is trying this on an actual server and connecting with the QuakeWorld client as that is how the game would actually be played.

To do this, I would need to set up a basic server that runs Meta and connect to that using QuakeWorld (which also comes with the Steam version of Quake).

This was initially difficult to get going. I tried to run this locally using both pre-packaged server and one that came setup for Docker. In neither case could I get it working as I could not get my router (Comcast, blergh) to port forward UDP traffic in the range that Quake server runs on.

The only option I could think of was to head to AWS.

Amazon EC2 Quake Server

I figured I didn't need anything fancy, just a simple Linux server. This was pretty easy to get running by picking a t2.medium EC2 and locking any traffic out except SSH from my IP, or UDP on 26000-29000 from the world.

Here though I hit a bit of a wall. I couldn't just run Quake as-is there, with the Windows version anyway. I had to do some reading about how people ran Quake on Linux servers. 

I wound up finding my way back to nquake.com and putting the Linux server version on the EC2. I grabbed the release of Meta from my repository and put it in the right place on the server.

From here it was a few hours of trial and error to figure out how to get the files from nQuake to run a server with Meta without using any of the new frills added in nQuake itself. I was able to piece together how to do this from reviewing various shell scripts that generated servers and games and extracting out just the parts I needed, which I then documented.

By the end of the night, I had a server running and was able to connect! This was exciting, being just a few steps away from some old school Meta Quake games.

Some really difficult bugs produced themselves at this point though after connecting to the game, which nearly brought the whole effort to a halt. Those will be covered in the finale!