Doom Server on Raspberry Pi
The Quake On LAN team are very excited to announce Doom On LAN – something that has been on the “to do” list for a very long time now!
In 1994, Doom‘s multiplayer functionality was greatly improved by the release of Doom II, including “out of the box” support for a vastly increased number of dial-up modems. The two player dial-up connection allowed one player to dial in to the other player’s computer in order to play either cooperatively or in deathmatch style combat (trust me, this was a HUGE deal). There was also LAN functionality added, which was improved upon as patches and updates were released. This functionality was later incorporated back into the original Doom. As with the original Doom, multiplayer games used to be played using the dial-up or LAN by the internal setup program (setup.exe), through the online service DWANGO or with once popular programs like Kali and Kahn (using SPX) in Windows 95.
Nowadays, Doom II can be played on nearly ANY platform on multiple devices using third party source ports such as Odamex, ZDaemon or Zandronum – the last which we used to create our latest image.
Basically we used these instructions to compile the server binary on Raspbian and then added our own little details (startup script, communication with website etc). You could do it yourself, for example if you wanted to use a different wad file or enable co-op mode instead. For the curious among you, the compile instructions boil down to the following 9 commands, with the output being the zandronum-server binary that you should then move to a directory along with pk3 files, your own wad file(s), a server config file and anything else your server requires:
sudo apt-get install build-essential zlib1g-dev libsdl1.2-dev libjpeg-dev nasm tar libbz2-dev libgtk2.0-dev cmake mercurial libfluidsynth-dev libgl1-mesa-dev libssl-dev mkdir $HOME/zandronum-build && cd $HOME/zandronum-build hg clone https://bitbucket.org/Torr_Samaho/zandronum cd zandronum hg update -cr "max(tagged())" wget -O raspi.patch "https://gist.githubusercontent.com/csnxs/0e4ce613a5d1736ead593500ca5a9df0/raw/330a41c796bdca88b5040bedf9e6a568ec567e7f/-" && hg import --no-commit raspi.patch && rm raspi.patch mkdir buildserver && cd buildserver make clean; cmake -DCMAKE_BUILD_TYPE=Release -DSERVERONLY=ON -DNO_ASM=1 .. make -j$(nproc)
The whole process went without a hitch (well, almost. We did manage to corrupt the master image at one point and had to start over. Have you any idea how long it takes to compile on a Raspberry Pi?!!). We do these things to you don’t have to! If you’re looking for a copy of the compiled binary, you can grab it here.
Now simply follow the below instructions to get your own classic Doom server up and running in no time.
- First download the zip file (see below) containing the SD Card image
- Transfer the image to an SD Card (minimum size 2 GB) in the usual manner (eg. dd command on Linux and OSX, Win32DiskImager on Windows). We’ve discovered some 2 GB cards throw an error with this image, so if you have a larger card, use it instead.
- Insert the card into an unpowered Raspberry Pi unit
- Connect the RPi first by ethernet cable to your router, then to the RPi Power Supply (you do not need a monitor, keyboard or mouse) so it boots
- After about 2 minutes, scan your LAN to see the IP address of the new server
- Start your Zandronum client (ensuring you have doom2.wad in the correct location, most likely the game dir) and use the ingame console (¬ key) to type the connect command, specifying the IP address returned by the scan
- That’s it! Get some buddies on the same network to join the game in the same way
- Have fun!