What are some pitfalls or pieces of good advice when designing levels or maps for a (presumeably 3D but not necessarily) game?
Make use of "arenas"--confined spaces where the player must solve some puzzle, fight some enemy, etc to move on. This is often referred to as "gating" the player, ie barring their progress until they have completed their task. This helps to create a sense of accomplishment when the player is allowed to continue, and makes for easy save/retry loops. The "arena" does not have to be an "arena" in the classical sense, it simply refers to any confined space where the player has to complete a task--it could be a courtyard that has no exit until an enemy bashes through a wall, for example.
Block the area behind the player as much as possible (within reason). Playtesting has demonstrated that players are more confident about moving forward in a level if the amount of backtracking available to them is limited. This also plays nicely with the "arena" concept--an explosion in the tunnel a player just exited confines them to the next area of the map, creating a new "arena".
Following along the same lines as the second point, carefully limit the number of paths available to a player. While it is common these days to advertise that there are multiple paths through the game, this is frustrating to players who want to ensure that they are seeing everything the game has to offer. Some branching, however, can make the game more interesting and is more practical as it provides multiple path options to AI, etc, and gives the player some freedom of choice.
Players never look up -- Avoid putting enemies or solutions to problems above the top of the screen when player is looking straight out. Unless, of course, you've taught the player that it's necessary to do so (i.e. Portal).
Use lighting to highlight important features or the way to go. Players are very receptive to going down a path if there's a light in it. You can use this to help players not get lost in seemingly complicated areas.
Don't spawn/place enemies behind the player. That's just frustrating.
Add quick saves often (assuming your game has that feature).
Don't make a bunch of "jump" puzzles.
There is nothing more frustrating than having to do the same jump about ten times until you get it perfectly right (or you have to redo previous jumps because you missed the Xth jump and have to start over).
No water levels please.
You can generalize this to a few good tips:
Don't make the levels frustrating -- Don't make the player needlessly backtrack around the level. Don't make the level dependent on some split second timing to get right (and screwed if you don't). Play through the level a few times. Get others to play through it as well. Make sure that you all find it fun. If you don't, chances are not good that the majority of people will either.
Don't make all the typical levels -- Underwater, on ice or snow, surrounded by fire, moving platforms with bottomless pits, etc. It's okay to have some to provide familiarity, but of course you want your game to stand out. For that, you're gonna have to come up with some sort of setting and mechanic that is unique and interesting (while keeping point#1 in mind).
When introducing a new mechanic (player moves differently, player gets a new tool, etc.), don't make the level hard. Keep it simple. Allow the player time to adjust and learn what you have just thrown into the game. You can then reuse the mechanic in a later level and ramp up difficulty then.
Make levels meaningful and have purpose that fits in with the overall game or story. Don't make the player go in the water just because you can. And definitely don't make any items suddenly not work just for the sake of "making the level harder". Find some other way, or don't do the level. People don't like levels that suddenly make everything they've been using up to that point useless. It makes the whole level seem like torture.
There are other things you can learn about how (not) to design levels if you just do research (by which I mean Google) on "why water levels suck".
- Build your art in modular pieces that can be reused throughout the level (or multiple levels)
- Create "Hero" or detail pieces that really stand out and can act as a point of reference for the player.
- Use dirtmaps/detail maps that can overlay your modular pieces to break up any tiling effects.
- Be conscious of your far plane and draw distance.
- Find ways to create depth in your level. Juxtapose near and far objects to show distance
- Think of your level like a movie-set; are you ever going to go behind something? No? Then don't model it!
- S-Curves are your friend. They help with occlusion and with streaming.
Valve's games with developer commentary (particularly: Half Life 2: Lost Coast, Episode 1 and Episode 2, Team Fortress 2 and Portal) are well worth checking out for some good tips on level design.
(L4D also has commentry, but I can't remember if it had much about level design in it.)
Somethings to add to already great advice given.
Set physics parameters (minimum and maximums) first before starting to design level. (I.e. Jump height, run speed, etc.)
Make sure enemy placements are not impossibly in favor to the enemy, conversely make sure the AI scripts/tools allot for the enemy to take advantage of their placement.
When everything is special, nothing is special.
Make sure that your level/game has a 'comfortable average' that is fun, but that the attention-grabbing moments can rise above.
Use silence to you advantage!
If your game is going to be scary in anyway silence is key! With a long duration of silence the player gets stressed and scared wondering when something is going to happen. So right in the middle of the level make some guard "Hey! Get back here!" or make some explosion out of no where happen near the players character.
Be careful though. Because where you place the sound is very important. It is entirely an art. I can only give one piece of advice that is essential for the silence to pay off:
Make sure the player cannot see right away where the sound is coming from. Otherwise the scariness will be less intense.
Give the player the information they need to succeed. If the solution to a level relies on something obscure or some new ability then teach the player about it. There doesn't have to be some specific tutorial where you spell it out, rather you can teach the player using cut scenes or making small puzzles at the start of the level that introduce new concepts at a basic but explicit level.
In a linear context, provide the player with challenge, but also rest. Gradually increase the difficulty in an upward wave, something like
Very easy (1) -> Normal (3) -> Easy (2) -> Hard (4) -> Normal (3) -> Very Hard (5) -> Hard (4) -> Extreme (6) -> ...
Just a few that just came to my mind while i came across this...
- Think about how you balance challenges and rewards.
- Think about how you can provide variation and contrast
- Think about which order and what time during the learning curve to introduce which game element
Some more thoughts...
Have recognizable locations or objects at places you want the player to be able to recognize easier so he can navigate easier is less likely to get lost or confused
You may also think of levels having similar qualities to a song. What i mean by this is that a typical song has a start, a build-up, a breakdown, etc, etc... So there are elements which are used most of the time, there are intense and chilling moments and of course surprises and single events (like that cool break in a track that you wish would plax more than only once per song ;)
Wish i'd have time to write more - i love this subject ;) Need to do some work now... Maybe later...
Make user stories for the type of play styles the game is supposed to appeal to
If the focus is on exploration, try to avoid penalizing the player for it, both in terms of deaths that send the player back, as well as in time spent backtracking.
If the game is to appeal to players who like speed runs, consider different ways that the player can optimize their path - have some weapons kill enemies faster than others (Megaman), have some paths with fewer obstacles or further away from bottomless pits (Sonic 3&K).
If the game is intended to appeal toward players who try to make perfect runs, make sure that "game over" isn't a significant penalty (Ikaruga, Megaman). Also, keep in mind that difficulty is combinatorial: If an obstacle has a 10% chance of being beaten on a given try, 3 of those obstacles in a row gives a chance of 0.1% - sure, players get better with practice, but they make mistakes, too, so make sure to add checkpoints in between, or lower levels for the player to fall onto.
If narrative is a significant part of the game, keep the pace slow to ensure the player becomes attached to the scenery. Vary scenery intentionally - not just to keep the player engaged with the narrative, but as a visual cue for change in game mechanics (ice, water) or difficulty. ColourLovers is your friend.
Consider whether randomly generated levels would benefit or detract from your design:
- Can be a plus for multiplayer arenas, tactical RPGs, RTS, arcade shooters, and casual games
- Usually a minus for games with a focus on speed/perfect runs or heavy narrative, where the player has a strong relationship with the level design.
Design your first level to teach players how to play. The original Mario Bros. games are good examples of this:
Keep rewarding me
I like being rewarded for my actions. So loads of small bonus items, small upgrades, gold/points something that immidiately gives me pleasure so I want to continue grabbing more and more.
Dont punish me with time-limits
What I dont like in a game is when the developers finds it too easy and uses TIME as the only thing keeping me from completing a level. That is bad level design. You could use time as a "bonus", but never as a punishment. Sometimes the phone rings, the dinner is ready or even a toilet has to be visited. A pause is not enough here. If I am close to the goal and the level ends just because I was 5 seconds short, there is not much reason for me to try once more for 7 minutes.
My approach is to keep the player happy and occupied even in stressed situations.
So, none or a minimum of "Whoops dead, replay the last 5 minutes to get right back here"... instead, make it attractice to try again, not a punishment.
Avoid slippery-slidey ice levels.
Or at least keep the ice to a minimum.
@Sean James is for linear games, fine. I somewhat disagree.
if your game is linear, for god's sake don't pretend it's not. A linear game that fakes being non-linear should burn in hell (hello, Metroid Fusion).
non-linear is fine and much fun, as long as:
- there is a good map, where it is crystal clear which areas you have already visited which doors you still have to open, which items you didn't grab for whatever reason and in general which area of the map corresponds to which area of the game
- the player can mark and comment arbitrary map locations
- you try as much as possible to avoid dead ends: if I go back to an earlier section to explore a door I missed, I'll be pissed off if there is a single useless room
- there are nice means of transportation between different areas of the map (i.e. don't do like Aquaria - which is a great game apart from that)
To sum it up, the ideal is doing like Castlevania, but better.
Here are a few links about game design and level design collected on my webpage: http://www.newarteest.com/game_dev.html
Especially take note of the link "evaluating game mechanics for depth" because that is a really informative article about level designers.