The Funtoo Linux project has transitioned to "Hobby Mode" and this wiki is now read-only.
Doom
Playing Classic Doom on Funtoo
A big upgrade to Funtoo's Doom-playing ability has been merged into `next`!
This page will document how to use it.
Source ports
- games-engines/gzdoom: Good for playing single player.
- games-engines/odamex: Preferred for multiplayer; enables an Online Doom Advanced Multiplayer EXperience.
Game data
Doom data files are organized inside a type of archive called a WAD (pronounced like the word "wad") file. The term 'WAD' is an acronym representing "Where's All [the] Data?".
In order to play Doom with a Doom source port, a WAD file for the internal game data, called an IWAD, is required. Commercial IWADs for the original Doom games come with modern Doom games; so it's possible you have one already. See https://doomwiki.org/wiki/IWAD for reference.
Another way to acquire Classic Doom IWADs is to purchase them directly from Steam or GOG.
- The original Doom from 1993, containing four episodes each with eight maps: https://www.gog.com/en/game/doom_1993
- Doom II: https://www.gog.com/en/game/doom_ii
Most current-day maps and mods are based on the Doom II IWAD.
Doom source ports can be played without commercial IWADs by using Freedoom.
- https://freedoom.org
- games-fps/freedoom-data
Ebuilds that install free IWADs place them in `/usr/share/doom`. It is a good idea to place commercial IWADs there, too.
Maps
The commercial and free IWADs come with a lot of great maps. In addition, the community has been making Doom maps and mods for almost thirty years.
A selection of community-produced maps are available in Funtoo's tree. It is easy to add them, and Doom resources traditionally are distributed freely; so more can be made available directly in Funtoo upon request.
Eviternity was created as a 25th birthday gift to Doom and was released on Doom's 25th release anniversary. It's sequel, Eviternity II, coincided with Doom's 30th birthday.
- games-fps/eviternity
- games-fps/eviternity-ii
It is a good idea to put maps in their own directory, like `~/.local/share/games/doom/maps`. Ebuilds that install maps will add them to `/usr/share/doom`; this may change in the future to `/usr/share/games/doom/maps`.
Mods
Mods differ from maps in that they make use of features in a particular source port, rather than simply changing the game's internal data, or building something with components contained within it.
Most mods seem to work with GZDoom, so if you're interested in a particular mod, it's not a bad idea to start there.
One popular mod that introduces many modern game elements is Brutal Doom: https://www.moddb.com/mods/brutal-doom
DoomRunner
DoomRunner is a launcher that makes it easy to set up profiles for combinations of the various source ports, IWADs/PWADs, and mods. DoomRunner generates command line arguments for the source port, starts it, and offers a way to kill it if it misbehaves.
- games-util/doomrunner
Configuring DoomRunner involves first organizing your files into directories that make it easy to find your files. The recommended setup looks like this, with files stored in subdirectories under `~/.local/share/games/doom`:
$ ls ~/.local/share/games/doom maps mods
Various Doom-related ebuilds place files in `/usr/share/doom`
$ ls /usr/share/doom
Multiplayer
Note: It is strongly recommended that you ensure that you can play Doom in a single-player mode with your chosen source port before attempting to play multiplayer.
Odamex is the preferred multiplayer engine. It is very easy to get started with Odamex on Funtoo.
With Odamex
Operating a server
Useful resources:
Master servers
Odamex master servers listen on `15000/udp` and maintain lists of the servers that are up and running, including information like how many players are logged in. Server operators should set a few relevant variables in the `odasrv` config file that affect the server's appearance in the list.
The master server can be installed by setting `USE="master"` and re-installing `games-engines/odamex`.
Optionally using Docker
- Use `boxer` to build a simple Funtoo docker container from a stage3
- Use that container as a base image and install `odamex` with `USE="server"`
- Save the container as a new image
- Use `slim-toolkit` to minify the odasrv container
- Sample `docker-compose.yaml`:
- Execute like `docker compose up -d`
Don't forget to open the relevant ports on your firewall.
- `10666/udp` is the listening port
- `15000/udp` is used as an outgoing port to contact master servers
With GZDoom
It is possible to play small multiplayer games with GZDoom, e.g. on a local network with 2-4 players. Problematically, if one player disconnects, they can never rejoin the game again unless everyone else quits and starts over.
Music
Note: To make the MIDI music work in various sourceports, it is necessary to set USE="midi timidity" for `media-libs/sdl2-mixer`. Then remember to run `eselect timidity set 1`. The ebuild for `games-engines/odamex` will require this condition to be true.
Alternative soundfonts exist for Timidity. A great one that is freely available is `8MBGSFX`, obtainable from https://www.doomworld.com/idgames/utils/sound_edit/8mbgmpat. It works easily with a few steps:
- Extract the contents to `/usr/share/tinidity/8mbgsfx`.
- Change all the filenames to lowercase; they seem to come from a case-insensitive Windows system.
- Edit `/usr/share/timidity/8mbgsfx/timidity.cfg` and change the `dir` path to the right place on a Funtoo machine.
- From `/usr/share/timidity`:
$ sudo rm current $ sudo ln -sf /usr/share/timidity/8mbgsfx current
TODO: need to make an autogen for it to perform that procedure automatically