A few days ago, I was reminiscing about the days when I had little responsibility and had a lot of time to play games. One of my most favorite games was Quake I. A few of my friends in high school worked at a local ISP and their employer let them set up a Quakeworld server for them and luckily their friends to play each other. Quake was new to me, but my friends were seasoned veterans. They kicked me and my brother’s ass daily. Despite sucking at the game we kept at it and eventually something clicked. We started blowing everyone away and became addicted to the game through the domination of our friends. Fast forward several years and now Quake is open source due to a gracious Christmas present to the world from John Carmack. There are open source versions of the game with updated textures and lighting effects, but the one thing that has remained the same is the gameplay. I decided that I wanted to start up a Quake server and get my old group of friends together for some deathmatch. Here is my guide for easy, trouble free server setup under Linux.
What you will need:
- Linux server with ssh and screen installed
- MVDSV Quakeworld server (v 0.29 at time of writing)
mvdsv_0.29-glibc_2.3.5.tar.gz from http://qw-dev.net/projects/mvdsv/
- Pak0.pak and Pak1.pak from the original Quake CD
- id Software’s original Quakeworld server package
Step 1: Prepare the server
The first thing you’ll want to do is get your server ready. I like Ubuntu, so I’m going to write these instructions based on how I set it up on that distribution. When I installed Linux, I selected SSH from the menu that asks what services I want to install. Once you’re logged into your server, go ahead and get screen installed.
admin@quake:~$ sudo apt-get update
admin@quake:~$ sudo apt-get install screen
Next you’ll probably want to create a separate user to run the quake server from. Here, I am making a user named quake:
admin@quake:~$ sudo mkdir /home/quake
admin@quake:~$ sudo useradd -d /home/quake -g users -s /bin/bash quake
admin@quake:~$ sudo chown -R quake.users /home/quake
admin@quake:~$ sudo passwd quake
Step 2: Setup MVDSV
Next you’ll want to log on as the new user you created to run the service under create a directory to hold everything and grab the MVDSV server binary and the original quakeworld server from id Software. After that, you can extract the files you downloaded and then clean up a few things.
quake@quake:~$ mkdir quake1
quake@quake:~$ cd quake1
quake@quake:~/quake1$ wget http://qw-dev.net/attachments/download/200/mvdsv_0.29-glibc_2.3.5.tar.gz
quake@quake:~/quake1$ wget ftp://ftp.idsoftware.com/idstuff/quakeworld/unix/qwsv-2.30-i386-unknown-linux2.0.tar.gz
quake@quake:~/quake1$ tar -zxvf mvdsv_0.29-glibc_2.3.5.tar.gz
quake@quake:~/quake1$ tar -zxvf qwsv-2.30-i386-unknown-linux2.0.tar.gz
quake@quake:~/quake1$ rm qwsv
quake@quake:~/quake1$ rm README.qwsv
quake@quake:~/quake1$ rm mvdsv_0.29-glibc_2.3.5.tar.gz
quake@quake:~/quake1$ rm qwsv-2.30-i386-unknown-linux2.0.tar.gz
After that is done you’ll need to create a directory to hold the .pak files and send them up to the server. Since I have a MacBook Pro, I use scp, but ftp works just as well.
quake@quake:~/quake$ mkdir id1
From Terminal on the MacBook (substitute the proper IP address of your server in after the @ sign):
me@MacBook:~$ scp pak0.pak email@example.com:/home/quake/quake1/id1/
me@MacBook:~$ scp pak1.pak firstname.lastname@example.org:/home/quake/quake1/id1/
Step 3: Config file and startup script
We are almost done! We need to create a server configuration file so we can define some rules on the server. There are tons of tutorials on all of the available settings all over the Internet, so I won’t go into all of that. Create a file called server.cfg in the /home/quake1/id1 directory and paste this into it to get started with basic deathmatch.
quake@quake:~/quake1/id1$ pico server.cfg
hostname “Your Quake DM Server”
serverinfo admin “email@example.com”
serverinfo url “http://www.yourwebsite.com”
floodprot 4 8 30
floodprotmsg “You have activated the flood protection and will be silenced for 30 seconds”
Lastly, you need to create a startup script that starts a new screen session, starts the server, and detaches the session so you can log out of ssh and leave the server running. You can log in and restore the session if you need to stop the server and restart it later.
quake@quake:~/quake1$ pico start-qw
echo Running server qw-dm
screen -A -m -d -S qw-dm ./mvdsv
quake@quake:~/quake1$ chmod 755 start-qw
Running server qw-dm
To reattach to the session type the following:
quake@quake:~$ screen -list
There are screens on:
9101.qw-dm (06/14/2011 08:15:42 PM) (Detached)
1 Sockets in /var/run/screen/S-quake.
quake@quake:~$ screen -r qw-dm
If you want to re-detach from the qw-dm screen and go back to your original ssh session, press CTRL-A D.
That’s it! You should now have a fully functional Quake Deathmatch server. I hope it provides you and your friends with hours of fun!