Level editing: Difference between revisions
Line 33: | Line 33: | ||
===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 | 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. 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== |
Revision as of 00:18, 11 October 2008
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.
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 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>.
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.
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.
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. 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 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.
Hitags And Lotags
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.
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.
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 section 5.4.
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.
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 Build
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.
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 Build.
- NOTE: Save early and *often*! I cannot stress this enough – I have lost tons of work before by forgetting to save my work. 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).
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.
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. 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.
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 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.)
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, 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.
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 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?
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!
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 resize a sector, simply move each vertex to the place you wish them to be. 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.
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 green), click and hold the left mouse button (be careful not to move the selected sectors) and press the [INSERT] key. Keeping the left mouse button down, move this set of sectors (you will see that they have been copied) to the desired location in your level. Press the [RIGHT ALT] key again to deselect them.
- 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.