Note: Zandronum with Doomseeker-zandronum works well on Precise Pangolin 12.04 LTS or later.
Skulltag is an updated version of ZDoom that includes network play. It is now known as Zandronum. See the Zandronum wiki for simple (K)Ubuntu installation instructions. (You can use the Freedoom Iwad (see below) if you don't have an original Doom2.wad.) Note: Most of the modules require dependencies from the Universe repositories. Make sure you have the Universe repositories enabled (Package Manager -> Settings -> Configure Software Sources -> Community-maintained free and open-source software (universe) -> (ticked)).
- Add the skulltag repositories, update, and install Zandronum and DoomSeeker (the Zandronum online server utility):
echo "deb http://debian.drdteam.org/ stable multiverse" | sudo tee /etc/apt/sources.list.d/zandronum.list sudo apt-get update sudo apt-get install zandronum doomseeker-zandronum
- If you don't have a doom2.wad, tnt.wad, or plutonia.wad already, you can copy the freedoom.wad to your ~/wads folder:
mkdir ~/wads cd ~/wads wget http://savannah.nongnu.org/download/freedoom/freedoom-iwad/freedoom-iwad-latest.zip unzip freedoom-iwad-latest.zip cp freedoom*/doom2.wad . rm freedoom-iwad-latest.zip
- Configure Doomseeker to use the ~/wads directory for IWADS and PWADS.
- If you wish to use Midi for sound (optional), install some prerequisites :
sudo apt-get install timidity timidity-interfaces-extra
- When upgrading from Skulltag to Zandronum, I could not get anything to work with the original Doomseeker configuration files from Skulltag. I therefore erased the original Doomseeker folder (~/.doomseeker) prior to installing Zandronum and Doomseeker-zandronum. A new Doomseeker configuration file was then installed and everything worked without problems.
- If you receive this error (I did not) when running for the first time :
skulltag: error while loading shared libraries: libsnes_spc.so: cannot open shared object file: No such file or directory
then copy libsnes_spc.so from the skulltag directory to /usr/lib/ :
sudo cp libsnes_spc.so /usr/lib
Zandronum/Skulltag MIDI sound options can be set to OPL Synth Emulation (recommended), Timidity, or FMOD. (I have never been able to get FMOD to work.) On my (K)Ubuntu system, OPL Synth Emulation is already installed. Select the sound server:
- Zandronum/Skulltag -> ESC -> Options -> Sound Options -> MIDI Device -> OPL Synth Emulation
If you wish to use the Timidity (MIDI) sound system instead, then prior to starting Zandronum/Skulltag (and selecting the sound options), install:
sudo apt-get install timidity timidity-interfaces-extra
- FMOD is not installed by default in (K)Ubuntu. If you wish to use FMOD for MIDI, then download the appropriate version for your Linux OS here and install the latest version (example is for a 64-bit OS):
wget http://www.fmod.org/index.php/release/version/fmodapi44000linux64.tar.gz tar -xvzf fmodapi44000linux64.tar.gz sudo cp fmodapi40000linux64/api/lib/libfmodex64-4.40.00.so /usr/lib/libfmodex64-4.40.00.so sudo ln -s /usr/lib/libfmodex64-4.40.00.so /usr/lib/libfmodex64.so
- (Obviously, use the 32-bit version if you have a 32-bit OS.)
- Set the sound options while running Zandronum/Skulltag to select your sound interface.
- Alternate instructions: If you receive the error
skulltag: error while loading shared libraries: libfmodex32-4.24.16.so: cannot open shared object file: No such file or directory
skulltag: error while loading shared libraries: libfmodex64-4.24.16.so: cannot open shared object file: No such file or directory
this means that you need to download and install FMOD manually. From my experience, Skulltag just ignores the .so files provided in the skulltag directory. It's easy to fix.
- Download one of these:
- Extract to a directory somewhere, and in a command-line terminal navigate to that directory (using cd), where there should be a file named "makefile," and "make" the package:
sudo make install
This installs FMOD to /usr/local/lib.
- Change to the directory (within the extracted file) /api/lib/
- Skulltag will only work on ubuntu if libfmodex-4.24.16.so (libfmodex64-4.24.16.so for 64 bit linux) is in /usr/lib/:
sudo cp /usr/local/lib/libfmodex64-4.24.16.so /usr/lib/
sudo cp /usr/local/lib/libfmodex-4.24.16.so /usr/lib/
- Then link the specific files to the generic file:
sudo ln -s /usr/lib/libfmodex64-4.24.16.so /usr/lib/libfmodex64.so sudo ln -s /usr/local/lib/libfmodex64-4.24.16.so /usr/local/lib/libfmodex64.so
- If you receive an error about LibSDL, then be sure it is installed:
sudo apt-get install libsdl-image1.2
Longtime Doom players may already have a collection of wads. If you have all your wads in a single directory (like I do), you must set Doomseeker to look in that directory for wads. For example, my wads are in /home/mainuser/wads, so I set Doomseeker:
- Doomseeker -> Options -> Configure -> File paths -> Add -> /home/mainuser/wads -> Ok
I also like any new wads that are downloaded by Doomseeker (Wadseeker) to be stored in the same directory:
- Doomseeker -> Options -> Configure -> Wadseeker -> General -> Directory where Wadseeker will place the wads into: -> /home/mainuser/wads -> Ok
I happen to have stored my original doom2.wad, tnt.wad, and plutonia.wad in that directory already. The Freedoom wad could be copied (as doom2.wad) into this directory as well, if one of the original commercial wads are not available.
Firewall and Doomseeker
Doomseeker is the GUI that helps with online play. Skulltag has a centralized master website that keeps track of every hosted Skulltag server online. This master website uses port 15300, so this port must be open for outbound traffic in order to access the list.
- Firestarter -> Policy -> Editing: Outbound traffic policy -> Allow service: right-click -> Add rule -> Allow service: Port: 15300 -> When the source is: Firewall host -> Comment: Doomseeker master server comm port -> Add
When Doomseeker is now started, a list of servers will be displayed. However, the servers may all be using different ports for Skulltag, and the details will not appear. This is where a decision has to be made. If you want to be able to communicate with all the servers listed, you must open up all your outgoing ports, or at least a wide range of ports. If you want to communicate with only a select few servers, you can open only the ports they are using. Although Doomseeker servers generally use ports 10666 - 10800, there are many Skulltag servers that don't use Doomseeker, and they may use ports numbering anywhere from 7000 to 21000.
Opening your firewall is a security risk, of course, and the user must make the decision whether to open a wide range of ports or not. To open all outgoing ports (which is really the only way to easily access all the Skulltag servers) using Firestarter, change the outgoing policy to "permissive":
- Firestarter -> Policy -> Editing: Outbound traffic policy -> Permissive by default, blacklist traffic: (ticked)
This is effect opens up your system to all outgoing traffic, which is a security risk, somewhat. (Trojans and backdoor channels, if present on your computer for some reason, will then be free to communicate). Therefore, don't do this on a work computer or on a computer where sensitive data compromise might be a concern.
If you plan to only play on a few select servers (of friends, for example) and you know that their servers are hosted on, say, ports 10666 - 10700, then leave the policy set to "restrictive by default" and just open those ports, :
- Firestarter -> Policy -> Editing: Outbound traffic policy -> Restrictive by default, whitelist traffic: (ticked) -> Allow service: right-click -> Add rule -> Allow service: Port: 10666-10700 -> When the source is: Firewall host -> Comment: Skulltag servers -> Add
Hosting a Skulltag server
Installation of Skulltag includes installation of the server module, skulltag-server. Doomseeker provides a GUI interface that starts up skulltag-server, which is very convenient (Doomseeker -> File -> Create server).
- Using Doomseeker's Create server option, all the settings for your server can be set. The information will be sent to the Skulltag master server (over port 15300) and your server will then be listed there. When you refresh the Doomseeker server list, you should be able to find your server. You can then connect to it yourself and become a player.
- By default, Doomseeker creates your Skulltag server on port 10666. If you might be creating two servers, the second will be created on port 10667. Therefore, if you are on a LAN, you must forward these ports to your computer's LAN IP address (from your router). You must have access to your router to do this (and each router is different), so consult your router's guide.
- You can find out the local LAN IP address of your computer from a command-line interface terminal (such as Terminal in Ubuntu or Konsole) in Kubuntu) using the command:
- Set your router to forward ports 10666-10667 to your computer's local LAN IP address.
- Of course, your firewall must also allow incoming traffic on these ports. I use Firestarter to control my firewall (iptables). To open the incoming Skulltag server ports in the firewall:
- Firestarter -> Policy -> Editing: Inbound traffic policy -> Allow service: right-click -> Add rule -> Allow service: Port: 10666-10667 -> When the source is: Anyone -> Comment: Skulltag servers -> Add
wlan0 vs. eth0
Note: In the newest versions of Skulltag I no longer need to do interface bridging as described below.
When I set up my Skulltag server using version 0.98c, the skulltag-server module often tried to use eth0 (the wired NIC) as the primary communications port, even though I only connected to the LAN/internet over the wireless wlan0 port. This was unpredictable, as sometimes it attempted to use wlan0 and sometimes eth0, even though only wlan0 (the wireless port) was connected (eth0 was not connected, i.e. no wired connection).
The only way I found to work around this behavior was to bridge eth0 to wlan0, so that any traffic to eth0 was then sent over wlan0.
- To enable bridging, install bridge-utils:
sudo apt-get install bridge-utils
- Edit the network interfaces configuration file (use the gedit text editor instead of kate if using Ubuntu instead of Kubuntu):
sudo kate /etc/network/interfaces
- so that it resembles:
# The loopback network interface auto lo iface lo inet loopback # auto wlan0 iface wlan0 inet dhcp # bridge_ports wlan0 eth0
Then I restarted the networking (or rebooted):
sudo /etc/init.d/networking restart
This successfully bridged the eth0 port to the wlan0 port. Now when the Skulltag server started, it thinks it is hosting through the eth0 port but it is now actually hosted through the wlan0 port.
Storing your custom wads online
Ok, you have to be a Doom fanatic to build your own wads. But one of the advantages of Skulltag is that you can host a server using your own wads (for Deathmatch, Cooperative, or other team play). There are a few websites that will store your wads for you, and keep a large variety of wads available to be used for your own server. An easy one to use is FatHax. If you use FatHax (or any other wad site) for your wads, be sure to list it as the "URL" in your server, so that players attempting to play will be directed to that location to download wads.
- The current package of Doomseeker (0.8.1) available from the skulltag.net repository works fine for me.
- These instructions remain for reference only; they should not longer be needed. I was not able to get the Debian/Ubuntu package of Doomseeker 0.7-beta to work properly (even though Doomseeker 0.6 worked fine). (Multiple errors were returned that plugins were "not available" when using the package-installed binary at /usr/bin/doomseeker.)
I therefore installed the newest Subversion package of Doomseeker and compiled it manually instead, using the instructions here. This version of Doomseeker worked for me without problem.
- Updated specific instructions 3-1-2012:
- I downloaded the Doomseeker 0.8.1b + Wadseeker 0.7.1 tarball (doomseeker-0.8.1b_src.tar.bz2) from here and unpacked it.
wget http://doomseeker.drdteam.org/files/doomseeker-0.8.1b_src.tar.bz2 tar -xvjf doomseeker-0.8.1b_src.tar.bz2
- This extracted this version to the folder ~/doomseeker-0.8.1b_src.
- I then compiled it by hand using these instructions, specifically:
sudo apt-get install g++ cmake libqt4-dev mercurial zlib1g-dev libbz2-dev cd doomseeker-0.8.1b_src mkdir build cd build cmake .. make sudo make install
- It installs to the /usr/local/share/doomseeker folder with the binary at /usr/local/bin/doomseeker so that a menu item must be created with the command:
ZDoom and GZDoom
Both ZDoom and GZDoom (the OpenGL version of ZDoom) can be downloaded as packages from the Skulltag repository as well. After installing the Skulltag repository:
sudo apt-get install zdoom doomseeker doomseeker-zdaemon python-zdaemon
sudo apt-get install gzdoom doomseeker doomseeker-zdaemon python-zdaemon
- Midi sound is most easily enabled using OPL Synth Emulation:
- ZDoom -> ESC -> Options -> Sound -> Midi Device: OPL Synth Emulation