Doomsday Engine

Introduction

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).

Features

User interface:

Home screen for choosing which game to play and which add-ons to use, browsing multiplayer games, and loading saved games

Requirements

At least one WAD file from the original Doom, Heretic, Hexen, or other supported game

Minimum OS version: Windows 7

DirectX 8 (or newer)

GPU with OpenGL 3.3 hardware acceleration

Games

Loading IWADs

Doomsday requires IWAD files to run games. You can use the following ways to let the engine know where your IWADs can be found:

The first time you launch Doomsday and it doesn't find any IWADs, it will show a tab titled “Data Files?” containing a single button. Clicking the button opens a file dialog where you can pick a folder where your IWAD files are located.

If you have Steam installed, Doomsday will automatically detect if you have purchased a compatible game and will access the IWAD files in the Steam games directories.

Using the -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.

The configuration variable 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.)

Supported games

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

Home Screen

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:

Game library

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.

Old savegames created with Doomsday 1.x do not contain information about which data files and mods were in use when the save was created, so Doomsday can't determine which game they belong to. Such saves are listed under each variant of the game.

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 Windows Explorer. 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.

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:

“gamedata”: Primary game data files (IWADs).

“hidden”: Only mods that are normally hidden will be shown. Mods that are hidden by default include, for example, mods inside other packages that will get automatically loaded.

“loaded”: Only show currently loaded mods. This is useful when browsing mods while playing a game.

“core”: Doomsday's own core packages. These will be automatically loaded as needed.

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.

Multiplayer

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:

ping time

which game and map is currently running

outline of the current map

list of mods loaded on the server

list of connected players

server version

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.

Task bar

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.

App menu

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.

Data from newly loaded mods may not be used until a new map is started in the game. Use of external textures can be enabled and disabled in Renderer settings.

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.

Configuration

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:

“Original 1:1”: The aspect ratio is exactly as in the original game.

“Smart”: The aspect ratio is dynamic but does not stretch too far away from the 1:1 ratio.

“Stretched”: The aspect ratio is unrestricted and adapts to window dimensions. Game elements may appear too wide or tall with this setting.

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 your temporary files folder.

Log history and log options menu

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:

Show Full Log

Expands the log history panel to its full size. When the task bar is open, pressing PageUp will also expand the panel size.

Close Log

Dismisses the log history panel.

Go to Latest

Scrolls the log history to the latest message.

Copy Path to Clipboard

Copies the doomsday.out file path to the system clipboard to make it easier to find the output file.

Clear Log

Deletes all log messages from memory. The doomsday.out file is unaffected.

Snap to Latest Entry

When this setting is enabled, new log entries will cause the history panel to scroll to the latest entry (bottom of the list).

Entry Metadata

When this setting is enabled, log entries will be prefixed with a timestamp and categorization symbols.

Log Filter & Alerts

Settings for filtering which log messages get printed. You can choose filtering options individually for each engine subsystem. Developer messages (“Dev”) are primarily intended for developers and debugging, so they are disabled by default. The “Alert” toggles cause warnings and errors to pop up in the notification area.

Command prompt

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.

Command line usage

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-iwad (dir) -game (id) -wnd-wh (w h) -file (file …)

Everything following – is ignored. @ can be used to specify a response file whose contents are added to the command line.

-file | -f

Specify one or more data files or packages (.pack , PK3, WAD, LMP) to load at startup. When used together with the -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

Sets the game to load after startup. If omitted, the Home screen will be shown after startup. See Games for a list of available games. For example: -game doom1-ultimate

-h | -? | –help

Prints a brief list of the command line options.

-iwad

Specifies a directory where to look for IWAD files. Searches for IWADs from all known games and automatically loads them when needed.

-version

Show version information.

-wnd | -window

Starts in windowed mode. The default is to start in fullscreen mode.

-wh

Sets the size of the Doomsday window. In fullscreen mode specifies which display resolution to use.

Additional options

-center

Center the window (when not in fullscreen mode).

-command | -cmd

Execute a console command during startup. Multiple commands can be joined together with semicolons. Note that console variables have game plugin specific values, so if you change cvar values using this option without loading a game (with -game), your values will be overwritten when a game plugin is loaded.

-connect

Attempts to connect to the server running at the given network address. Equivalent to the console command connect.

-devlog | -nodevlog

Enables or disables developer log entries. These are useful for debugging and/or troubleshooting, but are too verbose or technical for everyday use.

-dpi

Set the UI pixel density. The desktop UI scaling factor is automatically detected and used by Doomsday. This option will override it. For example: -dpi 2.0

-errors

Set the name of the error output file. The file is written to the runtime folder. This output file is created in addition to the usual doomsday.out . For example: -errors errors.out

-fullscreen | -nofullscreen

Enable or disable fullscreen mode.

-icd | -imusic | -isfx

Set the audio plugin for CD playback, music, and sound effects. The following plugins are available:

dummy

fmod

sdlmixer

openal

dsound

winmm

-fontsize

Set a scaling factor for UI fonts. This is applied separately from the overall UI scale setting (see Configuration). For example: -fontsize 1.5

Do not try to automatically select a game to load. Only has effect when -game is not used. Doomsday will always start in the Home screen or, when starting a server, not at all.

-nodiscovery

Disable discovery of servers on the local network.

-nofsaa

Disable antialiasing.

-nogog

Disable detection of games from GOG.

-nojoy

Disable gamepads and other game controllers.

-nomouse

Disable mouse input.

-nomusic

Disable music.

-nosfx

Disable sound effects.

-nosteam

Disable detection of games from Steam.

-novsync

Disable vsync.

-out

Set the name of the log output file. The file is always written to the runtime folder. This option overrides the default doomsday.out .

-parse | -p

Load and execute the specified file that contains console commands. Behavior is similar to -command with the exception that the commands are loaded from a file.

-packs

Set additional folders where to find packages. Works similar to -iwad.

-pkg

One or more identifiers of packages that are loaded when the -game option is used to launch directly into a game.

-reset

Reset the engine configuration to default values. In practice, this just erases the contents of the persist.pack file that stores configuration variables and UI state. The affected variables include, for example, game window size and position, and log filter settings.

-verbose | -v

Print verbose log messages. Specify more than once for extra verbosity.

-vvv

Enables all log messages (normal and developer, all levels).

-warp

When starting directly into a game using -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”).

-width | -height

Set the horizontal/vertical display resolution when in fullscreen mode.

Files

Your runtime files are stored in a folder called AppData\Local\Deng Team\Doomsday Engine\ in your home folder. The following noteworthy files and folders can be found inside:

runtime/autoexec.cfg

Console commands to execute after loading the game with the -game option.

runtime/cache/

Cached data that helps Doomsday run faster. You can delete the contents of this folder; Doomsday will recreate them automatically as needed.

runtime/configs/

Game profiles and saved values for console variables and control bindings.

runtime/doomsday.out

Log message output file.

runtime/savegames/

Folder containing all saved games. Each game has its own subfolder for saves.

Environment

The following environment variables are recognized by Doomsday.

DOOMWADDIR

Doomsday looks for WAD files in this directory.

DOOMWADPATH

Delimited set of DOOM WAD directories. Use semicolon (;) to separate directories. Supported WAD files are searched for in each directory.

Bugs and known issues

Doomsday remains a work in progress so there usually is a number of bugs and known issues.

Bugs and Features

The official place to report new bugs, comment on existing ones, and submit feature requests is the dengine.net Tracker.