Custom level(s) for id's Doom
- What's a WAD?
- Doom on BotB
- About Source Ports
- How to Play
- Adding New Assets
- Tools and Resources
Doom is a popular first-person shooter released in 1993 for DOS PC's. Its gory visuals (by 90's standards), frantic gameplay, groundbreaking 3D renderer, and lengthy free demo made the game a huge hit. A sequel, Doom II, was released in 1994, running on the same engine. The Ultimate Doom, an update to the first game that added nine more levels, was released in 1995.
The source code for the game's engine was publicly released in 1997. As a result, it has become one of the most ported games of its era (or, to quote John Linneman, "the violent equivalent of 'Hello World'"). These source ports
will often fix bugs and add new features to the engine, compared to "vanilla" Doom. The Boom format
on BotB refers to one particular group of source ports, for example.
What's a WAD?
Doom uses the WAD format to store its game assets (maps, graphics, and sounds); each asset is its own "lump" within the WAD file.
There are two types of WAD files. IWADs (internal WADs) are WADs for the original commercial games released for the Doom engine, such as Doom, Doom II, Hexen, and Heretic. PWADs (patch WADs) are WADs made by hobbyists (and BotBrs here) that include their own maps/graphics/sounds that can be used alongisde (or instead of) those found in the IWAD. If a lump in a PWAD has the same name as a lump in the loaded IWAD, the PWAD lump will "patch over" and replace the IWAD lump.
The most commonly-used IWAD is Doom II's DOOM2.WAD. Doom II features more weapons, enemies and map slots than its predecessor, and as such has a lot of appeal. That said, the original Doom (and Ultimate Doom) have some features that Doom II does not - an episodic structure, some textures, some unique map-specific behaviors
, etc. For these reasons, Doom II is not strictly backwards-compatible with (Ultimate) Doom, despite being very similar.
Doom on BotB
Doom entries on BotB are generally single-player maps for either Doom or Doom II. WADs may also include custom music or custom graphics (unless stated otherwise in the bitpack).
Submissions should include the IWAD to be used by the player and the map(s) that have been replaced (if different from E1M1/MAP01). Note that players might opt to play on difficulty levels that are not Ultra-Violence; if there's a specific difficulty level that your map is balanced around (or if there are no differences between difficulty levels), it may be wise to include this in the description.
About Source Ports
Submitted levels under this format should be playable with the latest version of the vanilla implementation, meaning it should run with the original executables, or a source port that's highly compatible (such as Chocolate Doom
, a source port that seeks to replicate everything about the original executable).
Other source ports can be used at your own discretion, although you should not rely on them too much, given that almost all of them are limit-removing. The original DOS version of the Doom engine has a limit of 128 floors visible at once*, and going above would crash the engine - source ports either increase these limits, or outright remove them to make room for more complex maps, or have features that break vanilla compatibility in some other way (e.g. jumping, mouselook). Source ports provide compatibility settings to try and mimic quirks and behaviors of the original executables, but they rarely emulate visplane-related crashes - test your maps with either the DOSBox version or Chocolate Doom first!
*The engine will frequently split floors into multiple "visplanes" for rendering reasons- the practical limit on the number of simultaneous floors is usually a lot lower than 128. There are many other static limits, but the visplane limit is by far the most troublesome.
How to Play
You should find your own way to source the IWADs stated in the bitpack (usually this is DOOM2.WAD). You can (legally) get this by buying Doom II (or any of the other relevant DOOMs) on one of the many online gaming storefronts today. You probably should not
use the source port the purchased game uses nowadays, unless it's the DOSBox version (in which case it's probably one of the most accurate ways to play WADs submitted to this format).
An option for those who don't have the Ultimate Doom or Doom II IWADS is Freedoom
, designed to be a free, drop-in replacement for those IWADs.
If you don't want to use DOSBox, you can use the IWAD with a source port - while not 100% accurate, it's a simple, modern way to work with vanilla Doom. The differences between DOSBox and any source port are a lot less important from a playing
perspective than they are from a mapping
perspective - and with "strict vanilla" source ports, any differences are imperceptible.
Once you have your method of choice set up and running, the PWADs available on BotB can be played by including them in the relevant command-line arguments. The following examples assume a PWAD called FOO.WAD to be played with Doom II, starting on MAP07.
Some source ports have a launcher you can turn on in the settings that lets you pick and launch WADs with a GUI instead. There's also Doom Launcher
, a separate Windows utility that accomplishes the same purpose.
Vanilla executable via DOSBox
doom2.exe -file FOO.WAD -warp 7
chocolate-doom.exe -iwad DOOM2.WAD -file FOO.WAD -warp 7
PrBoom+ and DSDA-Doom
prboom-plus.exe -iwad DOOM2.WAD -file FOO.WAD -warp 7 -complevel 2
Complevel should normally always be 2 for Doom/Doom II WADs (this reflects engine version 1.9). DSDA-Doom has the same command-line format (with a different .exe, obviously).
gzdoom.exe -iwad DOOM2.WAD -file FOO.WAD -warp 7
GZDoom is not ideal as it doesn't aim to be 100% compatible with the DOS Doom releases, but it's included here as it is a popular source port.
Adding New Assets
Doom uses two graphics formats- a generic "Doom graphics" format, and one used specifically for floor and ceiling textures ("flat" format). Both of these can only display colors from Doom's 256-color palette, plus transparency for sprites and fence-like dividers. As an added wrinkle, Doom uses non-square pixels - art gets stretched vertically by 20%.
Floor textures (flats)
Flats must be 64x64 and in the special "flat" format.
Each wall texture is assembled from sub-graphics, called "patches", that can be reused between textures. Each patch is assigned an ID in the PNAMES lump, and the texture definitions are stored in the TEXTURE1 or TEXTURE2 lumps, referencing the ID's assigned in PNAMES. If one wants to use IWAD textures alongside new ones in a map, the PNAMES and TEXTURE# lumps must contain all the original entries from the IWAD, unchanged. The easiest way to do this is to copy these lumps from the IWAD and then modify them. In Doom II, TEXTURE2 is empty, which provides a workaround.
The process looks like this: Add a new art lump, convert to Doom graphics format, add the converted lump to PNAMES, and then add the lump to TEXTURE# (or use the patch as part of a TEXTURE# definition). Most tools will let you do the last two steps by right-clicking on the lump.
Walls must have a width that's a power of two (minimum 8 pixels) to correctly tile horizontally, and a height of 128 pixels in order to correctly tile vertically*. Patches can be of any size.
*In Boom, any power of two is okay, in case you were wondering.
Sprites, music, title screens, and menu graphics
In the IWAD, find the name of the graphics lump you want to replace, and create a lump with the same name in your PWAD. As long as the new lump is in the Doom graphics format, you're all set. For maximum compatibility, keep the fullscreen assets (TITLEPIC/INTERPIC/HELP/etc.) the same size as they are in the IWAD.
Music works the same way, but the lump is a MIDI instead. Here's the appropriate lump names for each map in The Ultimate Doom
and Doom II
Tools and Resources
Map editors and resource managers
, a cross-platform resource manager and map editor. If you want to add custom assets to your WAD, you basically have to use this- but you can still do all your map editing in another utility.
Ultimate Doom Builder
, a map editor for Windows. It's the latest in a long line of forks
of the original Doom Builder, and is currently the only fork still receiving regular updates. Some prefer Doom Builder X
or GZDoom Builder
, a cross-platform map editor and the second choice (after SLADE) for people not on Windows.
Source ports, strict vanilla
, a vanilla-accurate source port of Doom. Functionally identical to running the original .exe in DOSBox.
is a fork of Chocolate Doom that adds a debug display for information related to static limits. It'll display an error when limits overflow, but won't crash.
Source ports, limit-removing
, a fork of Chocolate Doom that removes the static limits and adds a few other quality-of-life improvements.
, the de-facto flagship port for the Boom format
. When running in vanilla compatibility mode, it's about as accurate as Crispy Doom. It's a continuation of PrBoom+
, an alternative to PrBoom+ that also strives to maintain its Boom compatibility
Special caution must be taken with ZDoom-based ports
. GZDoom is one of the most advanced source ports out there- but as a result, it's way less strict than most ports when it comes to lump organization and texture formats. It's easy to accidentally make a "vanilla" wad that only runs in GZDoom, so be careful!
, a wiki for Doom-related information
, a Doom forum
, a large FTP-based repository for PWADs
A very thorough Ultimate Doom Builder tutorial