The Doomsday Engine is a “source port” of id Software's Doom and Raven Software's Heretic and Hexen, which were popular PC FPS games in the early-to-mid 1990s. Doomsday enhances these classic games with many features including 3D graphics, fully customizable controls and client/server multiplayer, making them more accessible to modern gamers. However, the feel of the original games has been kept intact, ensuring sublime nostalgia or an exciting introduction to the pioneering games of the genre.
Doomsday and the associated ports of Doom, Heretic and Hexen have been in development since 1999; the first versions were released in late 1999 and early 2000. Several people have been involved in the project (see Acknowledgements).
User interface:
Graphics:
Resources:
Audio:
Multiplayer:
Other:
Doomsday requires IWAD files to run games. You can use the following ways to let the engine know where your IWADs can be found:
-iwad
command-line option. You can either provide the path to the IWAD to use, or the path of the directory under which IWADs are located. Doomsday will look through the specified location and use all the recognized IWADs automatically. In other words, you can have the IWADs for all games stored in a single directory; Doomsday will use the appropriate one for each launched game. -iwad
will also accept multiple paths as parameters:-iwad path1 path2
iwaddir
(see Files).Config.resource.packageFolder
. This is typically set automatically via the user interface, for instance when you first start Doomsday. Its value can also be manipulated in the Doomsday Script command prompt. (The variable Config.resource.recursedFolders
determines if subdirectories should be searched.)Doomsday tries to recognize IWAD files based on their contents. The identification criteria can be viewed in GitHub.
One game plugin, such as the Doom Plugin, is able to run many different variants of the game. Each variant emulates a specific version of the original game and typically has its own IWAD file.
Below is a list of all the games supported by the game plugins distributed with Doomsday.
Plugin | Game ID | Description |
---|---|---|
Doom | doom1-share | Shareware Doom v1.9 |
doom1 | Registered Doom v1.9 | |
doom1-ultimate | Ultimate Doom* | |
doom2 | Doom 2 | |
doom2-plut | Final Doom: Plutonia Experiment | |
doom2-tnt | Final Doom: TNT Evilution | |
chex | Chex Quest | |
hacx | HacX | |
doom1-freedoom | Freedoom Phase 1 | |
doom2-freedoom | Freedoom Phase 2 | |
doom1-bfg | Ultimate Doom (Doom 3 BFG Edition) | |
doom2-bfg | Doom 2 (Doom 3 BFG Edition) | |
doom2-nerve | No Rest for the Living | |
Heretic | heretic-share | Shareware Heretic |
heretic | Registered Heretic | |
heretic-ext | Heretic: Shadow of the Serpent Riders** | |
Hexen | hexen | Hexen v1.1 |
hexen-v10 | Hexen v1.0 | |
hexen-dk | Hexen: Death Kings of Dark Citadel | |
hexen-demo | The 4-level Hexen Demo |
* = has a 4th episode
** = has episodes 4 and 5
The Home screen in Doomsday 2 is a full replacement for the separate front-end application that was used in earlier versions. In Home you can manage your game library, resource packs and other add-ons, and join multiplayer games.
Home consists of a number of scrollable tabs. There are several ways to navigate between tabs:
The game library lists all the available games and their associated save files. Each game can be configured to load additional mods (WADs, PK3s, data files, resource packs). You can also add new customized games based on one of the built-in games.
In User Interface settings you can hide entire game tabs, if you are not interested in a particular family of games. See Configuration for more details.
Sorting games in the library. If you have lots of games available, it may be helpful to change the game library view options so you can more easily find the game you are looking for. Click on the “…” button under the tab title to see the view options.
Starting a game with or without additional mods. Click on a game to select it, or move the selection with the arrow keys. When selected, Mods and Play buttons slide in. The Mods button shows a number for how many additional mods have been selected for loading. Click Play or double-click the game to start the game.
Selecting mods. Click the game's Mods button to choose which additional mods are going to be loaded when the game is started. On the left side of the dialog, you have a list of the mods selected for loading. On the right, you can browse the available mods. The mods browser works similarly to the Mods tab, and it has a search field and Info buttons (see Mods). To add a mod to the game, click the Plus button or double-click the mod.
Loading a saved game. All saved games are listed below the game they were created in. Click on a save to select it, and then press the game's Play button. Clicking on an already selected save will unselect it.
Savegame information. Right-click on a saved game to see information about the save: which data files and mods were in use, the overall game parameteres, current map, and other status information.
Deleting a saved game. When a savegame is selected, a small X button appears next to it. Clicking the X lets you delete the save.
Save folders. Each game is assigned a unique save folder where all the save files of the game are kept. Right-click on a profile and select “Show Save Folder” to open the folder in Finder. Note that custom games created in version 2.0 or earlier share a save folder with the built-in game. You can use the “Create New Save Folder” menu item to create a new save folder for the custom game, but you will need to manually move the existing save files over there.
Creating a custom game. At the bottom of each game tab, there is a Plus button that creates a new customized game. In the game settings, you can choose which game mode will be used, and which mods are selected for loading. Note that game cannot have a name that is identical to an already existing game in the library.
Duplicate, edit, and delete games. Any game can be duplicated by right-clicking on it and selecting “Duplicate”. Games can also be edited to change their name, the primary data file (IWAD), and the set of selected mods.
The Mods tab is used to browse the available mods and other packages. The Mods tab shows all the data files that Doomsday knows about. You can also quickly try out individual mods in one your games.
Configuring the mod search folders. To let Doomsday know where your mods can be found, either select “Settings” in the Mods tab's actions menu (the “…” button under the tab title), or go to Data Files settings (see Configuration). The mods will not be copied or moved from wherever you keep them.
Browsing mods. The mods list may contains hundreds of items, so you may want to find the mods you're looking for by entering some search terms. Enter the words to search for in the search field at the top of the list. The search is limited to metadata; the actual file contents are not accessed. When entering multiple words, only mods whose metadata contains all the words are shown.
Special search keywords. Some search words have a special meaning:
Viewing information about a mod. Right-click a mod or click on the “…” button to view information about it. In the case of WAD files, all the maps in the WAD are listed so you'll know which map to start when playing. The info popup also shows the game title picture found in the mod, and readme notes provided by the author. In some cases, Doomsday can make a guess about the game that the mod is meant to be used with.
Quickly trying out a mod. One of the most useful features of the Mods tab is quickly loading a mod in one your games. This will make no changes to your existing games. Simply open the mod info popup (as explained above) and click on “Play in…”. However, you should first check that the mod actually is compatible with the game you are playing. Also be aware that if you are already running a game, it will be unloaded first and any unsaved progress will be lost.
Quickly adding a mod to a game. The “Add to…” button in the mod info popup will add the mod to one of your existing games. The games that already have the mod are tagged “ADDED” in the list.
Configuring optional contents. Some mods have optional subcomponents. For instance, add-ons that use the Snowberry Box format may include both opt-in and opt-out mods. When viewing information about this kind of collections, an additional “Options” button is shown in the mod info popup. This will let you enable or disable individual contained mods.
The Multiplayer tab lists multiplayer games that you can join. Servers on the local network are discovered automatically and are visible immediately in the Multiplayer games list. The dengine.net master server is also automatically queried for any public servers.
Viewing server information. Right-click a server in the list to view information about it. The same popup can be opened by clicking the small “…” button in the server description. The status information includes:
Joining a game. Join an open multiplayer game by clicking “Join” either in the server list or in the server information popup. Any missing mods are downloaded automatically after you click the button.
Player name and color. When a game is running (after joining a multiplayer game or also in single-player), go to the game's “Options” menu and select “Player Setup”. In this menu you can change your multiplayer name, player color, and (in Hexen) player class. Note that this is the game's own menu and not part of Doomsday's UI.
Connecting to a non-public server. To connect to a server that is not announced to the master server, select “Connect to Server…” in the Multiplayer tab's actions menu (“…” under the tab title), and enter the server's IP address or domain name.
Failure to connect? Connectivity problems can also be due to your firewall or network address translation (NAT). Doomsday uses TCP network connections for multiplayer games. If you host a game and are behind a firewall or using NAT, you must make sure that other computers are able to open TCP connections to your computer. This entails opening the appropriate incoming TCP ports on your firewall and/or configuring the NAT so that the correct ports are routed to your computer.
Additionally, UDP ports 13209-13224 are used for detecting servers running on the local network; if you are experiencing problems with autodetecting local servers, check that your firewall isn't blocking these UDP ports on either end.
A server opens one TCP port for listening to incoming connections. The port must be open for incoming TCP traffic in the firewall. The port number is configured with the console variable net-ip-port
. By default, a server uses TCP port 13209.
Clients do not require any firewall configuration for incoming connections. A client only needs to be able to reach the server via the server's TCP port.
You can see status information about the network subsystem with the console command:
net info
Hosting a game. Use Doomsday Shell to host a multiplayer game of your own. The Shell allows you to start, stop, and control Doomsday multiplayer servers. This includes both your own local servers and remote servers on the internet.
doomsday-server runs in a background process and has no UI of its own. The Shell provides a couple of basic game options that you can change via the GUI. For example, you can choose between Deatchmatch and Co-op mode, change the current map, and enable or disable monsters. The full set of console variables can be modified via the Console tab (text-mode command line interface).
If your server is not public (i.e., announced to the master server), a client can connect to it manually using the IP address or domain name.
For more information about the Shell, see Shell Help in the wiki.
The task bar is a central element of Doomsday's UI. It is available at all times and provides access to key features of the engine. For example, you can modify configuration settings, show the Home screen, and unload the current game.
You can show the task bar by pressing Shift + Esc.
The rightmost button in the task bar (with the DE logo) opens the Doomsday app menu.
Tutorial. The first-run tutorial points out the basic features of Doomsday's UI. It is only shown once, but you can manually show it again by selecting “Help: Show Tutorial”.
Browsing and loading mods. “Browse Mods…” opens the mod browser in a sidebar where mods can be loaded and unloaded manually. You can also view information about mods like in the Home screen. The sidebar is only available when a game is loaded. You can use the “loaded” keyword to filter the list so that only the currently loaded mods are listed.
Checking for updates. Doomsday queries the dengine.net website to see if there are newer builds and shows a notification when updates are available. You can always also do a manual update check by selecting “Check for Updates”.
Clearing the resource cache. Some resources and metadata get cached for later access. This allows Doomsday to load the resources faster and operate more efficiently. Usually it is unnecessary to clear the cache manually. See Files for the cache's location.
The task bar's Gear button opens the configuration menu. This is where the majority of Doomsday's settings can be viewed and changed. Some of the settings are only available when a game is loaded (“Input”, for instance).
Reset to defaults and advanced settings. Many settings dialogs have a “Reset to Defaults” button. This affects only the settings in that one particular dialog. Sometimes a Gauge button is also available. It is reserved for advanced settings that are useful for developers and modding.
Renderer settings. Most of the renderer settings are managed via appearance profiles. This makes it easy to select one of the presets, such as a vanilla look or more exaggerated effects. The dialog has a couple of general settings in addition to the active appearance profile. The “Pixel Density” slider is particularly useful as it allows improving rendering performance and achieving a more pixelated, 1990s VGA-style look. The selected appearance profile applies to all games.
Some resource packs with high-resolution textures are intended to be used with the unmodified original games. However, a PWAD file may replace some of the textures with custom ones. The “External Images” options allow you to control when external images are actually enabled if the resource packs in use aren't compatible with the loaded PWADs.
Renderer appearance sidebar. Click the Gear button next to the selected renderer appearance profile and select “Edit” or “View” to open the appearance sidebar. Alternatively you can open the sidebar with the rendedit
console command. Individual settings groups can be folded and unfolded by clicking on the group titles. You can continue playing the game while the sidebar is visible. When you're done, dismiss the sidebar with the X button in the top right corner.
Video aspect ratios. In addition to basic game window parameters, the Video settings dialog has a set of aspect ratio options. These control the aspect ratios applied to specific elements in the game:
Audio backend. Audio output capabilities vary based on operating system and audio hardware. Doomsday's audio backend can be configured according to your needs primarily via the selection of audio interface plugins. The recommendation on all platforms is FMOD for sound effects and FluidSynth for music, because these two enable software-based rendering of both 3D sound effects and MIDI music. Some of the audio options are dependent on the active audio plugins. For example, a MIDI sound font is supported by the FMOD and FluidSynth plugins. 3D sound and reverb are supported by FMOD, OpenAL, and DirectSound. The audio backend can be reconfigured on the fly; any changes are applied when you press the “Apply” button.
Game controllers. Doomsday comes with a few preset bindings for different gamepads. To use one of the presets, click on the “Game Controller Preset” button and select a suitable one. Then click “Apply” to erase all your existing game controller bindings and activate the ones in the preset. You can still manually edit the bindings in the game's “Options” menu.
Mouse input settings. The “Sync Axis Sensitivities” option will ensure that mouse sensitivity is the same in both the horizontal and vertical directions.
Minimizing mouse latency. The default input settings try to replicate the feel of the original 35 Hz input events of Doom. However, when the screen is actually refreshed at a higher rate, this may feel distractingly laggy. The 35 Hz limiter can be disabled in the advanced input settings (click the Gauge button). This will minimize mouse input latency as much as possible. You may additionally want to disable mouse filtering by toggling the “Filter X Axis” and “Filter Y Axis” options.
Local multiplayer mods. By default, clients are not allowed to load mods in addition to what the server is using. This avoids any potential compatibility issues with the client's mods overriding some of the game's definitions. However, you can manually enable local mods in Network settings. You can then select additional local mods for multiplayer games in the server information popup before joining the game.
User Interface settings. The “Scale” setting applies to the Doomsday UI only, and adjusts the overall size of UI elements and fonts. Lowering the UI scaling may be helpful for example when using a very low display resolution. In the Home screen there will be more tabs visible at the same time when using a smaller UI scale.
Updater settings. The Updater settings determine when Doomsday will check for available updates. When an update is downloaded, it is saved to ~/Library/Caches/Deng Team/Doomsday Engine/ .
The log message history panel slides in from the left edge of the view. When visible, you can drag its right edge to resize it.
The leftmost button in the task bar opens the log options menu:
The middle of the task bar is occupied by a command prompt text field. Here you can enter console commands and modify console variables manually. This is typically most useful for developers, modders, and other advanced users.
Console basics. Type help
to get started. This prints some basic information about how to use the console, and commands for listing all the available console commands and variables. At any time, press Tab to autocomplete the word being typed. This will pop up a list of all possible completions, including the current values for any variables. You can change console variable values as follows:
rend-camera-fov 110
Shortcut key. You should set up a console shortcut key if you find yourself going to the console often. The shortcut defaults to Tilde (U.S. keyboard) but you can choose your own shortcut key by clicking the “>” button next to the command prompt.
Interactive Doomsday Script prompt. Doomsday Script is a fully-fledged Python/Ruby-like scripting language built into Doomsday 2. While it doesn't yet allow full access to all engine features, it is being improved in each release. The command prompt can be switched to Doomsday Script mode by right-clicking the “>” prompt menu button. Everything entered into the command prompt is then run as Doomsday Script. This mode is intended only for developers.
It is possible to launch Doomsday directly from the command line. If all data files can be found under the default directories, the engine should be able to launch itself without further assistance. If not, command line options must be used to configure data file locations and other settings.
Doomsday.app/Contents/MacOS/Doomsday [options]
Everything following –
is ignored. @
can be used to specify a response file whose contents are added to the command line.
-file
| -f
-game
option, the specified files will be loaded at startup. Without -game
they are just registered as available files that can then be loaded in games. It is also possible to load data files at runtime by opening the Packages sidebar (see Task Bar) or with the load
console command.-game
| -g
-game doom1-ultimate
-h
| -?
| –help
-iwad
-version
-wnd
| -window
-wh
-center
-command
| -cmd
-game
), your values will be overwritten when a game plugin is loaded.-connect
connect
.-devlog
| -nodevlog
-errors
-errors errors.out
-fullscreen
| -nofullscreen
-icd
| -imusic
| -isfx
-fontsize
-fontsize 1.5
-loglevel
-maximize
| -nomaximize
-noaudio
-noautoselect
-game
is not used. Doomsday will always start in the Home screen or, when starting a server, not at all.-nodiscovery
-nofsaa
-nogog
-nojoy
-nomouse
-nomusic
-nosfx
-nosteam
-novsync
-out
-parse
| -p
-command
with the exception that the commands are loaded from a file.-packs
-iwad
.-pkg
-game
option is used to launch directly into a game.-reset
-verbose
| -v
-vvv
-warp
-game
, automatically also jump to a specific map. The map can be specified either as the map number, a pair of numbers (episode and map), or the map identifier (e.g., “MAP12”). Your runtime files (savegames, screenshots) are inside a folder called ~/Library/Application Support/Doomsday Engine/ .
-game
option.basedir
, libdir
, iwaddir
). The syntax of the file is documented in the wiki. The following environment variables are recognized by Doomsday.
Doomsday remains a work in progress so there usually is a number of bugs and known issues.
Additional documentation is available in the Doomsday Manual.
id Software created DOOM and then released its source code.
Raven Software created Heretic and Hexen and released their source code.
Andrew Apted wrote glBSP.
Christopher Bruns contributed code for supporting VR rendering with Oculus Rift.
Dave Gardner maintains of high-resolution texture packs and creates 3D models.
Roman Hargrave has been cleaning up the Doom64 Plugin.
Graham Jackson helped with the source code, fixed Doom bugs and did a lot of testing.
David Jarvis did early network testing with jDoom and jHeretic and generously contributed essential computer hardware components.
Kees Meijs packaged Doomsday for Debian and hosted an Apt repository of Debian packages.
Daniel Swanson is a developer in the Deng Team, original author of the dengine.net website backend, and former maintainer of the jDoom Resource Pack.
Vermil regularly provides in-depth feedback and bug reports and is an expert in all things related to DOOM-based games.
Jaakko Keränen created the Doomsday Engine and is the lead developer of the project.