Duke Nukem Editing Project Tutorials
In this tutorial I will explain the steps you have to take to build a basic map. Because there's a lot to it I divided this in several steps:
By the way, when you want to test your map, you have to build it first. Before you do, go to the file menu and select the option to check the map for errors. Then, if you haven't changed, deleted or added brushes, you can use the script command, which might save some time (especially in bigger maps). Next to each title, I write down whether you can use this script command, or have to use the build command. When you don't have enough resources yet to run the map, it says not playable.
Reading the scssoft tutorial first is recommended.
Before you start mapping there are some things you need to know or you need to do with Prismed:
The diffirence between indoor and outdoor mapping is pretty big so I made an example map for each. I recommend learning to use outdoor mapping before you do indoor, since indoor is a little bit more difficult.
You can change the grid settings by clicking options in the main toolbar and clicking grid settings. The default grid size is 16 and I recommend using that most of the time, it's accurate but not too small.
Prismed provides a handy map hierarchy. Within this hierarchy you can create groups which might give it a better overview. This is how I build my maps in this hierarchy:
I don't place brushes in a group unless a lot of brushes form one object (a building, a wall, etc.). Then I create two groups: world and game. In the game group I place all the objects in the game, like the babes, the monsters and the powerups. In the world group I place all the other entities. Those are effects, the player start, the game tracks, etc. Most of the entities I place in this group are invisible. When multiple entities form one effect I place them in a seperate group (game tracks, keyhole etc.). When trying to edit other peoples maps, you may notice they use a similar structure.
Start out with selecting "Void Space" as CSG starting with. This means that we work in void space and add brushes to build your map. Which gets us right to the subject I want to talk about: brushes. There are three types of brushes a beginning mapper needs to know about: solid, substracted and area brushes. Solid brushes are visible, solid brushes used as almost every solid material in your map. Substracted brushes actually create a hole within solid brushes. For example, when building a building, you make a solid cube brush, then use substracted brushes to create a doorway, windows and the inside of the building. You can use solid brushes within a substracted brush as you please. Area brushes are brushes that mark an area. This is used with so-called area entities like area damage, game track and map change. Now, we started with void space, so we better start designing our map with solid brushes. You can create solid brushes, by making a brush, and select the type "Add". This is the default type, so you can just create a solid brush by creating a brush.
Now it is time to design your map. There are a few requirements you have to think of when designing a map. You have to remember the fact that DNMP is a platform game, and you shouldn't want him to walk in too many directions. To give it a nice background you shouldn't design your map too flat either. For example, when designing a downtown map, Duke walks on the street with some buildings in the background. Sometimes Duke may want to enter a building, or collect something in front of the building, but he doesn't want to be able to walk to every corner of the street, since that makes it too fuzzy. You should always keep that sort of stuff in mind when you are designing a map, even when you don't make a downtown map. Other things you have to keep in mind are not to add too much details in the beginning yet, since you might have to move or delete or even redesign them when adding certain special effects. So keep the details for when you've already done the most important effects. You have to build a good ending doorway/hallway/whatever. A problem I had when building an ending was that duke can't escape from an auto track, so when he walks into a forcefield during such an auto track, he will lose ego untill he dies. So always make sure the forcefield will come on the game track and not on the auto track. It's also nice if the ending is not fully visible. You should learn other requirements by getting experience in mapping. Keep in mind that your maps shouldn't be too big. When creating big levels, try to divide it into several maps.
Now that you have your map, you should start adding shaders, if you haven't done so yet. You can add a shader by selecting the brush in the map hierarchy and setting it's shader for the whole brush, or you may want to click on the plus next to the name of the brush to select each polygon seperately. When selecting a shader you can select an episode to the right. Know that when mv_ stands in front of the rest of the name of the shader, it's a moving shader, used for effects like riding trains. You can also select a helper, most used for the invisible shader (making a brush invisible doesn't make it disappear, it's just invisible).
Indoor level design is much like outdoor but has some major diffirences. You can do the same with indoor as you did with outdoor, but that might take a while, while there is a much faster way. You set the CSG starting with to "Solid Block" which means that at first, the whole world is a solid brush. To build your world, you don't or hardly use solid brushes, you use substracted brushes. You can create those by creating a brush and setting its type to "Sub". As I explained before, substracted brushes create a hole within a solid brush. So Duke can walk inside those brushes. This way you can create a hallway by creating one big brush, the size of that hallway, instead of using a brush for walls, ceiling and floor seperately. Shaders with these type of brushes work the same way as with solid brushes.
When designing indoor maps, there are a few more requirements. The camera needs a good distance, so you have to create space for this camera. You can no longer let it float in void space, since everything around your map is a solid block. You have to create this space. But how? You need to see the floor between the camera and Duke, because a bottomless pit would not look nice. Also the walls and maybe even the ceiling would/should be visible. How can you create this space while your map is still realistic? Of course you can invent stuff yourself, but in the game you should look at how this problem is handled in the original maps. Usually they make it look like Duke is walking in the middle/at the side of a big room. Whatever you do, don't mess this up, because it can make your map very ugly. Other things you should think about is not to let Duke walk in too many directions, it's probably best to stick to one direction. When you want to do corners, you might have a lot of trouble with your camera(s). Keep in mind that your camera should NEVER go through walls. Working with diffirent height levels might give your map a lot of dimension too. When you want to give diffirent height levels to your indoor map, you should read the ladders tutorial and learn how to create elevators with the demo maps.
Creating player starts is very simple and if you followed the Scssoft tutorial as I recommended, you've probably done it before. Simply do it by clicking the stoplight shaped player start button beneath the entity button. Click at the point you want to insert it and select create. After clicking create, you have a cube with the size of Duke. This way you can place it perfectly the way you want it to be. The arrow points at the point Duke looks at when starting the game.Now, a little bit more difficult: the game tracks. You've probably created game tracks before too, but we'll go a little further with that. Create a game track by clicking the odd shaped entity button and selecting the areas=>interactive=>game_track entity. This is a invisible entity, so place it wherever you want. I usually put all non-visible entities next to each other, and at Duke's standard height. Duke's standard height is the height he is on most of the time. Insert two or more items, but it's wise not to start with two and add others later, but immediately insert all the items you need. This is because when you insert items later they might show up in the wrong place.(If you do need to add track points, make sure you click on the last track point you inserted to continue the track in the original direction to insure continuity) A 90 degree turn takes two items, and for other types of turns you should just try different ways out. The more items you use, the better everything is controlled. When you've created a nice track you can create an 'area brush'. You can do that by selecting your game track entity and creating a brush with the type area.
Now we get to the last part needed to build a runable map. Sunlights are a very simple form of lights. They light everything in it's view without limit and the light will not be stronger when it's nearer to the entity. Create a sunlight by clicking the entity button. It isn't hard to find: lights=>sun_light. Place the thing at an angle from the map from where a real sun would shine and let the arrow point at the map and make the cirkle B-I-G. Note that everything on the other side of the circle isn't lit. This could give a nice effect, try to experiment with it if you want.
Omni lights work alot diffirent than sunlight. When creating an indoor map with omni lights, it's probably best to create a lot of small lights, which will create the effect of realistic lights. The difference with sunlight is that this light shines all around itself, but quickly fades to black near the circle. In other words, it has all the abilities of a normal bulb. Because the light gets more bright near the entity it's probably best to create more than one lights. I usually make the circle twice as big as it is at default, and then place the next light at the border of that cirkle. Place the line of lights between Duke and the camera, so everything has a good visibility. Als experiment with shadows, it may create some nice effects.
Area damage is exactly what it's called. If Duke walks through a specified area he will be damaged in a certain way. This damage can be anything, in my example map I've set it to bottomless pit. This means that when Duke falls through the specified area, the camera will no longer go down, you will hear Duke's scream and Duke dies. This can be used anywhere, it gives the effect of very high place like on top of tall buildings, mountain or whatever. Create an area damage by clicking the entity button and selecting areas=>effectors=>area_damage. It's invisible so put it wherever you want. Set the options. Damage is the amount of damage taken per second. If you want Duke or anything else to die at once set it to a ridiculously high amount like 10.000 or something, so it's sure it happens at once (for damage like a bottomless pit that's necessary, you wouldn't want Duke to survive such a fall, because he will fall forever). Set the damage_type to the kind of damage you want given. I've already explained what happens with a bottomless pit, with damage like electricity you see him get hurt and you see little bolts each time it hurts. The other damage_types have similar effects. Damage_target all actors is the most realistic, imagine how it looks when only Duke gets hurt :S. Mechnuke target means if mechnuke gets hurt by it too. Now you have to create an area. You've already done this with the game tracks so you should know how this works. Just make sure that your area_damage entity is selected when you create a brush of type "area". Set your area, don't make it high, unless you have a special meaning by it. For example, when Duke walks over a floor charged with electricity the area should only be a small plate over the area that's charged with electricity. That area shouldn't get higher than Duke's feet, or else it will still hit Duke even when he jumps.
Babes are very important in this game. What would Duke be without babes? The babes are actually his mission in this game. To complete a level he must rescue a babe (which automatically seems to defuse a bomb) and find a key. Creating a babe isn't hard. Click the entity button and select object=>babe. With grid steps of 16 make sure it's 3 grids from the gametrack. Click create and the shape of the babe appears and another arrow. Let the arrow point at the game track and make sure the babe doesn't float or stick in the ground. You may need to adjust the grid settings. You can now test your babe.
The securtity camera is a little bit more difficult. You can use it for diffirent goals, in this case I use it for when Duke rescues a babe. When he does, you get a good close view like you do in the game. Once again, click the entity button and select camera=>security_camera. Place it where you want the player to view from and click create. Once again, an arrow appears and you have to let it point at the babe AND the place where Duke will stand. The settings are very important: set time_out to 6.000 and start_active false, no_control true and manual_release true (if you don't want the player to move during these 6 seconds set it to false). Now select your babe and click on the links tab. Click on activated and select your camera for entity, and make In Pin active. Now your camera is done. Test it a few times since it won't be perfect at once.
A key is a powerup. Powerups are visible entities that Duke can pick up. You may see them floating around the levels during the game. Create a powerup by clicking the entity button and selecting powerup=>... In our case we want to create a key for our keyhole-to-be. So select the key and place it where it should be. You may let it float, since it's floating anyway, you may already know that powerups are always floating and spinning. Make sure the powerup is visible and reachable. When creating a key, I recommend setting the color to yellow.
The keyhole is the little machine where Duke has to put his card in. When he does, the forcefield disappears and Duke can go through. Click the entity button and select object=>keyhole. Place it somewhere close to where your forcefield will appear and click create. Make sure it doesn't float or disappear in the ground and go to its settings. You don't have to do much just make sure activated_once is set true, and key_type has the same color as your key. Now at last the forcefield. I don't have to explain this I guess, just click the entity button and select world=>force_field. Place it at exactly the same spot as the keyhole and click create. Make sure everything is set to true except for outside_lit. Also make sure the color of the key is still the same. Now make sure your forcefield entity is selected and create a new solid brush. This is going to be your forcefield so place it where your forcefield should be. Now here comes the tricky part: the shaders. Select the brush and go to it's complete shader settings. Click Browse and go to the map helpers. Now double click the invis shader and your brush should be invisible. Now select the side of your brush where you want the forcefield to be and go browse shaders again. Go to effects and select ff_y for a yellow forcefield. Select one of the other ff_... for other colors. Now you should have a beautiful forcefield. There's only one thing left to do. Select your keyhole entity and go to it's links and set a link to the forcefield like you did before with the security camera. Now your keyhole and forcefield are set.
Monsters are the creatures that run into Duke's bullets. They are created to die. Monsters can be of any type and of any size. Create a monster by clicking the entity button and selecting monster=>... There are a lot of monsters, and they are ordered to make it easier for you to find a specified monster. The are three levels of strength of each monster. The first level is weak and slow, the third is strong and fast. They are placed in the episodes in which they first appear. Place a monster where you want it to appear and click create. Play with the settings to get it to behave like you want and your done.
For almost every entity I handle in this tutorial counts that the settings I suggest are only recommendations for beginners. Experiment with it's settings and where it is placed to get the effect you have in mind.
Special Thanks to RG