Old School Deathmatch with Doom I and II

Call of Duty and Battlefield are too new for you? – OK – How about playing some old school Doom I and Doom II Deathmatch with your Friends? Let’s build a dedicated Gaming Server on Raspberry Pi and Ubuntu Linux.

Requirements

This Tutorial is based on an Rasperry Pi 4 Installation with Ubuntu minimal Server 64 Bit – It should also work on other Debian based 64 Bit Distributions like Raspbian.

  • Rasbperry Pi 4 (Rapberry 3 should work too)
  • SD Card with installed Ubuntu or Raspbian 64 Bits
  • SSH Access
  • Remote File-Transfer Tool (i.e. WinSCP for Windows, or Cyberduck for MacOS)
  • A Copy of Doom 2 (I.e. GOG Version)

OS Preparation

Your System should be up to date:

Advertisements
sudo apt-get update
sudo apt-get upgrade

You’ll also need an editor – in this Tutorial we’ll use “nano“:

sudo apt-get install nano

Optional: Creating a User

To improve Security, i recommend to create a User with no Permissions – You can skip this Part if you like to run the Server with your own/current User – Hint: This user might also run our Deathmatch Server as Service if wanted in the Background.

sudo useradd -m -d /home/service-zandronum service-zandronum -s /bin/bash

We also add the User temporary to the “sudoers” Group

usermod -aG sudo service-zandronum

Set a password:

sudo passwd service-zandronum

Now we change our session user to “service-zandronum”

su service-zandronum
cd

Installation of required Components

We create a working Directory first and change to it:

cd
mkdir zandronum_install
cd zandronum_install

In my Ubuntu Installation, “libssl1.1_1.1.1” was needed – we download it from Ubuntu and install it:

wget http://ports.ubuntu.com/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.16_arm64.deb
sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2.16_arm64.deb

Also “ibsdl1.2” is necessary to be installed:

sudo apt-get install libsdl1.2debian

Zandronum Server Installation

Currently Version 3.1 of Zandronum Doom is the latest stable release. Client- and Server need to be the same Version – Let’s install this Version by following:

wget https://zandronum.com/downloads/zandronum3.1-linuxserver-armv8.tar.bz2

The Archive will be extracted to “opt/zandronum” by using:

sudo mkdir /opt/zandronum
sudo tar xfjv zandronum3.1-linuxserver-armv8.tar.bz2 -C /opt/zandronum

Let’s try to start the Server for the first Time:

cd /opt/zandronum-server 
./zandronum-server

You should see the following now, if everything went correct:

Zandronum 3.1 - 211211-2135 - SDL version
Compiled on Dec 12 2021

M_LoadDefaults: Load system defaults.
Gameinfo scan took 0 ms
Cannot find a game IWAD (doom.wad, doom2.wad, heretic.wad, etc.).
Did you install Zandronum properly? You can do either of the following:

1. Place one or more of these wads in ~/.config/zandronum/.
2. Edit your ~/.config/zandronum/zandronum.ini and add the directories of your
iwads to the list beneath [IWADSearch.Directories]

As you may notice, the Server can not start without a game IWAD or “.wad” -File. You’ll find these WAD-Files inside your Doom Game-Folder.

WAD-File Installation

As described before, grab your WAD-File – i.e. “doom.wad”, “doom2.wad” from your Doom I / Doom II Game-Folder. Transfer the WAD-File(s) via the SCP Tool of your Choice to your Server (i.e. Windows: WinSCP, MacOS: Cyberduck).

The WAD-Files need to be placed to the Folder “/home/username/.config/zandronum” – In this example, place the Files into:

/home/service-zandronum/.config/zandronum

Note: The Directory “.config” may be hidden, you can unhide it in your SCP Tool (In WinSCP: “Preferences>Panels”).

Deathmatch Maps

We need also some Deathmatch Maps – In this example we will use “dk_dm_pack” which is a Map-Pack, containing multiple Deathmatch Maps – Download it from “doomshack.org” and put it also into the “.config/zandronum” -Folder as you did before:

/home/service-zandronum/.config/zandronum

Server Config File

We will create a “.ini” File containing our basic Server Configuration. In this example, the Deathmatch Server will use the Doom 2 WAD File and our Deathmatch Pack

cd
nano -w .config/zandronum/doom2_dm.ini

Paste the following Config into the Editor, and change the bold Settings to your needs:

// Basic Settings
sv_hostname "servername"
sv_website "YourDomainOptional.tld"

// Password for remote Administration
sv_rconpassword "RemoteServerPassword"

// Game Mode
deathmatch 1

//# Allow Jumping
SV_AllowJump 1

// Weapon and Item Respawn
SV_itemrespawn true
SV_WeaponDrop 1
SV_NoArmor 0
SV_NoHealth 0
SV_NoItems 0

// Dont allow someone to Push the Exit for next Map
SV_NoExit 1

// Timelimit in Minutes and FragLimit until next Map
TimeLimit 10
FragLimit 30

// Allow vertical Shooting with BFG
SV_BFGFreeAim 1

// Random MapRotation
// sv_randommaprotation 1

// Disable Lump Protection
SV_PURE 0

// Disable Server Broadcast to keep it private
// If set to true, server will appear i.e. at http://doomlist.net/
sv_updatemaster false

// For all available Settings check 
// https://wiki.zandronum.com/Server_Variables

Inside the Editor “nano”, press [CTRL]+[x] and select [y] to exit and save the Configuration File.

Running the Server

We can now start the Server – Go back to the Binary Folder:

cd /opt/zandronum

We start now the Server, by providing the WADs and Config File which we installed before. Please note, we will also provide a Port on which the Server will be running – in this Case we will user Port 10666.

./zandronum-server +deathmatch 1 -iwad DOOM2.WAD -file dk_dm_pack.wad -port 10666 +exec doom2_dm.ini

The Server should be up and running now. You can stop it by typing “quit” or “exit”.

Connecting a Client

At this point, you should try to connect to your Server from a Zandronum Client – Provide the Server Information as Launch-Parameter. I.e.:

zandronum.exe -iwad DOOM2.WAD -file dk_dm_pack.wad -connect IP:PORT

Please note – you may need to open Port 10666 UDP on your Router, if you like to play over the Internet with your Friends.

Optional: Creating a Service

To keep the Server running in the Background and at startup, you can optional create a Service.

sudo nano -w /etc/systemd/system/zandronum_doom2_dm.service

Paste the following basic Configuration into the Editor. Change the Username and Home-Path (bold) to your needs if necessary:

[Unit]
Description=Zandronum Server
After=multi-user.target

[Service]
ExecStartPre=/bin/sleep 5
WorkingDirectory=/home/service-zandronum/.config/zandronum/
ExecStart=/opt/zandronum/zandronum-server +deathmatch 1 -iwad DOOM2.WAD -file dk_dm_pack.wad -port 10666 +exec doom2_dm.ini
Restart=always
User=service-zandronum

[Install]
WantedBy=multi-user.target

Add the Service to systemd now:

sudo systemctl enable zandronum_doom2_dm.service

Start the Service now by typing:

sudo systemctl start zandronum_doom2_dm.service

Optional: Removing Service-User from “sudoers” Group

If you created the User from the Introduction, you should remove the User from the “sudoers” Group now

sudo deluser service-zandronum sudo 

Optional: Disable Service-User from Shell-Access

You can also set the Users Shell to “/bin/false” to enable more Security – so the Service Account will no longer be able to login interactivly:

sudo usermod --shell /bin/false service-zandronum

Note: If you need to do any changes interactive, you can set the User back to Shell Access with:

sudo usermod --shell /bin/bash service-zandronum

Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments