Tips for Designing a Killer Level
DeadMeat's Design Tips (DDT!)

Note: this guide was written specifically for Quake maps. Most of the concepts apply to Hexen2 and Quake2 however.
Now that you've progressed through all the lessons in this tutorial, you know everything I know about using BSP to create a Quake level. With that knowledge in mind, you can crank out levels in fairly short order. But, how do you insure that anyone will actually want to play your level? How do you turn your idea into a truly Killer Quake level? Hopefully, this page will guide you down the right path to help you turn your map into a work of art that people will want to play again and again. (Sounds pretty ambitious doesn't it?)
Actually, it's not that hard to make a Killer Quake level, but it requires you to remember a few simple guidelines as you go along. Now, before we go any further, let me say this: The tips and ideas I present here are based on my personal preferences. I've said repeatedly that I'm no artist, but I know what I like. You aren't required to follow the suggestions I make here. But, if you do, you might find yourself making a better level than you first thought possible. However, if you don't like something I suggest, feel free to ignore it and do something different. It's your level after all. Now, with that out of the way, let's get started...

Textures
One of the best things you can do to make your level look good is to choose textures which go together well and fit the overall theme of the level. What's that? You don't have a theme? Well, that's the first mistake people tend to make (I know, I've done it!). They jump in making a level, building all sorts of cool architectural designs, without even considering what type of level they are wanting to build. What results is an eclectic mix of medieval/military/wizard that may play all right, but doesn't earn the title 'Killer'.
As an example, look at the screenshot below (this is from a level I'm working on, by the way). This room contains a combination of military (on the pillars) and medieval textures. It doesn't necessarily look bad, but it looks a little out of place.
Now, here's a shot of the same room, with the military texture replaced by a medieval type texture. Looks much better, don't you think? Now it looks more like the pillars belong in the room.
Of course, it's not just a matter of having similar textures that make your level theme coherent. A lot of factors contribute to how a world looks. For instance, you might build a really detailed medieval-type world, then ruin it by putting a flourescent light fixture in it. Sure, it's a little thing, but it can really detract from your level's appearance. Remember you can set the WorldType flag on your Worldspawn Entity so that the proper key appears for the type of world you're building. That way a keycard doesn't show up in a wizard's castle.
Another aspect of texturing to consider is the alignment. This doesn't just mean that textures should be aligned properly vertically and horizontally, even though that's important too. The alignment I'm talking about is more subtle. Look at the following two screenshots:
Which one looks more realistic to you? Most people would say the second one, but why is that? Look at the diagonal support beam. In the first picture, the textures on this beam haven't been aligned, so what results is an un-natural look. No carpenter in his right mind would cut a beam against the grain that way, even in the Quake world.
Notice that in the second picture, though, the texture has been rotated so that it aligns along the beam, making it appear more like something you would see in the real world. It's a small touch, but players notice things like this and it shows that you care about the quality of your work. Besides, BSP gives you complete control over texture rotation and alignment, so why not take advantage of this? Your fans will appreciate it...

Lighting
One of the really cool things about the Quake engine is the lighting that it allows you to do. Unlike Doom and other similar games, you have nearly complete control over how your level is lit. There are several entities that simulate lights (torches, flames, flourosparks, etc.) along with the good old 'sourceless light' entity.
The light entities you place can be used to cast cool-looking shadows and create dark, scary corners. Make full use of this feature and your level's appearance will improve dramatically.
Now, when you're designing levels, you have two choices. You can either put light entities in as you go or wait and put them in last. I prefer the latter method, simply because it speeds up compile time while I'm building a level. Plus, I can see the level better with it being lit fullbright, so I know if the architecture is what I want it to be. This is a matter of personal preference, so feel free to use whichever method you choose.
What I recommend is to fully create your level with no lights in it. Then, when it's nearly finished, put in any obvious lights you want. These are entities that appear in Quake as lights (torches, etc.). Put these around wherever you want so that your level appears realistic, but not real cluttered. Be careful not to make these entities too bright or the textures on nearby walls will look weird.
Now, compile and run your level. There are probably going to be dark spots between the entities you have put in. Is this what you want? Is it too dark? If so, put some 'light' entities (the sourceless kind) in the dark areas, but don't make them too bright. The best looking levels have realistic light sources. You want the player to think the light is coming from the items they can see, if possible, but also remember, you can put light entities inside brushes textured with the sky textures and they will shine through, giving the appearance of light coming from the sky.
Another thing to remember. Torches and flames are non-solid entities. The player can walk through them. For flames, this is fine, but you might want to consider putting a 'trigger_hurt' entity inside the flames so the player gets burned if he stands there too long (a little touch of realism). For torches, the fact that the player can walk through them kills their realism. For that reason, it's a good idea to put torches a little above the player's head, so there's no chance to walk through them.
One last thing before we leave lighting. When you are completely finished with your level and are ready to release it to the world, run LIGHT with the -extra command line parameter. This will perform extra sampling on your map and provide you with a little better lighting. The improvement isn't much, but it's noticeable in most maps.

Secrets and Powerups
Quake players expect to find secrets from time to time. In fact, part of the fun of a well-designed Quake level is hunting for a Quad powerup that will let you dispatch that pesky Shambler that's guarding the exit. Most levels seem to have 3-5 secrets and that's probably a pretty good number. You want a few to make things interesting, but don't put in so many that your level turns into a quest. Secrets in deathmatch maps can also be used to hide armor or other stuff the player needs to survive.
There are a couple of things to watch for when creating secret areas. First, make sure the player has a chance to find it without just randomly shooting the walls in every room. This gets old real quick and wastes ammo that could be needed to survive later in the level. On the other hand, you don't want to make the secret so obvious that it's not really a secret anymore either. Remember, a secret is easy to find when you know it's there (and you do, since you created it). Give the player a chance to find it, but make him work for it :-)
One easy way to point out a secret door is to create a mis-aligned texture on the door or use a slightly different texture than the surrounding wall. Id does this quite a bit in their levels. Look at the following screenshot from E1M6:
Now, it's obvious there's a door there. The means to open the door isn't so obvious (shooting it won't work), but the player knows to look around the area for something that will open the door.
This is probably a good time to mention switch placement. In this example, the switch that opens the door is located high overhead where it's really hard to find, but still, it's right next to the door. The thing I hate most is when a switch to open a door is located clear at the other end of a map, then when you activate the switch, there is no message telling you what happened. I hate spending time flicking a switch repeatedly to see what it does. Remember, there is a message key available on most entities. Use it wisely and your players will appreciate it.
Another thing you might want to consider regarding secrets is to make all parts of your map accessible even if the player never finds the secrets. Some people don't care if they find the secrets or not. They're out for blood and nothing else. So, don't hide the key to the exit door inside a secret that the player might never find. Also, it's a good idea not to hide valuable weapons inside a secret room if the player needs them before he has a chance to find that room. For instance, don't put the grenade launcher in a secret area, then overwhelm the player with zombies before he gets to that area.

Framerate Considerations
Note: some of the information in this section came from a great article written by Steve Tietze (Rogue Entertainment). The full text of his article is available here; I'll just summarize some of the high points on this page.
Perhaps the most important thing you can do to make a level playable is to keep the amount of lag as low as possible. What does this mean? Have you ever played internet deathmatch on E1M7? Notice the way the screen lags when you stand in one corner and look across the lava pit at the other corner of the room? That's lag, caused by high polycount. You might have been lagging because of a bad internet connection, but this made it worse. The reason for this is that there are a lot of brushes in view from the position where you are standing. The more brushes in view, the more work the Quake engine must do to display the screen. Get this number too high and you get lag.
I can hear you asking yourself, "Okay, that's fine, DeadMeat, but how do I find out how many brushes are in view?" Well, glad you asked. Quake has a very important console command that you should learn to use when designing your level. Bring down the console and type R_SPEEDS 1. Close the console and you'll see a string of numbers scrolling across the top of the screen. Here is a screenshot of E1M7, since I mentioned it earlier, with the R_SPEEDS turned on:
The first number you see on the left (32.8 MS in our case) allows you to calculate an approximate frames-per-second you are getting from the current view. To calculate the FPS, take 10 divided by MS * 100. Using our screenshot we get approximately 30 FPS. That's not too bad, but could be better. This screenshot was taken at 320x200 resolution. Higher resolutions will produce slightly higher MS counts, meaning lower FPS.
The next number you need to watch is the 3rd number from the left (459 in the above screenshot). That number tells you how many brushes the Quake engine is displaying in the current viewscreen. If you want your level to be playable in internet deathmatch, this number should stay below 450. You can get away with 500 or a little higher in single player levels, but I wouldn't advise it. Now, keep in mind that in the above screenshot, this is single player mode. If there were 8 other players in here, the numbers would be higher as there is more for the engine to display. Also, explosions tend to put a drag on the Quake engine, so if there were lots of rockets exploding in the above shot, the lag would be tremendous.
If you ever run a level and see some distant walls turn gray or disappear completely, this is because the brush count is too high and the Quake engine can't display all of them at the same time. If you see this in your level, the first thing you should do is run VIS with the -level 4 command line parameter. This will take quite a while to run (maybe even several hours on a large map), but will dramatically lower the brush count and the MS count. If this doesn't get your numbers down to an acceptable level, you've got some work to do.
Now, your first thought might be to add a wall with a door in it to cut down on the visible surfaces, but this won't work. In order to understand how Quake computes the number of visible brushes, you have to understand a little about how VIS works. The way I understand it (and I'm no expert), VIS calculates everything that is visible from any spot on your map. When it runs, it ignores doors and assumes that everything on the other side of the door is visible all the time. In reality, this is true when the door is open, but not when it's closed. As a result, your door will not reduce the visible brushes, because Quake looks right through the door as if it's not even there.
What that means is that you need a wall, not a door, to block the view. This will cut down on brush count, but may not be what you wanted in your level. One solution is to make a blocking wall. Look at this screenshot from level E4M4 of Quake:
The wall with the torch on it is a blocking wall. If it weren't there, you could run straight through the doorway into the room beyond, but Quake would try to display all the brushes in that second room in addition to the ones in the room you are in. In this case, that would be a pretty big lag on the Quake engine. By putting up the blocking wall, you limit the number of brushes Quake can 'see' and reduce the lag.
Another way to cut down on visible brushes is to make 90 degree hallways. Instead of connecting two rooms with a door, make a hallway that turns 90 degrees that connects them instead. This prevents Quake from seeing into the second room while it's displaying the first. Water also blocks Quake's view. As long as the player is not in the water, the Quake engine can't see what is beyond it.
If you run into an area of your map that has high brush counts, try some of the techniques described here to cut down on the count. Your map will run much more smoothly and your players will enjoy it that much more.
If you run into areas that you can't seem to fix, despite your best efforts, you probably have a CSG subtraction problem that you need to address. That sounds serious, and it could be, but it's usually fixable. When you use brush subtraction to cut a hole through a brush, BSP actually splits up the original brush into a lot of smaller brushes. It does this to keep the brush shape legal for the Quake engine to be able to work with it.
Unfortunately, sometimes this can result in a high brush count in a small area. To see what I mean, look at the following screenshots:
Both these shots show the same thing. The difference is that in the second shot, the console command R_DRAWFLAT 1 was issued. What this command does is display each individual brush as flat-shaded, rather than textured. Notice that what in the first picture seems to be a solid stone arch is actually made up of several brushes. This is a simple example, but you get the idea. If you've got an area of high lag and you can't find the cause, try this command. If you see a lot of brushes around an area where you did some brush subtraction, that's possibly your problem and you may have to try making your architecture a little less complex to fix it.
Remember, the lower the brush count, the higher FPS you'll get and the more smoothly your level will play. Keep this in mind as you design your level and you can hopefully avoid problems that will be hard/impossible to correct later on.

Weapon and Monster Placement
Okay, let's say you've got your level built. Every texture is perfectly aligned. All the lights are in their place. The secrets are well-hidden, but not impossibly so. Now you're ready to add the monsters. If you're wondering why this section is near the end of the design guide it's because in my opinion this is one of the last steps to take. It's usually best to work on getting the level built and looking good first, then populate it later. At this stage, a lot of people will just throw a bunch of monsters in and call it finished. This might be all right for some maps. Besides, most people just play Deathmatch anyway, right? Well, believe it or not, a lot of people (myself included) enjoy a good single player game now and then, and in order to make a 'Killer' level, you've got to give as much thought to monster placement as you did to everything else in your level.
The first thing to consider is what monsters will be in your map. The right choice of monsters can make any level better, just as a poor monster choice can ruin even the most beautiful level ever conceived. For example, let's say you are creating a medieval world. The last thing you want to do is put a bunch of enforcers in there. They just don't belong. There are plenty of monsters who will look and feel right at home in a castle. If you want your level to be full of grunts and enforcers, then make a military-style level from the beginning. Then leave out the zombies and other medieval creatures. Remember, when a player is playing your level, he is suspending disbelief, not throwing it out the window.
Once you've decided on the proper monsters to use for your level, you next have to decide on their placement. As a part of monster placement, I strongly recommend that you implement skill levels in your map. Your map will be more widely accepted by the Quake community if everyone from novices to the most seasoned Quake veterans will find it challenging, but survivable. Now, this doesn't mean that you design your level for skill 0 and then just throw in more monsters to make the higher skill levels tougher. I've downloaded a lot of maps only to delete them when I find myself surrounded by 4 shamblers with nothing but a shotgun. Tough maps I like; impossible ones I skip.
What I'm talking about when I tell you to implement different skill levels extends to more than just the number of monsters you have. It also applies to which monsters appear in different skill levels along with where they appear and what weapons the player has available to defend himself with. For instance, on skill 0 (easy), you might want to have 2 rotweilers and a grunt waiting behind a door. The player could probably handle these with the shotgun, but since he's probably a novice (skill 0 after all), he might need more ammunition than a better player. Throw in an extra box of shells to help him out. Then for skill level 1 (medium), maybe you could change the grunt to an enforcer and take away the extra shells. Skill level 2 (hard) could be 2 ogres and an enforcer. I know ogres aren't really military creatures, but after all, they do have hand grenades. Nightmare (skill 3) is the same as skill 2, but the monsters are faster. The player will probably need a nailgun now...
Notice that the number of monsters didn't change from one level to another; just the type of monster and the means the player has available to him to dispatch them. Of course it's only natural to want to make your player endure a bloodbath now and then, and that's fine. But space them out and give the player time to catch his breath in between fights.
There is a way to make monsters difficult to kill without adding to their numbers. Let's look at another example. Assume you've got a hallway, ending in a set of steps that lead up to a landing. Now, you could put 3 shamblers in this room and give the player the thunderbolt and let him have at it. But how about this instead: put 2 knights in the hallway, blocking the player from advancing up the stairs and diverting his attention from what lies ahead. Halfway up the steps, put an ogre. Ogres work best when they are above the player. This gives them a chance to lob death down on the player from above. Then, up on the landing you might put a vore who will launch guided missiles into the melee. The knights themselves are pretty easy to deal with, but while the player is doing that, he also has to dodge grenades raining down from above, plus deal with the vore, all at the same time. This may sound like too much at once, but smart players will use the monsters against each other and should be able to handle them quite well, given the proper weapons.
Another thing to remember in monster placement: In most cases, your map (regardless of the skill level) should start out with the easier monsters up front and gradually build up to the more difficult ones as the level progresses. That gives the player a chance to get his bearings and find some of the better artifacts/weapons in order to deal with the increased threat he will face later on. You don't want to put your toughest monsters up front. After facing that onslaught, anything else in your level will seem timid by comparison. On a side note here, I actually saw a level once that had the player spawn in the center of a ring of shamblers. Needless to say, the level was a short one...

Miscellaneous Stuff
Here are some random tips that will make your level better, but don't really fit in the categories above. A few of these tips originally came from Crash's Style Guide, which used to be posted on GeoCities, but I can't seem to find a good link for it anymore.
First of all, make sure your exit is clearly marked, either through textures, or through a pop-up message. The player should be able to go through the exit when he wants, not be thrown through it inadvertantly because he didn't know it was there.
The name of your map should be less than 22 characters in length if at all possible. This makes it show up in the right space on the status bar and not bleed over into the other areas (obscuring the # of secrets for instance). You can make a meaningful name in less than 22 characters.
Always include a text file with your level telling the player how to install it. A lot of people don't need this information, but new players will. Also, include in the text file some kind of storyline. I like to know why I'm playing a level. Why does that Shambler need to be killed? Tell me in a short story. This is your chance to present the player with a unique gaming experience, so make the most of it.
If you view the sky at horizon level, you get a weird visual effect that ruins the appearance of the sky. Try to limit the view of sky textures so that they only appear above the level of the player. If you've ever seen it, you know what I mean, and it looks really crappy.

The End
Well, that wraps up my thoughts on level design. Like I said at the beginning, these are my personal feelings on the subject and should be taken as such. If you disagree with anything I said here, feel free to do so. You may have better ways of doing things than I do; that's fine. I'm not trying to change the way you make maps. I just wanted to point out that there are several factors to consider when designing a good level. It's not enough simply to know how to use BSP; you've got to know what makes a level fun and entertaining in order to make a truly Killer level!
| Return to the BSP Tutorial List | Return to the Main Page |

This site is designed for 800x600 resolution, and is best viewed in Netscape 4.0 or above with 16bit color or higher.
BSP is the sole creation of Yahn Bernier. I am only a dedicated user, reporting news and making tutorials so Yahn can spend more time enhancing BSP.
This web page was created and is being maintained by me (DeadMeat). Unless otherwise noted, all content appearing on this site was written by me. Also, 'DeadMeat's BSP Tutorials' were created entirely by me. All unauthorized use is prohibited. (c) 1997. So there :-P