I have very clear memories of my uncle playing Doom II, back to when I was around five years old. Those were my first experiences with videogames, and I remember feeling mesmerized by thinking about the endless possibilities that virtual environments could bring to our consciousness. As a child, watching my uncle clumsily navigate through those demon-infested dark corridors was a thrill like no other. Eventually my family got its own computer, and I progressively dropped my Legos and replaced them with pixels. Much of my later childhood was spent exploring those virtual worlds. I have very fond memories in them, as vivid as my real ones, and it eventually motivated me to learn programming so that I could create my own worlds (more on that on some future post).
Sweet memories they are. Unfortunately I do not play much nowadays, since time becomes increasingly more precious, and unfinished projects keep accumulating on my back. There is one game though that I still play from time to time, and that is Doom, the game that started it all! In my estimation this title (Doom II actually) gets dangerously close to perfection: weapons, monsters, sound, ambience, gameplay, the feeling of loneliness and despair felt when trapped in those technological mazes, just perfect. But even more perfect is that thanks to the modding capabilities and the release of the source code, the Doom community has been releasing till today custom source ports and thousands of maps and mods in a neverending stream of pure epicness. I was once part of such community, unfortunately somebody stole my laptop and I lost all my backupless personal creations along. Only this video remains.
In today's tenth episode of these rambling explorations of my inner bedroom I'm bringing back my old Doom server Penumbra and show you how to set up your own one on a machine running Debian 10. We will be using the source port Zandronum, a multiplayer-focused port that concentrates most online game activity.
Install the required libraries (~280 MB):
sudo apt-get install adwaita-icon-theme at-spi2-core dconf-gsettings-backend \ dconf-service doomseeker doomseeker-zandronum fluid-soundfont-gm glib-networking \ glib-networking-common glib-networking-services gsettings-desktop-schemas \ gtk-update-icon-cache libao-common libao4 libatk-bridge2.0-0 libatk1.0-0 \ libatk1.0-data libatspi2.0-0 libcairo-gobject2 libcolord2 libdconf1 libdouble-conversion1 \ libegl-mesa0 libegl1 libepoxy0 libevdev2 libevent-2.1-6 libgbm1 libgnutls-dane0 \ libgtk-3-0 libgtk-3-bin libgtk-3-common libgudev-1.0-0 libinput-bin libinput10 \ libjson-glib-1.0-0 libjson-glib-1.0-common libmtdev1 libpcre2-16-0 libproxy1v5 \ libqt5core5a libqt5dbus5 libqt5gui5 libqt5multimedia5 libqt5network5 libqt5svg5 \ libqt5widgets5 libqt5xml5 librest-0.7-0 libsdl1.2debian libsoup-gnome2.4-1 libsoup2.4-1 \ libunbound8 libwacom-bin libwacom-common libwacom2 libwadseeker2 libwayland-server0 \ libxaw7 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0
Create a new folder for the program and go there. You can choose a different directory at your convenience.
mkdir /srv/zandronum cd /srv/zandronum
Download and uncompress the Linux binaries. The URL to the most recent version can be obtained here.
wget https://zandronum.com/downloads/zandronum3.0-linux-x86_64.tar.bz2 tar -xvjf zandronum3.0-linux-x86_64.tar.bz2 rm zandronum3.0-linux-x86_64.tar.bz2
Create a symbolic link to the libcrypto.so.1.0.0 file, which is no longer available as a package in Debian.
ln -s /srv/zandronum/libcrypto.so.1.0.0 /usr/lib/libcrypto.so.1.0.0
Change the binary file permissions to make it executable.
chmod o+x zandronum-server
If you are using a firewall such as ufw (you should!), decide which port you will be using for Zandronum and create a rule to allow it. The default one is 10666.
sudo ufw allow 10666
Create another directory to store the game content files called wads.
mkdir /home/doom cd /home/doom
I have prepared a tar file with the required game file doom2.wad plus a few mods and custom maps that we will now unpack, only for learning purposes of course. If you enjoy the game, consider purchasing one copy.
wget https://s3.eu-central-1.wasabisys.com/nexus/media/doom.tar tar -xvf doom.tar rm doom.tar
Last step also unpacked a config file that contains our server settings configured for a survival cooperative game limited to five lives. Make sure to edit the file to change these values.
# This is the server name that will be displayed in Doomseeker (https://doomseeker.drdteam.org/) sv_hostname "My cool server | Survival 5 lives" # # If you later expose your wad folder to the web, add its URL here # for other players to download the wad files directly from you sv_website "https://mycoolwebsite.com/wads" # # This text will be displayed on screen every time a player joins # It is formatted using colors: # https://yoni0505.blogspot.com/2012/10/zandronum-nametext-coloring.html sv_motd "\\ccWelcome to \\crmy server!\n\n\\crsurvival \\cc- \\cd5 lives" # # Remote connection password sv_rconpassword "myrconpassword"
Hit Ctrl + X, Y, ENTER to save and close.
Open a virtual terminal session so that we can later leave our server running.
Go to the program folder and launch zandronum-server on the port we previously selected linking the config and wad files.
cd /srv/zandronum ./zandronum-server -host -port 10666 -iwad /home/doom/doom2.wad -file /home/doom/hellbnd.zip \ -file /home/doom/brutalv21.pk3 -file /home/doom/HXRTCHUD_BD21t_v7.7e.pk3 +exec /home/doom/doom.cfg
Hit Ctrl + A and D to close the virtual terminal and leave our server running.
If we now open Doomseeker in our gaming rig we should be able to search for our server name and start playing! I hope this article is helpful to somebody. If you are interested in playing together, contact me on Mastodon and let's organize a session!
This was post #10 in the #100DaysToOffload challenge. As always, thank you for reading and see you next time.