Level editing: Difference between revisions

From EDukeWiki
Jump to navigation Jump to search
Mblackwell (talk | contribs)
mNo edit summary
Nexus (talk | contribs)
Touchplates: -rewrite
 
(58 intermediate revisions by 17 users not shown)
Line 1: Line 1:
{{Build Intro}}
{{Build Intro}}
<strong>NOTE: Much of information on this page is from around 1999.  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.</strong>
<div class="floatleft">__TOC__</div>


<div class="floatleft">__TOC__</div>
<strong>NOTE: This section is based on The Map Editing FAQ for Duke Nukem 3D v. 2.1 by Jonah Bishop, &copy;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, although as of 2011 some of the less well known yet handy new mapster32 features have been added.</strong>


==Information About Maps==
==Information About Maps==
Line 15: Line 15:
===Can I look at the game maps?===
===Can I look at the game maps?===


Yes. The file "kextract" is used to extract map files into your game directory, where they then can be viewed.
Yes. The maps of the original game are contained in the DUKE3D.GRP file, in your game directory. If Mapster32 is in the same folder as the DUKE3D.GRP file: open Mapster32; press [esc], this opens the basic menu and type [L] for (L)oad. Then press [ctrl]+[G] and all maps from a given .grp file are listed. Scroll down with the Arrow Keys and select any map on the list and press [enter]. - You can also extract a map from a .grp file with [http://dukeworld.duke4.net/classic%20dukeworld/other/artwork/dukeres.zip DukeResART by Peter Gerber] and place it in the game directory Mapster32 resides.
 
You also can view the maps without extracting them. Use the command line parameter -map <mapname>.


===What do I use to make maps?===
===What do I use to make maps?===


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.
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. In this FAQ we are specifically covering [[Mapster32]].


===Can I make maps for other games?===
===Can I make maps for other games?===


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.
Yes. [[Mapster32]] was designed in mind for Duke Nukem 3D, but it can also be used to make levels for [[NAM]], [[WWII GI]], [[Redneck Rampage]], and others.


===How do I run user maps?===
===How do I run user maps?===


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


===What exactly is the Build engine?===
===What exactly is the Build engine?===


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.
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, you can fake it by using sprites and overlapping sectors on top of each other. A modern eduke32 feature called [TROR] (true room over room) has been created to give the [[Build]] engine the appearance and functionality of a true 3-D engine, with only minor limitations. Most Build games also allow a level of interactivity in their environment that was unmatched for years.


==Things You Should Know Before Starting==
==Things You Should Know Before Starting==
Line 42: Line 40:
===2D and 3D Modes===
===2D and 3D Modes===


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!
There are two different editing modes in Mapster32. The 2D mode shows the layout of the map, sprites, tags. The 3D mode 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.
In 2D mode, you lay out the map itself. Here you draw walls, place and resize 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 can change the shade here as well.


===Hitags And Lotags===
===Hitags And Lotags===
<strong>NOTE NEW SYSTEM: (Still read the rest of the information as it's completely valid, the following describes a method of making tagging MUCH easier) A new smart tagging system has been implemented in eduke32 (for the 'pairing' of effects and sprites together). In addition to tagging with numbers, you can now tag with letters as well. This means if you give say a sector effector a hitag of "door1" (you can use any name) the engine automatically assigns the SE an unused hi-tag. If you then type "door1" on a switch, it assigns an identical number. Note numbers can still be used just as before.
This has 3 benefits.
Firstly, it means you don't have to remember numbers when linking effects together, you can remember them by an appropriate name, which is FAR easier.
Secondly, if you stick with the smart tagging system, you'll never use a number that has already been taken, which means you won't accidentally link 2 effects together which shouldn't be linked, and you don't have to keep track of which numbers you've used as was previously necessary.
Lastly, while most effects use the hitag to pair up, some effects use the lotag instead, and remembering which is which used to be a hassle. Now, however, the smart tagging system knows which tag an effect uses, and will only assign words to that tag.</strong>


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.
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.
Line 58: Line 63:
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):
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):


    * Sector Hitag : Press [H] in the desired sector
:* Sector Hitag : Press [H] in the desired sector
    * Sector Lotag : Press [T] in the desired sector
:* Sector Lotag : Press [T] in the desired sector
    * Sprite Hitag : Press [ALT]+[H] on the desired sprite
:* Sprite Hitag : Press [ALT]+[H] on the desired sprite
    * Sprite Lotag : Press [ALT]+[T] on the desired sprite
:* Sprite Lotag : Press [ALT]+[T] on the desired sprite
    * Wall Hitag : Press [ALT]+[H] on the desired wall
:* Wall Hitag : Press [ALT]+[H] on the desired wall
    * Wall Lotag : Press [ALT]+[T] on the desired wall
:* Wall Lotag : Press [ALT]+[T] on the desired wall


These same tag assignments can be made in 3D mode as well. Here are the key strokes for use in 3D mode:
These same tag assignments can be made in 3D mode as well. Here are the key strokes for use in 3D mode:


    * Sector Hitag : Press [']+[H] in the desired sector
:* Sector Hitag : Press [']+[H] in the desired sector
    * Sector Lotag : Press [']+[T] in the desired sector
:* Sector Lotag : Press [']+[T] in the desired sector
    * Sprite Hitag : Press [']+[H] on the desired sprite
:* Sprite Hitag : Press [']+[H] on the desired sprite
    * Sprite Lotag : Press [']+[T] on the desired sprite
:* Sprite Lotag : Press [']+[T] on the desired sprite
    * Wall Hitag : Press [']+[H] on the desired wall
:* Wall Hitag : Press [']+[H] on the desired wall
    * Wall Lotag : Press [']+[T] on the desired wall
:* Wall Lotag : Press [']+[T] on the desired wall


NOTE: To set wall tags in 2D mode, it is advised to turn off the grid, so that you are not selecting sprites. Press [G] several times to turn the grid off.
:NOTE: To set wall tags in 2D mode, it is advised to turn off the grid, so that you are not selecting sprites. Press [G] several times to turn the grid off.


===Placing Sprites===
===Placing Sprites===


NOTE: When I say that you should press the [V] key (or any other key for that matter) on a sprite, I mean that you should move the cursor over that sprite with the mouse, and then press the key.
:NOTE: When I say that you should press the [V] key (or any other key for that matter) on a sprite, I mean that you should move the cursor over that sprite with the mouse, and then press the key.


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.
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.
Line 84: Line 89:
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.
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.


NOTE: If you place a sprite on a wall in 3D mode (using the [S] key), the sprite will automatically be "pasted" flat to the wall that you placed it on.
:NOTE: If you place a sprite on a wall in 3D mode (using the [S] key), the sprite will automatically be "pasted" flat to the wall that you placed it on.


NOTE: Only "square" sprites can be made to lie flat on the floor. Sprites that fit this condition are ones that have the same x-axis height as the y-axis height.
:NOTE: Only "square" sprites can be made to lie flat on the floor. Sprites that fit this condition are ones that have the same x-axis height as the y-axis height. Note that this limitation does not apply if you are using the Polymost renderer.


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.
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 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 and use [/] and [*] to zoom in and out. When you have found a suitable texture, press [ENTER]. You can also search for textures' names using [s] then typing the name of the sprite and hitting [ENTER]. Unless you know for sure what the sprite's name is, this might not be all that useful, but sometimes educated guesses can be lucky. You can also go to a tile number you want by pressing [g] then typing the number and hitting [ENTER]. This saves a lot of time if you know what tile you want, or want to skip ahead a few thousand tiles. You can also use the 'goto' feature in 3D mode by moving the cursor over a wall or sprite and hitting [g].


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.
To change palette (color) of the sprite, simple press [ALT]+[P]. Then the program will ask for palette number. Bosses won't end level when their palette is set to 21.
 
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. Holding down [CTRL] while doing the same will move the sprite onto the ceiling or ground.


Here is an example of placing a sprite in a room:
Here is an example of placing a sprite in a room:
Line 104: Line 111:
====Sector Effectors====
====Sector Effectors====


::Sprite #1 - The sector effector sprite is the most used sprite in the entire game. It does just about what the name says: effects a sector. These sprite are used to create game effects and manipulate sector attributes. These sprites are the main tool used to create all effects in Duke Nukem 3D. Place the sprite in the sector to effect. The lotags for these are preset, and a list of the lotags for this sprite can be found in section 5.4.
::Sprite #1 - The sector effector sprite is the most used sprite in the entire game. It does just about what the name says: effects a sector. These sprite are used to create game effects and manipulate sector attributes. These sprites are the main tool used to create all effects in Duke Nukem 3D. Place the sprite in the sector to effect. The lotags for these are preset, and a list of the lotags for this sprite can be found in the [[Sector Effector Reference Guide]].


====Activators====
====Activators====
Line 112: Line 119:
====Touchplates====
====Touchplates====


::Sprite #3 - The touchplate will activate an activator or a masterswitch sprite, when the player walks over the sector that contains it. A hitag of 0 means that the touchplate will activate every time the player walks on top of the sector. A hitag of greater than 0 means that the touchplate will only be activated that many times (whatever number you put on there). The only number I've ever seen used that is greater than 0, is 1 (to activate an effect only once). But use the value that you want to.
::Sprite #3 - The touchplate will activate an activator or a masterswitch sprite, when the player walks over the sector that contains it. A hitag of 0 means that the touchplate will activate every time the player walks on top of the sector. A hitag of greater than 0 means that the touchplate will only be activated that many times (whatever number you put on there). The only number I've ever seen used that is greater than 0, is 1 (to activate an effect only once). But use the value that you want to.
 
::If the touchplate and the sector containing it are at different heights then the sector will be raised to the height of the touchplate when the game starts, and lower to the sector's original height when the player walks on it.
 
::By default the touchplate only activates if Duke walks on it, i.e., if he is touching the floor of the sector. If the touchplate sprite's angle is set to 512 (south) then it activates as soon as Duke enters the sector, no matter if he is airborne or not.


====ActivatorLocked====
====ActivatorLocked====
Line 122: Line 133:
::Sprite #5 - This sprite is used to create all the sound effects in the game. It can be used in 3 ways:
::Sprite #5 - This sprite is used to create all the sound effects in the game. It can be used in 3 ways:


::::'''*''' 1. Activation Sound
::::* 1. Activation Sound
::::'''*''' 2. Ambient Sound
::::* 2. Ambient Sound
::::'''*''' 3. Echo Effect
::::* 3. Echo Effect


::We will go into this sprite in much more detail later on.
::We will go into this sprite in much more detail later on.
Line 147: Line 158:


::Sprite #10 - This sprite is used to define rates of effects. The lotag is the only thing that is needed here, and the value for it is how fast the effect should go (i.e. - smaller means slower). These cannot be used on all effects, but they can be used on some.
::Sprite #10 - This sprite is used to define rates of effects. The lotag is the only thing that is needed here, and the value for it is how fast the effect should go (i.e. - smaller means slower). These cannot be used on all effects, but they can be used on some.
==Your First Map==
===Installing and Setting up Mapster32===
Mapster32 is bundled along with EDuke32. After extracting the files into your Duke Nukem 3D directory simply double click the program executable and you will be given prompts where you may select your desired settings.
===Creating a Room===
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.
:NOTE: The user map [[Media:Tutorial.map|TUTORIAL.MAP]], is an example map that which includes everything covered in this section. If you want to see exactly what something looks like as you go along in this section, just take a look at this map in Mapster32.
:NOTE: Save early and ''*often*''! I cannot stress this enough! Pressing the ''[ESC]'' key in 2D mode allows you to save your work by pressing the ''[S]'' key (saves it as the current filename (the default is '''''NEWBOARD.MAP''''')) or by pressing the ''[A]'' key (saves it as a new filename, which you specify). Mapster32 also autosaves every 3 minutes to autosave.map by default.
The first thing that we'll do is create a square room. Press the ''[G]'' key several times, until the largest grid size in Mapster32 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.
===Setting a level starting point===
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. 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.
===Adding Textures===
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 much like the game. The current texture, however, is quite ugly, and one that you do not want to use, especially since it can glitch and start animating sometimes. 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). To shift the texture, hold down ''[SHIFT]'' while pressing the same keys.
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. 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.)
===Adding Sprites===
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 and all kinds of eye candy, as well as certain objects that cause the various effects seen in the game like explosions, working doors, flickering lights etc. 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. This limitation is not present in the Polymost renderer.
===Adding a Child Sector===
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.
===Raising and Lowering Sectors===
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 Mapster32. 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?
===Parallaxing Skies===
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.
===Sloped Surfaces===
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).
===Creating a Circle===
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 [[Media:Tutorial.map|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.
===The Art of Shading===
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!
In addition to the sector based lighting described below, another why to light your levels is by using the advanced Polymer renderer's dynamic lights. These have the ability to cast shadows, and can make a Duke level look much more modern (especially when combined with the HRP.) Dynamic lights are also faster to implement than sector based shading, as it doesn't involve making extra sectors and shading surfaces individually. To make these lights, use the Sector Effectors 49 and 50 as described in the Sector Effector tag listing section accessible at the top of this page.
====Shading Techniques====
:Before we learn about the different techniques needed to make shading what it needs to (and should) be, we first need to learn how to shade. All shading is done in 3D mode. Pressing the ''[+]'' key (on the numberpad) makes the object under the mouse pointer get brighter (the shade value decreases). Pressing the ''[-]'' key (on the numberpad) makes the object under the mouse pointer get darker (the shade value increases). For small shading amounts, this can be handy, but to make things dark, pressing these keys over and over can be a pain. So there's a shorter way to do this! Point at the object you want to shade and press the ''[']''+''[S]'' key combination. Then enter the value you want the shade to be. The larger the number, the darker the shade. A value of about 50 is almost completely dark, but you can go all the way up to 128. Negative values are allowed (down to -128) and make things bright (but not noticeably lighter than a shade value of 0 except at a distance). Entering negative values in version 1.3D isn't as easy as in 1.4 or 1.5, but it can be done. To enter negative values, you simply need to enter a value that is greater than 128. The value you enter will simply be 256 minus whatever value you type in. For example, if you type in a value of 155, the value entered will be -100. Remember this only needs to be done in version 1.3D. In versions 1.4 and 1.5, you simply type the ''[-]'' key (not on the numberpad) before typing the value.
::*The first shading technique that you need to learn is that you should offset the shade of walls of a room. To do this, select two opposite directions on your map (i.e. - north and south) and make *all* walls in that direction one shade value (let’s use a value of 10 for now). Now you should give *all* the walls in the opposite two directions (i.e. - east and west) a shade somewhat lighter or darker than the previous shading (let’s use a value of 15 for now). This allows your eye to find the corner of the room much faster, and it gives a much more realistic look to any room (if you make joined walls the same shade, finding the corner can be quite a difficult thing to do). This technique should be used in *every* room and passageway in your level, and it should remain consistent (i.e. – if you made all east-west walls the lighter value, then all east-west walls should remain lighter in the future). If you have a angled wall (i.e. - it doesn’t run perfectly north-south or east-west) use a value somewhere between your east-west and north-south values. It is a good idea to set this type of shading before setting the next type.
::*The second technique that you need to learn is that light travels in a straight line. The light from a ceiling light should make straight shadows when passing past a corner of a hallway or other object. Remember to light your areas according to the positioning of your lights. This is the second type of shading you should set.
::*The third technique is ambient shading. Although light travels in a straight line, there is some ambience. Use multiple sectors for shading, making the sectors farther from the light source incrementally darker. Although this type of shading isn't needed, it definitely makes for some cool looking effects (gradual shading effects make some scenes look excellent – especially at a high resolution).
===Advanced Features===
[[Build]] has a few features that can be very useful to a learning Builder, and make the Building process *much* faster to complete.
====Splitting Walls====
:Splitting walls is quite easy to do. In 2D mode, simply point at the place on the wall where you would like to insert a vertex and press the ''[INS]'' key. That's all you have to do! Easy, huh?
====Resizing and Moving Sectors====
:Another nice feature of Build is the ability to resize and move sectors. To select multiple vertices to move at the same time, hold the ''[RIGHT SHIFT]'' key down, and move the box (you'll see it appear when you move the mouse) over the desired vertices. Now moving one of these vertices will also move the other selected vertices! To move a sector, hold down the ''[RIGHT ALT]'' key and, again, drag the mouse over the desired sector. Now, release the ''[RIGHT ALT]'' key and move the sector with the mouse. Press the ''[RIGHT ALT]'' key one last time to deselect the sector once you have successfully moved it.
:To resize sectors, highlight them with ''[RIGHT ALT]'' and press and hold ''[']'' and ''[f]''. This will bring up a menu with various options, and one of them is to resize, so press the number next to that option, and use the mouse to resize your highlighted sectors.
====Joining Sectors====
:Joining sectors is a useful feature when you don't want a sector to be split up into individual (red lined) sectors. In 2D mode, simply press the ''[J]'' key in the first sector you wish to join (this is the sector from which the properties (height, shade, etc.) will be taken). Then press the ''[J]'' key again on the second, adjacent sector. There you go - No more red line!
====Deleting Sectors====
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.
====Copying and Pasting Sectors====
:Copying sectors can make Building go very fast. You can copy sectors to the current level, or even to another level! To copy sectors, hold down the ''[RIGHT ALT]'' key in 2D mode and move the box (you'll see it appear when you move the mouse) over the desired sectors. Then release the ''[RIGHT ALT]'' key. Once the sectors are selected (they will flash yellow), press the ''[INSERT]'' key. You'll notice that the original sectors have been deselected, however a new set of identical sectors have appeared, highlighted, nearby. Use the mouse to drag these sectors to anywhere you want on the map, then press the ''[RIGHT ALT]'' key again to deselect them.
:You can paste sectors into void space (space which doesn't already contain sectors) or you can paste it inside another sector. To paste inside another sector, drag the sectors inside another sector (sorry for saying sector a lot) and release them with ''[RIGHT ALT]'', mapster will ask you if you want to create an inner loop (for a child sector). This is what we want, so press the ''[y]'' key for yes. You have just pasted a sector inside another sector (I'm doing it again), creating a red line around the boundary. If you hit ''[n]'' then the sectors will be pasted separately (not connected in anyway), so that the two areas will coexist in the same space, which is kind of pointless.
:'''More ways of highlighting: You can highlight a second, third, and multiple sectors by holding down ''[']'' as you drag the selection box over them. This way you can highlight sectors in different parts of the map. Likewise, use the ''[;]'' key to deselect sectors. A small plus or minus will appear next to the cursor depending on which button you're holding. '''
:'''You can select individual sectors with the mouse by moving the cursor inside the sector you want, holding ''[RIGHT ALT]'', and holding ''[RIGHT CTRL]'' as you release ''[RIGHT ALT]''. The sector is now highlighted. This method of selection also works with ''[']'' and ''[;]'' to select/deselect additional sectors by mouse. Simply hold ''[RIGHT ALT]'' and the appropriate button depending on what you want to do, then hold ''[RIGHT CTRL]'' while releasing the other buttons. This becomes very quick and easy to do after doing it a few times.'''
:To copy sectors from one level to another, simply select the desired sectors (as stated above) and press the ''[INSERT]'' key (again, just like before). Now, while the sectors are still selected (they should still be flashing green), load another level. The selected sectors should appear in your level, and you can move them to the desired location. Pressing the ''[RIGHT ALT]'' key will then deselect the sectors.
===Completing This Map===
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!
==Effects List==
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.
If there's an effect you want to do that's not listed here, or you're having trouble understanding how to achieve one of the effects because of the way it's explained, try this mapping guide: [[http://infosuite.duke4.net/]], which is arguably the best, most succinct, and easiest to read mapping guide, great for both beginners and veteran mappers. It's illustrated with diagrams.
:*[[:Category:Editing Doors|Doors]]
:*[[:Category:Editing Parallaxed Skies|Parallaxed Skies]]
:*[[:Category:Editing Lighting Effects|Lighting Effects]]
:*[[:Category:Editing Moving Sectors|Moving Sectors]]
:*[[:Category:Editing General Sector Effects|General Sector Effects]]
:*[[:Category:Editing Water|Water]]
:*[[:Category:Editing Walls and Wall Effects|Walls and Wall Effects]]
:*[[:Category:Editing Mirrors|Mirrors]]
:*[[:Category:Editing Teleporters|Teleporters]]
:*[[:Category:Editing Ending the Level|Ending the Level]]
:*[[:Category:Editing Switch Effects|Switch Effects]]
:*[[:Category:Editing C-9 Effects|C-9 Effects]]
:*[[:Category:Editing Sectors That Rise and Fall|Sectors That Rise and Fall]]
:*[[:Category:Editing Music and Sound Effects|Music and Sound Effects]]
:*[[:Category:Editing Working with Sprites|Working with Sprites]]
:*[[:Category:Editing Multiplayer Level Making|Multiplayer Level Making]]
:*[[:Category:Editing Miscellaneous|Miscellaneous]]
:*[[Sector Effector Reference Guide]]
[[Category:Level editing documentation]]

Latest revision as of 03:46, 26 October 2014

Build/Mapster32 Map Editing

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, although as of 2011 some of the less well known yet handy new mapster32 features have been added.

Information About Maps

What is a map?

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

What can I do to maps?

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.

Can I look at the game maps?

Yes. The maps of the original game are contained in the DUKE3D.GRP file, in your game directory. If Mapster32 is in the same folder as the DUKE3D.GRP file: open Mapster32; press [esc], this opens the basic menu and type [L] for (L)oad. Then press [ctrl]+[G] and all maps from a given .grp file are listed. Scroll down with the Arrow Keys and select any map on the list and press [enter]. - You can also extract a map from a .grp file with DukeResART by Peter Gerber and place it in the game directory Mapster32 resides.

What do I use to make maps?

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. In this FAQ we are specifically covering Mapster32.

Can I make maps for other games?

Yes. Mapster32 was designed in mind for Duke Nukem 3D, but it can also be used to make levels for NAM, WWII GI, Redneck Rampage, and others.

How do I run user maps?

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.

What exactly is the Build engine?

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, you can fake it by using sprites and overlapping sectors on top of each other. A modern eduke32 feature called [TROR] (true room over room) has been created to give the Build engine the appearance and functionality of a true 3-D engine, with only minor limitations. Most Build games also allow a level of interactivity in their environment that was unmatched for years.

Things You Should Know Before Starting

Introduction

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!

2D and 3D Modes

There are two different editing modes in Mapster32. The 2D mode shows the layout of the map, sprites, tags. The 3D mode 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 and resize 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 can change the shade here as well.

Hitags And Lotags

NOTE NEW SYSTEM: (Still read the rest of the information as it's completely valid, the following describes a method of making tagging MUCH easier) A new smart tagging system has been implemented in eduke32 (for the 'pairing' of effects and sprites together). In addition to tagging with numbers, you can now tag with letters as well. This means if you give say a sector effector a hitag of "door1" (you can use any name) the engine automatically assigns the SE an unused hi-tag. If you then type "door1" on a switch, it assigns an identical number. Note numbers can still be used just as before.

This has 3 benefits. Firstly, it means you don't have to remember numbers when linking effects together, you can remember them by an appropriate name, which is FAR easier. Secondly, if you stick with the smart tagging system, you'll never use a number that has already been taken, which means you won't accidentally link 2 effects together which shouldn't be linked, and you don't have to keep track of which numbers you've used as was previously necessary. Lastly, while most effects use the hitag to pair up, some effects use the lotag instead, and remembering which is which used to be a hassle. Now, however, the smart tagging system knows which tag an effect uses, and will only assign words to that tag.

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

  • Sector Hitag : Press [H] in the desired sector
  • Sector Lotag : Press [T] in the desired sector
  • Sprite Hitag : Press [ALT]+[H] on the desired sprite
  • Sprite Lotag : Press [ALT]+[T] on the desired sprite
  • Wall Hitag : Press [ALT]+[H] on the desired wall
  • Wall Lotag : Press [ALT]+[T] on the desired wall

These same tag assignments can be made in 3D mode as well. Here are the key strokes for use in 3D mode:

  • Sector Hitag : Press [']+[H] in the desired sector
  • Sector Lotag : Press [']+[T] in the desired sector
  • Sprite Hitag : Press [']+[H] on the desired sprite
  • Sprite Lotag : Press [']+[T] on the desired sprite
  • Wall Hitag : Press [']+[H] on the desired wall
  • Wall Lotag : Press [']+[T] on the desired wall
NOTE: To set wall tags in 2D mode, it is advised to turn off the grid, so that you are not selecting sprites. Press [G] several times to turn the grid off.

Placing Sprites

NOTE: When I say that you should press the [V] key (or any other key for that matter) on a sprite, I mean that you should move the cursor over that sprite with the mouse, and then press the key.

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.

NOTE: If you place a sprite on a wall in 3D mode (using the [S] key), the sprite will automatically be "pasted" flat to the wall that you placed it on.
NOTE: Only "square" sprites can be made to lie flat on the floor. Sprites that fit this condition are ones that have the same x-axis height as the y-axis height. Note that this limitation does not apply if you are using the Polymost renderer.

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 and use [/] and [*] to zoom in and out. When you have found a suitable texture, press [ENTER]. You can also search for textures' names using [s] then typing the name of the sprite and hitting [ENTER]. Unless you know for sure what the sprite's name is, this might not be all that useful, but sometimes educated guesses can be lucky. You can also go to a tile number you want by pressing [g] then typing the number and hitting [ENTER]. This saves a lot of time if you know what tile you want, or want to skip ahead a few thousand tiles. You can also use the 'goto' feature in 3D mode by moving the cursor over a wall or sprite and hitting [g].

To change palette (color) of the sprite, simple press [ALT]+[P]. Then the program will ask for palette number. Bosses won't end level when their palette is set to 21.

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. Holding down [CTRL] while doing the same will move the sprite onto the ceiling or ground.

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.

The Special Sprites

There are a few special sprites that need to be explained. The most important ones are as follows:

Sector Effectors

Sprite #1 - The sector effector sprite is the most used sprite in the entire game. It does just about what the name says: effects a sector. These sprite are used to create game effects and manipulate sector attributes. These sprites are the main tool used to create all effects in Duke Nukem 3D. Place the sprite in the sector to effect. The lotags for these are preset, and a list of the lotags for this sprite can be found in the Sector Effector Reference Guide.

Activators

Sprite #2 - Activators are used to activate a sector effector (SE) sprite when a switch or touchplate is triggered. They also can activate sector lotags.

Touchplates

Sprite #3 - The touchplate will activate an activator or a masterswitch sprite, when the player walks over the sector that contains it. A hitag of 0 means that the touchplate will activate every time the player walks on top of the sector. A hitag of greater than 0 means that the touchplate will only be activated that many times (whatever number you put on there). The only number I've ever seen used that is greater than 0, is 1 (to activate an effect only once). But use the value that you want to.
If the touchplate and the sector containing it are at different heights then the sector will be raised to the height of the touchplate when the game starts, and lower to the sector's original height when the player walks on it.
By default the touchplate only activates if Duke walks on it, i.e., if he is touching the floor of the sector. If the touchplate sprite's angle is set to 512 (south) then it activates as soon as Duke enters the sector, no matter if he is airborne or not.

ActivatorLocked

Sprite #4 - This sprite locks the sectors lotag function, so that it cannot take effect until the player unlocks it with a switch or touchplate. This is used to make locked doors and other such effects.

Music&SFX

Sprite #5 - This sprite is used to create all the sound effects in the game. It can be used in 3 ways:
  • 1. Activation Sound
  • 2. Ambient Sound
  • 3. Echo Effect
We will go into this sprite in much more detail later on.

Locator

Sprite #6 - These are used to define a path that moving sectors and certain enemies (the Pigcop Recon Cars) will follow. Both moving sectors and the Pigcop Recon Cars cannot be used in the same map. They are also used as the endpoints of a two-way train.

Cycler

Sprite #7 - This sprite is used to make the sector floor, walls, and ceiling pulsate in brightness. Section 4.20 goes into great detail about this sprite.

Masterswitch

Sprite #8 - This sprite is the exact same as the activator, but it has the ability to use a time delay. The hitag is the time delay that the effect should wait to be carried out. I think that a value of 32 is one second.

Respawn

Sprite #9 - This sprite is used to spawn enemies or other items after activated by a touchplate or switch. An example of this is entering a room, and a bad guy spawns behind you.

GPSPEED

Sprite #10 - This sprite is used to define rates of effects. The lotag is the only thing that is needed here, and the value for it is how fast the effect should go (i.e. - smaller means slower). These cannot be used on all effects, but they can be used on some.

Your First Map

Installing and Setting up Mapster32

Mapster32 is bundled along with EDuke32. After extracting the files into your Duke Nukem 3D directory simply double click the program executable and you will be given prompts where you may select your desired settings.

Creating a Room

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.

NOTE: The user map TUTORIAL.MAP, is an example map that which includes everything covered in this section. If you want to see exactly what something looks like as you go along in this section, just take a look at this map in Mapster32.
NOTE: Save early and *often*! I cannot stress this enough! Pressing the [ESC] key in 2D mode allows you to save your work by pressing the [S] key (saves it as the current filename (the default is NEWBOARD.MAP)) or by pressing the [A] key (saves it as a new filename, which you specify). Mapster32 also autosaves every 3 minutes to autosave.map by default.

The first thing that we'll do is create a square room. Press the [G] key several times, until the largest grid size in Mapster32 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.

Setting a level starting point

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

Adding Textures

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 much like the game. The current texture, however, is quite ugly, and one that you do not want to use, especially since it can glitch and start animating sometimes. 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). To shift the texture, hold down [SHIFT] while pressing the same keys.

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

Adding Sprites

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 and all kinds of eye candy, as well as certain objects that cause the various effects seen in the game like explosions, working doors, flickering lights etc. 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. This limitation is not present in the Polymost renderer.

Adding a Child Sector

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.

Raising and Lowering Sectors

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 Mapster32. 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?

Parallaxing Skies

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.

Sloped Surfaces

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

Creating a Circle

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.

The Art of Shading

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!

In addition to the sector based lighting described below, another why to light your levels is by using the advanced Polymer renderer's dynamic lights. These have the ability to cast shadows, and can make a Duke level look much more modern (especially when combined with the HRP.) Dynamic lights are also faster to implement than sector based shading, as it doesn't involve making extra sectors and shading surfaces individually. To make these lights, use the Sector Effectors 49 and 50 as described in the Sector Effector tag listing section accessible at the top of this page.

Shading Techniques

Before we learn about the different techniques needed to make shading what it needs to (and should) be, we first need to learn how to shade. All shading is done in 3D mode. Pressing the [+] key (on the numberpad) makes the object under the mouse pointer get brighter (the shade value decreases). Pressing the [-] key (on the numberpad) makes the object under the mouse pointer get darker (the shade value increases). For small shading amounts, this can be handy, but to make things dark, pressing these keys over and over can be a pain. So there's a shorter way to do this! Point at the object you want to shade and press the [']+[S] key combination. Then enter the value you want the shade to be. The larger the number, the darker the shade. A value of about 50 is almost completely dark, but you can go all the way up to 128. Negative values are allowed (down to -128) and make things bright (but not noticeably lighter than a shade value of 0 except at a distance). Entering negative values in version 1.3D isn't as easy as in 1.4 or 1.5, but it can be done. To enter negative values, you simply need to enter a value that is greater than 128. The value you enter will simply be 256 minus whatever value you type in. For example, if you type in a value of 155, the value entered will be -100. Remember this only needs to be done in version 1.3D. In versions 1.4 and 1.5, you simply type the [-] key (not on the numberpad) before typing the value.
  • The first shading technique that you need to learn is that you should offset the shade of walls of a room. To do this, select two opposite directions on your map (i.e. - north and south) and make *all* walls in that direction one shade value (let’s use a value of 10 for now). Now you should give *all* the walls in the opposite two directions (i.e. - east and west) a shade somewhat lighter or darker than the previous shading (let’s use a value of 15 for now). This allows your eye to find the corner of the room much faster, and it gives a much more realistic look to any room (if you make joined walls the same shade, finding the corner can be quite a difficult thing to do). This technique should be used in *every* room and passageway in your level, and it should remain consistent (i.e. – if you made all east-west walls the lighter value, then all east-west walls should remain lighter in the future). If you have a angled wall (i.e. - it doesn’t run perfectly north-south or east-west) use a value somewhere between your east-west and north-south values. It is a good idea to set this type of shading before setting the next type.
  • The second technique that you need to learn is that light travels in a straight line. The light from a ceiling light should make straight shadows when passing past a corner of a hallway or other object. Remember to light your areas according to the positioning of your lights. This is the second type of shading you should set.
  • The third technique is ambient shading. Although light travels in a straight line, there is some ambience. Use multiple sectors for shading, making the sectors farther from the light source incrementally darker. Although this type of shading isn't needed, it definitely makes for some cool looking effects (gradual shading effects make some scenes look excellent – especially at a high resolution).

Advanced Features

Build has a few features that can be very useful to a learning Builder, and make the Building process *much* faster to complete.

Splitting Walls

Splitting walls is quite easy to do. In 2D mode, simply point at the place on the wall where you would like to insert a vertex and press the [INS] key. That's all you have to do! Easy, huh?

Resizing and Moving Sectors

Another nice feature of Build is the ability to resize and move sectors. To select multiple vertices to move at the same time, hold the [RIGHT SHIFT] key down, and move the box (you'll see it appear when you move the mouse) over the desired vertices. Now moving one of these vertices will also move the other selected vertices! To move a sector, hold down the [RIGHT ALT] key and, again, drag the mouse over the desired sector. Now, release the [RIGHT ALT] key and move the sector with the mouse. Press the [RIGHT ALT] key one last time to deselect the sector once you have successfully moved it.
To resize sectors, highlight them with [RIGHT ALT] and press and hold ['] and [f]. This will bring up a menu with various options, and one of them is to resize, so press the number next to that option, and use the mouse to resize your highlighted sectors.

Joining Sectors

Joining sectors is a useful feature when you don't want a sector to be split up into individual (red lined) sectors. In 2D mode, simply press the [J] key in the first sector you wish to join (this is the sector from which the properties (height, shade, etc.) will be taken). Then press the [J] key again on the second, adjacent sector. There you go - No more red line!

Deleting Sectors

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.

Copying and Pasting Sectors

Copying sectors can make Building go very fast. You can copy sectors to the current level, or even to another level! To copy sectors, hold down the [RIGHT ALT] key in 2D mode and move the box (you'll see it appear when you move the mouse) over the desired sectors. Then release the [RIGHT ALT] key. Once the sectors are selected (they will flash yellow), press the [INSERT] key. You'll notice that the original sectors have been deselected, however a new set of identical sectors have appeared, highlighted, nearby. Use the mouse to drag these sectors to anywhere you want on the map, then press the [RIGHT ALT] key again to deselect them.
You can paste sectors into void space (space which doesn't already contain sectors) or you can paste it inside another sector. To paste inside another sector, drag the sectors inside another sector (sorry for saying sector a lot) and release them with [RIGHT ALT], mapster will ask you if you want to create an inner loop (for a child sector). This is what we want, so press the [y] key for yes. You have just pasted a sector inside another sector (I'm doing it again), creating a red line around the boundary. If you hit [n] then the sectors will be pasted separately (not connected in anyway), so that the two areas will coexist in the same space, which is kind of pointless.
More ways of highlighting: You can highlight a second, third, and multiple sectors by holding down ['] as you drag the selection box over them. This way you can highlight sectors in different parts of the map. Likewise, use the [;] key to deselect sectors. A small plus or minus will appear next to the cursor depending on which button you're holding.
You can select individual sectors with the mouse by moving the cursor inside the sector you want, holding [RIGHT ALT], and holding [RIGHT CTRL] as you release [RIGHT ALT]. The sector is now highlighted. This method of selection also works with ['] and [;] to select/deselect additional sectors by mouse. Simply hold [RIGHT ALT] and the appropriate button depending on what you want to do, then hold [RIGHT CTRL] while releasing the other buttons. This becomes very quick and easy to do after doing it a few times.
To copy sectors from one level to another, simply select the desired sectors (as stated above) and press the [INSERT] key (again, just like before). Now, while the sectors are still selected (they should still be flashing green), load another level. The selected sectors should appear in your level, and you can move them to the desired location. Pressing the [RIGHT ALT] key will then deselect the sectors.

Completing This Map

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!

Effects List

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.

If there's an effect you want to do that's not listed here, or you're having trouble understanding how to achieve one of the effects because of the way it's explained, try this mapping guide: [[1]], which is arguably the best, most succinct, and easiest to read mapping guide, great for both beginners and veteran mappers. It's illustrated with diagrams.