NOTE: This section is based on The Map Editing FAQ for Duke Nukem 3D v. 2.1 by Jonah Bishop, ©2000. The majority of the information presented here was written over five years ago. Some may be outdated, and some may be incorrect -- this page exists to get you started with the Level Editing and may not currently cover some of the additional features available in Mapster32.
A "map" is a general term used to describe the levels in Duke Nukem 3D (or just about any other game for that matter). Maps include all the level information (effect parameters, wall placement, sprite placement, etc.).
Unlike games such as Doom or Unreal, maps are solely the layout of a level, the effects used in that level, etc. Enemy coding, sounds, and art textures can be found in the .grp and .con files.
Yes. The program "KEXTRACT" is used to extract map files into your game directory, where they then can be viewed.
You also can view the maps without extracting them. Use the command line parameter -map <mapname>.
The editor available for creating your own maps are the Build program (used to create the levels found in Duke Nukem 3D), Makemap (distributed with Eduke 2.0), JFBuild (distributed with JFDuke), and Mapster32, which is included with EDuke32. This FAQ currently only discusses features of Build and Mapster32 specifically, although the other editors may (and generally do) function the same way.
Yes. The Build editor that came with Duke Nukem 3D was made specifically for Duke Nukem 3D, but it can also be used to make levels for NAM.
Running user maps that you create and/or download is can be run within Eduke32 by selecting "User Map" under the "New Game" menu. The command line parameter -map <mapname> also may be used to execute user maps.
The Build engine is the graphics engine that games such as Duke Nukem 3D, Shadow Warrior, Blood, and NAM run on. Although it isn't truly 3-D, it does give a nice feel for the environment that has been presented, and it gives the player a never before seen level of interactivity in this environment.
There are quite a few things that you will need to know prior to making your first level. Read this section completely, and you will have everything you need to know to start making levels!
There are two different editing modes in Build. The 2D mode, which shows the layout of the map, sprites, and other goodies, and the 3D mode, which looks like the game itself. To switch between these two modes, press the [ENTER] key on the numberpad. The regular [ENTER] key does not switch modes, so this must be noted!
In 2D mode, you lay out the map itself. Here you draw walls, place sprites, change tags of walls, sprites, and floors, and save your work. In 3D mode, you change the textures of the walls, change how high or low the floor, ceiling, sprites, and other objects are, and you change the shade here as well.
This topic is complicated, yet simple at the same time. Tags can be given to walls, sprites, or sectors, and they tell the wall, sprite, or sector what to do. There are two numbers that any of these objects can be given. The first number is called a hitag. Hitags usually identify the object, so that other objects can be paired with it (I'll give an example in one moment). Lotags are generally a fixed number that tells the game exactly what to do.
Here is an example:
I make two sectors, and I want them to be teleporters (i.e. - I step into one sector, and teleport to the other sector). I place a sector effector sprite in both sectors, and give them tags to identify them. I first give *both* sprites a lotag of 7. This number is preset, and it tells the game that when the player enters this sector, he is to "teleport" to the other teleporting sector. I then give *both* sprites the *same* hitag. This number must be unique, as it gives an identity to both sprites. Here is what the program is probably thinking when I'm playing this level:
Hmmm. The player has just entered a sector with a special sector effector sprite in it (lotag of 7). Let me see if I can find another teleporting sector with the same identity (unique hitag), so that I can "teleport" him there. Hey - There's the other sector! WOO-HOO!
All the hitags do are link various effect sprites together. If you only gave one sprite a hitag, the program would not be able to find another, matching teleporting sector, and then would not be able to teleport you anywhere, because it can't find this sprite's "mate". Here are the key strokes that you need to do in order to place these tags (in 2D mode):
These same tag assignments can be made in 3D mode as well. Here are the key strokes for use in 3D mode:
Without sprites, levels in Duke Nukem 3D would be nothing. Sprites make up all the "eye candy" in the level and are the root of all effects in Duke 3D. To place a sprite in the level, press the [S] key in either 2D or 3D mode. It is advised to place them in 2D mode, as you have the grid as a guide for placement.
There are several different modes sprites can be in (3 of them to be exact). Sprites can lie flat on the floor, be "pasted" to the wall, or they can be in the "normal" mode (guns and other goodies are usually in this mode). Normal mode is the default setting, and to switch the current mode of a sprite, enter 3D mode, and press the [R] key on it. It will go from normal to being pasted on the wall (according to which direction the sprite is facing). Pressing [R] on it again will paste it to the floor, and again will make it normal.
Sprites can face in different directions as well. In 2D mode, you will notice a "tail" coming out of the circle which represents the sprite. This tail points in the direction that the sprite is currently facing, and it also denotes the "front" side of the sprite. To change this, press the [,] or [.] keys on the sprite in 3D mode.
To change the texture of a sprite (changing what the sprite actually is), enter 3D mode and press [V] on it. This will bring up a screen of all the current sprites used in the level you currently are working on (This is useful as you start to need the same sprite over and over). Press [V] again, and you will proceed to the tile selection screen. Here, you can press [PGUP] and [PGDN] to scroll through the many textures used in Duke. When you have found a suitable texture, press [ENTER].
To raise or lower the sprite, press the [PGUP] or [PGDN] keys on the sprite in 3D mode. This changes the altitude of the sprite.
Here is an example of placing a sprite in a room:
I want to place a calendar on the wall in my room. In 2D mode, I would press the [S] key ON THE WALL where I want the sprite to be, and I would then enter 3D mode, pressing the [V] key on it twice. I would select the calendar sprite, raise it up to the height I want it on my wall (with the [PGUP] and [PGDN] keys) and then press [R] on it *once*. But now that I look at it, the sprite is turned to the side, or it is backwards! You must remember to set the sprite direction with the [,] and [.] keys. The tail should face *away from the wall, so that it lies flat on the wall. Check out some of the levels that came with the game if you don't understand.
There are a few special sprites that need to be explained. The most important ones are as follows:
The original DOS Build is located on your Duke Nukem 3D CD, under the /goodies/build directory (if this directory isn't on your CD, consult the "#The Most Common Questions and Answers" section of this FAQ for more information on why this is). This program can be installed from the main game installer, so that should be the place to install from. Simply run the install program, choose *only* to install Build, and install it into your game directory (i.e. - the Build program and all associated files should be in the same directory as the game itself). Not installing this program into the game directory can cause some major problems, so this is where to install it.
After the program has been installed, enter into your game directory and run the BSETUP program. Within this program are several menus where you can change your settings for sound cards, video modes, and more. YOU SHOULD ONLY CHANGE THE VIDEO MODE! Changing other items in this program will (for some strange reason) cause this setup program to not save your settings. So change the video mode to the mode you want to run (make sure your system can run in that mode before setting it that way), and select "Save Settings & Exit". Build does not use music and sound effects at all, so setting these items isn't needed anyway.
Now, simply type "build" at the DOS prompt (without the quotation marks of course) and you will be launched into the program!
In the case of Mapster32 the program should have been installed into your directory along with EDuke32. Simply double click the program executable and you will be given prompts where you may select your desired settings.
Throughout this section, I will walk you through making your very first Duke Nukem 3D level. Build is an extremely fun editing program, and some cool stuff can be done in this editor, so let's get started.
The first thing that we'll do is create a square room. Press the [G] key several times, until the largest grid size in Build appears. Zoom out a little bit (by using the [Z] key). Move your mouse cursor near one of the vertices, and press the [SPACEBAR]. What you are doing is beginning to draw the walls of your level. Move your mouse cursor up 3 grid blocks and press the [SPACEBAR] again. You have just drawn your first wall! Move to the right 3 blocks, press [SPACE] again, move down 3 blocks, press [SPACE] again, and finally move the cursor back to the first vertex you drew, pressing [SPACE] one last time. Your room should now be 3 grid blocks by 3 grid blocks.
One of the first things you might want to do after creating your first room (assuming your first room will be the start of the level) is to specify where Duke will spawn when starting the level. If you don't, then Duke will immediately die when the level begins (at least from my own experience anyway, though this isn't so much a problem using Mapster32 as it sets a starting point automatically). To set a starting point, simply click in the room where you want to start so the white arrow is at that point, turn the arrow the direction you want to face, and press [Scroll Lock]. A different coloured arrow will appear in that position to show the starting point, as well as your normal white arrow.
Textures are added in 3D mode. Press the [ENTER] key on the number pad (it's found on the far right on your keyboard). You should now be in 3D mode, which looks exactly like the game. Cool, huh? The current texture, however, is quite ugly, and one that you (hopefully) do not want to use. So let's change the texture of the walls, the ceiling, and the floor.
Move the mouse cursor over the floor. Press the [V] key once. This screen (which currently has that ugly texture on it) is a listing of all the textures that appear on either the floor or ceiling of your level (This screen becomes quite handy later on when you want to use a texture already used in your level). Now press the [V] key again. You should be looking at a large screen of sprites, textures, and other items. Press the [PGDN] key several times, or use the arrow keys to scroll around the screen. There are literally thousands of tiles in Duke Nukem 3D, so choose one that you want to use as your floor, and press the [ENTER] key (not the one on the numberpad). Your floor is now the texture you wanted it to be! Now do the exact same thing for the ceiling.
When you have that done, move the mouse cursor over one of the walls in your level. Press the [V] key once. The screen you are now looking at is much like the first one for the floor and ceiling, but this time it shows all the wall textures used in your level. Press [V] again, and select a good texture for the wall. Your texture appears, but it doesn't look like it's all there! You need to scale the texture by using the [4], [8], [6], and [2] keys on the numberpad. Experiment a little, and get it to look like you want. Pressing the [5] key, in addition to the keys listed above, will make the scale of the texture change in larger increments (making it faster to do).
You could do this for each wall, but that would take quite some time to do in a big level. So move the mouse cursor over the wall that you have just changed (after you have it like you want it) and press the [TAB] key (in version 1.3D of the game, you need to press this key twice - if you don't, the small white text that appears on the screen will stay there). Now move the mouse cursor over one of the other walls. Press the [ENTER] key (not the one on the numberpad). You have just copied and pasted the texture, its scale factor, and its shade value! This makes texturing a room much quicker, and it is quite a handy feature. Do this for each wall. (NOTE: Sometimes, the scale isn't pasted 100% correctly, so minor adjustment might be needed.)
Sprites are what levels in Duke Nukem 3D revolve around. Without sprites, this game would have no meaning at all. Sprites consist of enemies, weapons, ammo, sector effectors, and all kinds of eye candy. Placing sprites is quite easy and can be done in either 2D or 3D mode. Placement in 2D mode is *much* easier, because you have the grid to line up sprites with other objects.
Let's add a shotgun sprite to our level. In 2D mode, move the mouse cursor into one of the corners in the room. Press the [S] key. You have just placed a sprite. What you now see is a circle with a "tail" coming out of it. The tail indicates the direction of the sprite. This is not important in the case of ammunition, health, enemies, weapons, and some eye candy, but some objects that you might want to place on a wall need the angle to be just right. If the sprite you just placed is currently pink, it means that this sprite will block your movement in the game. If it is pink, move your mouse cursor over the sprite you just placed and press the [B] key. This toggles sprites between "blockable" and "not blockable". No sprites *need* to be blockable, but it comes in use when placing a table or chair sprite and you want it to block the movement of the player. Now enter into 3D mode. You should see some sort of sprite (probably that ugly texture again). Move the mouse cursor over the newly created sprite, and press the [V] key once. Like the textures, this first screen shows you what sprites are used in your level. Press the [V] key again. Select tile #28 (which is the shotgun sprite). You have now placed a shotgun in your level! You might want to size this sprite down a bit (using the [4], [8], [6], and [2] keys on the numberpad), but weapons, health, ammo, enemies, and inventory items all size themselves in the game.
Now let's add a poster type sprite to our level. In 2D mode, move your mouse cursor over one of the walls of your room (the cursor should be on the side of the wall that the player will see). Press the [S] key. Now change the angle of this sprite to face straight away from the wall. This is done using the [,] and the [.] keys (also known as the [<] and [>] keys). When you have the angle properly set, enter 3D mode. Change this sprite to #500. We want this sprite to stick to the wall, but it doesn't seem to be doing that. Move the mouse cursor over the sprite in 3D mode, and press the [R] key once. This makes the current sprite lie in a flat plane, perpendicular to the sprite's angle. So if the sprite is facing to the right (or east), the sprite would lie flat in the north-south plane (the sprite would still face east). This is kind of hard to explain, but play around with it to see what I mean. Change the angle of the sprite after the [R] key has been pressed, and you will see how the flat position and the angle relate. Size your sprite to your liking.
Let's add one more sprite to our level for now. Place one sprite in 2D mode somewhere in the middle of your room. Change this sprite to #568. This is the magazine sprite. Back in 2D mode, change the angle of this sprite to be 45 degrees or something of that nature (press the [<] or [>] key twice to do this). Now enter 3D mode again. This time, move the mouse cursor over the sprite and press the [R] key *twice*. This command makes sprites lie flat on the floor. Pressing [R] again returns the sprite to its default setting. Size this sprite to your liking. NOTE: Not all sprites can be made to lie flat on the floor. If the sprite you want to make lie flat on the floor looks really weird (or messed up) when you try to place it flat on the floor, it simply cannot be made to be in that position. If I am not mistaken, the only sprites that can lie flat on the floor have dimensions that are powers of 2.
Now we need to add what is called a "nested" or "child" sector. This term simply means that you have a sector within a sector. We will first create a small box sector in our room. Somewhere in your room, begin drawing a new sector. Make sure that the grid size is smaller than the largest setting, and draw a square sector again. If you enter 3D mode at this point, you will notice that the sector you just drew has appeared as new walls, taking a chunk out of your room. This is not what we want, so enter back into 2D mode. Move your mouse cursor inside this newly created sector, and press the [ALT]+[S] keys. Your sector walls should have just turned red! Now enter back into 3D mode again. Looks like normal huh? Well, it’s not quite like it was before. You have just created a child sector, which will now raise up from the floor.
In 3D mode, move your cursor over to the general area of your newly created nested sector (point the cursor at the sector floor). Now press the [PGUP] key several times. You are now raising your sector out of the ground! Raise it to a decent height (but don’t raise it all the way to the ceiling), and put some good textures on it (maybe the crate texture or something of that sort). Using the [PGUP] key raises either the floor or ceiling of a sector, and using the [PGDN] key lowers either the floor or ceiling of a sector. This is how you will set your sector heights in the game, and will most likely become one of the most used commands in Build. These two commands can also be used to raise and lower sprites. Remember that poster-type sprite we added to our level? Press the [PGUP] key on it several times. You have just raised the sprite up on the wall. Very useful and very easy, is it not?
In 3D mode, move the mouse cursor over the ceiling of the room sector. Now change the texture of this sector’s ceiling to #89. This is the Los Angeles texture, and for it to look right, needs to be parallaxed. Press the [P] key. Do this for the ceiling of the nested sector we created as well. Several special cases with parallaxing (and several problems) are documented in the parallax sub-section.
Let’s now create a sector off to one side of our room. To do this, we first need to insert some vertices. Pick the wall that you want to have the sector on, and move your mouse cursor over that wall. Press the [INSERT] key in the places on this wall where you want the vertices for our new sector to be (you should only need 2). Move the mouse cursor over one of these newly created vertices and press the [SPACEBAR], starting the drawing process. Now move the mouse cursor over the second vertex that you inserted, pressing [SPACE] again. The move out away from the room sector, drawing your sector as normal. When you finish drawing your sector, the part of the wall between the two vertices you inserted should change into a red line. Enter 3D mode and take a look at the newly created sector. Let’s make the floor of this sector sloped.
By using the [ and ] keys, slope the floor of this sector downwards (or upwards, whichever you prefer – just experiment with it). Keep in mind that when sloping sectors, you need to set the "first wall" of the sector. The "first wall" is the wall that the slope will pivot around (think of it as a hinge point). This can be set in either 2D or 3D mode by pressing the [ALT]+[F] key combination on the wall you want to be the first wall of the sector. Experiment with setting this parameter, and see how it changes the tilting angle of the sector (try this on our newly created sector).
This is a feature that is (unfortunately) not used enough in level design, and it can be a little tricky to get just right.
Somewhere in your level (do this outside of your room sectors), draw a triangular sector. Move your cursor over one of the walls of this sector, and press the [C] key. Now move the mouse around. You will see the beginnings of a circle, but we need to manipulate this circle to get it the way we want it to be. Pressing the [-] and [+] keys (on the numberpad) decreases and increases the number of points on the circle, respectively. Pressing the [SPACEBAR] draws the circle, while pressing the [C] key cancels the drawing of the circle. Once you’ve got half of the circle drawn, move the vertex of the triangle (that you initially created) that is sticking out away from the half-circle, over one of the vertices that runs across the half-way point of the circle. This is quite hard to explain in words, so take a look at the tutorial map (I've placed several iterations of this circular construction on the map, so you can see how this is done step by step). Then create the other half of the circle.
One of the key elements in any level made is the shading technique. Shading is a delicate art that must be learned and used *everywhere* in the level. Leaving your level's walls, sprites, floors, and ceilings set with a shade value of 0 makes most level reviewers shun (or even skip) your level entirely. There are several shading techniques that you must learn to use, and they're not hard to learn at all! Once you learn these techniques, you will be able to make some very cool looking levels!
Build has a few features that can be very useful to a learning Builder, and make the Building process *much* faster to complete.
Deleting sectors is also an easy thing to do. Simply move the mouse into the sector you wish to delete, and press the [CTRL]+[DEL] keys to delete the sector. Be warned that there is no undo feature in Build, so make sure you know *exactly* what you are doing before using this command. A quick save of the level before using this command wouldn't hurt.
You are now through the basic parts of editing. The next section goes into detail on making every effect known in Duke Nukem 3D (there are even several effects not used in the game itself that people have invented). To run your map, simply use command line -map <mapname> or select "User Map" under the "New Game" menu in EDuke32 and select the desired map.
Welcome to the world of Build!
This section of the FAQ covers most known effects available to the map designer. Due to the number of effects available, this section is quite lengthy. Example .map files are used throughout this section, so take a look at any of the how-tos for the corresponding map name.