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. |
One young programmer, Raphaël Quinet, was hard at work on a project of his, DEU, one of the first and still one of the best editors ever released... His work on DEU and his generosity in making its source freely available helped spawn a plethora of authoring tools and editors. As this tutorial's name suggests, those using DEU or its derivatives will get the most out of it. Further software requirements and recommendations are listed below. | |
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 | |
Before you begin entering the world of Doom construction, you should first understand exactly what the editor is dealing with. As mentioned above, Doom uses vertices, linedefs, sectors, and the elusive "nodes" in order to construct an interactive world consisting of walls, ceilings, and floors. Of course, things, like weapons, add to the realism; however, they won't affect the outcome of compilation. So, let's dig deep! | |
| |
At first glance, DEU resembles a CAD program, but one in which you can interact with the worlds you create. Also, if you have one of the newer versions of DEU, you may or may not want to use resolutions higher than 640x480 since, while DEU provides a "fake cursor" for editing, this cursor does not track when you are using some of the menus. Pressing the F1 key will bring up a list of commands, but you should really be familiar with the editor before using this tutorial. Printing out DEU's documentation wouldn't be a bad idea. |
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. |
Sidedefs can be added to linedefs by selecting the lindef, or a group of linedefs, and selecting the edit mode (middle mouse button or ENTER). Fortunately, DEU will not damage any of your work when you "group select" some objects on the screen. For instance, say that you already have two linedefs with sidedefs, but, you switch to vertex mode, insert a new vertex, click on two vertices, and add a new linedef. This new linedef won't have a sidedef defined, until you, the user, define the first sidedef. Like- wise, if a linedef doesn't have a first sidedef, adding a second sidedef will only result in adding a first sidedef. Just remember, the first sidedef must always come first. Now, getting back on track. |
|
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. |
|
DEU also has some neat features, like FLIP LINEDEF and a texture previewer. The flip linedef feature will be described below in the step-by- step tutorial. The texture previewer will activate everytime you decide to change a wall texture, ceiling texture or floor texture. When you see a graphic appear on screen you may notice that the colors do not match what you saw in Doom. That's okay; just bear in mind that everything tends to have an orangish hue when operating in VESA mode 0, standard VGA (640x480x16). This only happens when the video mode switches to 320x200 for previewing in 256 colors. In my experiences, the higher VESA resolutions do not have this problem since the texture previewer displays in the current resolution. |
|
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. |
|||||||||||||||||
If you lack a mouse, or, you are using a graphical mode above 640x480 (DEU 5.0 non-BETA only) you should see a cursor looking like a big green "X". If you are stuck with keyboard only, use the arrow keys to navigate and press SPACE to toggle between small and large increments. By the way, if you are using mouse and want to permanently switch to keyboard for the session, press "K". In DEU 5.0 (non-BETA) this option has been removed. If you have a mouse and a mouse driver loaded (appropriately -- duh!) you should see a cute little arrow pointer. If your mouse supports three buttons then the middle button takes the place of ENTER; with a two button mouse just press ENTER to enable edit 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 | |||||||||||||||||
For vertex mode, press "V", if you forget, just press F1 for help. Now, move to an arbitrary point on the screen (not too far left or too far right) and press the "INS" key to insert a vertex. Since it takes to points to construct a segment (as in mathematics) it should be obvious that we'll need another vertex. So, move somewhere close to the other vertex (but don't get too close) and poke "INS" again. Next up: Inserting a LINEDEF. | |||||||||||||||||
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. |
|||||||||||||||||
To make your life simpler, don't press "L" but stay in VERTEX mode. Now, select the tail vertex and then select the head vertex by clicking the mouse button both times. Now, press "INS". Voila! You have just used one of DEU's most powerful features: automated mode switching. Next, assuming you had a group of lines selected, (but you don't have to do this to understand the concept) we are going to insert a SECTOR. |
|||||||||||||||||
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. | |||||||||||||||||
If you have created four vertices and selected the vertices in a clockwise manner (I'll explain in the step-by-step tutorial) and then created linedefs joining the vertices, you can group select the linedefs and poke "INS" to link the linedefs to an enclosed SECTOR. If you followed the directions above, you can also poke "INS", but, you will only have a sector linked to a single linedef. This shouldn't compile properly so don't try it. Now you should understand the idea. When you poke "INS" while in LINEDEF mode, DEU automatically creates the first sidedef(s) if it doesn't exist and then links the sidedef(s) to the sector. You now know why you wouldn't want to handle the numbers manually; however, you can if you need to. |
|||||||||||||||||
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 | |
As described in an earlier section, start DEU and type "C 1 1" and ENTER to edit Episode 1, Level 1. Like I mentioned before, no changes will be made to your original WAD file until you save. You will be given the opportunity to enter another filename such that DEU won't write over your original WAD file. For safety purposes, I recommend making your WAD file "read-only" using the following DOS command (do this before running DEU): |
|
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. | |
If you are using DEU 5.0 BETA 4 you can flip the linedef by entering the edit mode (middle mouse button or ENTER). The flip linedef function will appear at the bottom of the "edit linedef" menu. So, choose option "1" from the edit menu and then select "flip linedef" from the next menu. If you are using DEU 5.0 (non-BETA) press F10 and then select option 5 from the pop-up menu. If the process carries through properly, you should now see the perpendicular line on the inside. From here, select the linedef, if it isn't already, and edit the linedef. At the pop-up menu, select the "edit 1st sidedef" and click on "change sector ref." Enter the number "0" and press ENTER. You screen should now have output resembling the following diagram: | |
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 | |
With one sector defined we should move onto another region that will simplify the development process. Arranging the middle region, what soon will become a door, immediately is something that I do not suggest. Instead, change back to vertex mode and, as before, move around in a clockwise direction from vertex 9 to vertex 16. Briefly, 9 to 10 to 11 to 12 to 13 to 14 to 15 to 16 and then poke "INS" twice. Your output should resemble (excluding the numbers): | |
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. | |
Group select the linedef between vertices 8 and 9, as well as the linedef between vertices 16 and 1. Remember, to group select, simply mark the item with the first mouse button or "M" and then move to the next target, and mark it as well. Now, go to edit mode and select "add 1st sidedef." As of this point in time your level is complete. You can safely press "Q", type in a filename, and save your progress. If you choose you may do so, but, you will need the following two commands to enter the editor with the current level: | |
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. | |
Next, select the linedefs between vertices 1,8 and vertices 9,16. Then, edit the linedefs and select "change flags" and then click on "impassable." Now, repeat the process and click on "two sided and shoot through." You have now established the linedefs joining the sectors as transition regions capable of permitting the player's passage. The linedefs, in sector mode, should appear gray when they are no longer "impassable." Furthermore, keeping the linedefs highlighted, edit the linedefs and select "edit 1st sidedef." Change the normal texture to "-" and repeat this process for the next the second sidedef as well. As of this point, change to thing mode and in a "player 1 start" somewhere with the sectors. Press "Q" to quit, type in a filename or accept the current pathname, and press ENTER. | |
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. |
|||
There have already been some great attempts to consolidate information about this; METRICS, by Scott Amspoker, is quite accurate (and specific) as is Matt Fell's indispensable UDS. While I can't hope to duplicate either of these wonderful documents in this limited space, I can lay down quite a bit of information that should help you in your editing endeavours. Refer to one of the two previously mentioned documents with any further questions. |
|||
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. | |||
Ever try placing two monsters back to back? Doesn't work too well, does it? That's because the Doom engine wants space between those objects; fail to provide that space and you get some odd effects (including the inability of both monsters to move until one is dead). This space is given by the average of the radii plus two; since this would be tedious to calculate every time, I've created the above chart (suitable for framing or printing). To use it, simply look along the left side for the first monster and then above for the next; go to the corresponding space in the grid and you have the minimum distance the monsters need to be from eachother to avoid that rather nasty effect. (Note that distance is given by [(x1-x2)2+(y1-y2)2)]1/2) |
|||
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. |
|||
WEB SITES
| |
OTHER | |
|
Starting with a custom PWAD | |
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