DOOM LEVEL DESIGN WITH
|
![]() |
|
![]() |
Introduction | |
![]() ![]() ![]() | When id software released their now famous Doom, a flock of individuals (intellectually headquartered at rec.games.computer.doom.editing) rushed to start work editing it; their work led to the creation and distribution of several masterful programs and documents making it easier then ever for aspiring authors to create and distribute their "WAD's." Matt Fell's Unofficial Doom Specs paved the way for a string of utilities allowing for complete modification and, as any quick visit to ftp.cdrom.com will tell you, authors were fully cooperative. |
| |
![]() | I sincerely hope you'll get something out of this guide. If you have any questions, feel free to drop me a note! Enjoy! |
Understanding the Editor | |
![]() ![]() |
|
| |
|
Understanding the Construction Features | |
|
DEU, like most editors, permits the user to add just about every single keyword defined above; with the exception of nodes. So, after reading the documentation file, you can switch to the appropriate mode and insert that type of object. The DEU instruction manual explains just how to do this, but, in my step-by-step tutorial, I will instruct you on which keys to press. The same holds true for deleting these objects, whether you have selected a thing, a linedef, or a sector. These rules do not apply to sidedefs. |
|
|
If you "group select" these three lines by clicking the mouse on the line and repeating this process for every desired line, it should be obvious that one of the linedefs does not have a sidedef and therefore, any sidedef changes made to the other two linedefs will not affect this single linedef. The reverse is true as well; if you group select some linedefs and accidently highlight a linedef with a sidedef, adding a second or first sidedef will not affect the linedef provided the respective sidedef already exists. Whew! Did I lose you? In summary, try to use the group select method whenever possible so as to save yourself time. |
|
|
|
Note that floor and ceiling textures require a sector to be defined, and wall textures (upper, lower, normal) require a sidedef to be defined. The sidedef has the option for X and Y offsets, something which I will let you experiment with, permitting you, the user, to align textures properly and keep those secret doors secret! |
Building a New Level |
|||||||||||||||||
To begin with, type "DEU -v 0" at your command line prompt to enable VGA only graphics. I have discovered that the "fake cursor" mode available in DEU 5.0 (non-BETA) works nicely for experienced users; however, being able to see all the differently colored lines really assists in accelerating the editing process. For starters, use the command line above and DEU should load and enter a text/prompt mode. From here, type "C 1 1" and ENTER to creative a new PWAD replacing Episode 1, Level 1. Don't panic, creating a new level will not overwrite your origial WAD file unless you decide to "save" over it. After this, you should enter a graphics mode. |
|||||||||||||||||
|
|||||||||||||||||
Clicking the left mouse button will select an object for grouping, whereas as just moving over the object will highlight the object (alone) for editing. To edit, just press the middle mouse button or ENTER. Granted, there is nothing to edit, but we'll fix that. You can use the right mouse button to move the object(s) around the screen. |
|||||||||||||||||
First of all, if you'd like, enable the grid mode by pressing "G" and select the grid that best fits your tastes. Also, use the "=" and "-" keys to zoom in and out, respectively. I tend to use the tightest grid set- ting and zoom in all the way. You might as well do this now, just in case, since DEU 5.0 BETA 4 tends to have problems "snapping to the grid" at the looser grid settings. My step-by-step procedure will use this setting. |
|||||||||||||||||
Inserting Vertices | |||||||||||||||||
| |||||||||||||||||
Inserting LINEDEFS |
|||||||||||||||||
If you need to reconstruct a level manually, or, you just like to punish yourself during development, you can press "L" to enter LINEDEF mode. Once again, if you forget, just press F1 for the help screen. In this mode you can press "INS" and type the reference numbers of the vertices in the boxes provided. A linedef is constructed from tail-to-head. Therefore, the first vertex you select will be the tail and the second will be the head. |
|||||||||||||||||
|
|||||||||||||||||
Inserting a Sector and Automatic Sector Linking |
|||||||||||||||||
Once again, if you like punishing yourself, you can use the "S" key to enter SECTOR mode. As stated before, a sector must be an enclosed region of space; thus, Doom won't react properly if you goober and leave a sector open. To simulate the idea, we'll do something inappropriate and leave a sector open only to illustrate a particular function. | |||||||||||||||||
|
|||||||||||||||||
One method for inserting an unlinked sector is to switch to sector mode "S" and press "INS". You have now allocated a blank sector that won't affect anything if left alone, but, this can be useful if you wan't to link a second sidedef to a sector. DEU automatically links every new sidedef to the newest sector. It is advisable to use this to your advantage as well. | |||||||||||||||||
Understanding the Flags | |||||||||||||||||
In DEU 5.0 (non-BETA) much of this process has been automated such that any two adjacent sectors sharing a single linedef (remember each linedef can have two sidedefs, one for either adjacent sector) will cause the linedef to automatically have one flag set and one flag cleared. By default, in DEU 5.0 BETA 4, every line had the "impassable" flag set; no others. In the new- est release, the automation will cause the "impassable" flag to be cleared and the "two-sided and shoot through" flag to be set. This is standard if you plan to have a trigger switch that the player needs to walk over. So, learn about the flags; below is a table which should describe what some of the flags will do and possible side effects -- for much more complete information, consult the UDS. | |||||||||||||||||
| |||||||||||||||||
When to Choose Textures (Upper, Lower, Normal) |
|||||||||||||||||
For most purposes, excluding doors, pillars, and some other oddities, you will only need to worry about normal textures. You can select the normal, upper, and lower textures after you have added at least the first sidedef to your linedef. | |||||||||||||||||
WARNING: | |||||||||||||||||
If you set up a linedef to be two-sided and shoot through and you leave the impassable flag set, you'll get HOM, the infamous Hall-of-Mirrors effect, characterized by overlapping pictures and textures. If you use a multi-patch texture (see the Doom Level Design FAQ and/or the UDS for more information) on the normal of your passable wall you'll get something known as the Medusa Effect: You'll know this has happened when you approach the area facing the wall and your machine slows to a snail's pace (hence the name: looks like snakes and you turn to stone). In short, don't do this. | |||||||||||||||||
Now if we have three sectors (see the corresponding DEU shot for an example of this) with the middle sector with a lower ceiling and a higher floor than the rest, you should get a perspective similar to this: | |||||||||||||||||
| |||||||||||||||||
I hope this will clarify any confusion regarding when a level requires an upper, lower, or middle texture. |
Step-by-Step Tutorial | |
|
|
ATTRIB +R DOOM.WAD | |
After entering the editor, set the grid to the tightest resolution (smallest) and zoom in all the way. Now, choose an arbitrary point on the screen and insert sixteen vertices like below: | |
x x x x 6 7 10 11 x x x x 5 8 9 12 4 1 16 x x x x 13 3 2 15 14 x x x x | |
Next, connect the vertices in a clockwise fashion from vertex 1 to 2 to 3 to 4 to 5 to 6 to 7 to 8 and press "INS" twice. At this point, you have created linedefs linked in the shape of the letter "C". At the same time you have established a sector linked to the first sidedef (inserted and linked automatically by DEU) of each new linedef. | |
Now, we need to seal off the sector. To accomplish this, switch back to vertex mode by pressing "V" and connect the vertices 1 to 8, re- spectively. Press "INS" to create a linedef between the two vertices. Note that I have intentionally set up this linedef such that the first sidedef (represented by the perpendicular line, also the right hand side of the arrow) is facing on the wrong side for us to simply add a first sidedef and utilize DEU's autolinking capability. To resolve our situation, we need to flip the linedef. | |
| |
x----------x x x / 6 7 \ 10 11 / \ / \ x 5 8 x x 9 12 x | | | | | | | | | 1 | x 4 x x 16 13 x \ / \ / \ 3 2 / 15 14 x----------x x x | |
| |
x----------x x-----------x / 6 7 \ / 10 11 \ / \ / \ / \ / \ x 5 8 x x 9 12 x | | | | | | | | | | | | | 1 | | x 4 x x 16 13 x \ / \ / \ / \ / \ 3 2 / \ 15 14 / x----------x x-----------x | |
Next, change back to vertex mode by pressing "V" and create a linedef by selecting vertex 16 and then vertex 9, in that order. Now, poke "INS" only once. Then, edit the linedef by pressing ENTER or clicking the middle mouse button, and select "add 1st sidedef." You have now used DEU's auto- linking capability to add that linedef to the newest sector. It just so happens that our newest sector is the one we needed to establish a link with. Our diagram, up to this point, should resemble the following: | |
x----------x x-----------x / 6 7 \ / 10 11 \ / \ / \ / \ / \ x 5 8 x x 9 12 x | | | | | | | | | | | | | | | | | 1 | | | x 4 x x 16 13 x \ / \ / \ / \ / \ 3 2 / \ 15 14 / x----------x x-----------x | |
It is now time to add our last sector. Switch to vertex mode, select vertex 8 and then 9; finish the process by pressing "INS" once. Do the same for vertices 16 and 1, respectively (first vertex 16, then vertex 1). Finish the process by pressing "INS" once. Now, you should theoretically be in linedef mode, but, if you are not, press "L" to switch to linedef mode. | |
| |
r filename.wad | |
If you feel strong and capable, you may continue with the tutorial without saving. | |
NOTE: Do not perform the following if you are using DEU 5.0 (non-BETA). This is only for use with DEU 5.0 BETA 4. | |
| |
Now that you have come this far, it's time to test the level. Use the command line from Starting Doom with a custom PWAD to start Doom and load your WAD file. |
Appendix A: METRICS |
|||
As you've probably found out by now, Doom editing is a rewarding but challenging task. One topic that many new level designers find particularly difficult is Doom's system of measurement; while it's often clear that a real-life location would make a great Doom level, it's not so clear, even when you have the dimensions, how to model it in DEU. |
|||
|
|||
Just an inch more... | |||
As you may have noticed, monsters sometimes seem unable to follow you through narrow hallways, even when it looks like they should fit. What's happening here is that the Doom engine has certain minimum "clearance" widths, meaning that monsters need room beyond their normal widths to move through spaces like doors. As you may have been able to guess from the chart, the amount of room a monster requires is approximately twice its radius plus two (note that while a monster needs extra room around him, he does not need this above him). Note that these are the minimum widths; monsters are much more willing (and likely) to go through wider doors. | |||
|
|||
Real-world scale |
|||
Back to our original problem... Say we have a building we want to model and we know it's dimensions in feet (or centimeters); what's a good scale to use when recreating the building in DEU? While approximations, the following scales "feel right." |
|||
|
|||
This is an initially surprising result, as it reveals that our tough, macho hero is only about 5'7", quite a contrast with the 11 ft. high cyberdemon. Note that the player can only climb stairs <= 24 units at a time (even 1 unit is allowable; this can be used to create the illusion of climbing a steep surface). Last, but certainly not least is the fact that, in order to pick up an object, you have to be within (16 + object's radius) units from it. | |||
However, according to the Doom Level Design FAQ v1.2, edited by Tom Neff (tneff@panix.com), you should in theory be able to pick up objects from shelves as far away as 48 units back -- however, items more than 24 units back are usually not picked up if the shelf is just brushed upon, and it seems that running has the effect of extending your reach. To be sure an item will be picked up at even a brief touch, place in 24 or fewer units away, while to be sure that it will not be, place it 40 or more units away. |
|||
| |
OTHER | |
|
Starting | |
Start your PWAD as you would any other, using the following relevant command-line options. For a complete listing, see Hank Leukart's awesome Official Doom FAQ (up to v6.666 at press time). Here goes: |
|
DOOM -FILE yourname.wad -DEVPARM -WARP episode_number level_number -SKILL skill_number |
|
Replace yourname.wad with the name of your WAD, episode_number with the episode desired, level_number with the level desired and skill_number with the skill level desired (which ranges from 1 to 5). With Doom II simply change DOOM to DOOM2 and use the level number as WARP's parameter. Also note that all of the parameters above (with the exception of -FILE) can be omitted when loading a custom PWAD. | |
HAPPY DOOMING! |
Written by Michael Kelsey; HTML by Paul
Pollack
Special thanks to Raphaël Quinet, Ian LaSpina, Ryan Herzek and
the folks over at id Software
Questions or comments about
web design should be directed to Paul Pollack
Web space kindly provided by GeoCities
Go to the Hollywood GeoCities