[What kinds are there, why should you use them, and what to watch out for when doing so. A primer to, and potential for, designing with the procedural.]
Procedurally generated content is a tricky beast and not to be confused with user-generated content (a concept I have much less faith in for reasons that should be explored in their own post.) It comes in so many different flavors that determining whether and how much procedural content to implement are difficult questions to answer for any project. Keep in mind that the costs associated with testing these systems are also much higher than with traditional, fully scripted, game development because of the extreme number of permutations possible.
Random level generation can be useful. Unending exploration is a seductive concept, and a good way to increase the bang to buck ratio of a game. It’s certainly a big part of Diablo II’s abnormally long shelf life. It keeps a single player engaged during multiple playthroughs, but also levels the playing field when a new player joins.
A friend of mine started playing a co-op game of Titan Quest, an action RPG taking many cues from Diablo II but which chose NOT to randomize its environment. Some of his party members had already beaten the game, and so, knew the layout of each area. He described the resulting experience as a race in which he quickly found himself on the losing end. The other players sprinted ahead, leaving him to discover area after area filled only with monster corpses and empty chests. Conversely, the uncertainty caused when all players are unfamiliar with an area make cooperative party dynamics more necessary.
Implementing randomly generated environments that are immersive and compelling is very difficult. Cohesive art direction that helps tell the story and set the mood is a full time job for a whole team of incredibly talented people. You can't keep things fresh through mixing and matching alone. Eventually that stone wall #6 asset is going to grate on your nerves, even if you've never seen it next to scrubby bush #2 before. If you handcraft...you know it will be good at least once. You can't always count on that with random generation.
You also have to consider why people are driven to explore in the first place. It's not to see a patch of trees they've never seen before. It's to get cool stuff, hear new story, and grow their character. Even if the arrangement of areas is new, if what they lead to isn't anymore...the desire to explore dries up. Environment is only part of the equation.
This is one solution to the previous problem. Items with random attributes keep the player guessing at what might be around the next corner. It's undeniably cool to find a piece of gear that no one else will ever receive with quite the same stats. Preset items that drop at random is another tool. Questing for set items can be a powerful motivator, especially once the story is spent. It's not procedurally generated, but procedurally presented to the player.
Again, the dev's control is sacrificed for surprise. This can lead to serious pacing issues. If you've been questing for hours only to defeat the boss and have a baddass wizard hat drop for your warrior, it's akin to receiving nothing at all. Recognizing player achievement and rewarding it proportionally is the core of good game play.
This is the application where I see the most un-exploited potential. I don't mean that you should never know what characters will exist in the game. Giving NPCs the ability to meaningfully recognize what happens to them, and then act on it, could enhance a variety of game genres, but especially those that focus on a single player experience.
The basic traits and attitudes of a character would be set by the devs, but then the agent would be free to react to the player's (or other NPC's) actions however they deemed suitable. The possibilities are exciting. You kill a pack of wolves that are terrorizing a town. A local farmer recognizes you have made him safer by this action, and because of his personality, rewards you. Not because a designer scripted him to, but because he wants to.
Unfortunately, to fully leverage a system like this would require tons of background management to enable characters to pass along information and act upon each other in the absence of the player character. When characters decide what to do and communicate for themselves, they also have to have the means to express it. This would require the development of a syntax generator more advanced than anything that's been seen to date. Fully spoken dialog, which has become par for the course in AAA titles, would also be impossible without huge leaps in synthesized voice quality. And it would never match a quality live voice actor. Essentially, you're limited to text.
A writing truism states: character is story. By empowering the agents of a game world to act autonomously, they create drama for the character to participate in. A sleezy bandit rapes and murders a young maiden on the road one night. The body is discovered and the father, our kindly farmer, is crushed to learn of it. He may try to find and kill the bandit on his own, or remembering the player character's earlier good deed, seek him out to enlist his aid. Or, maybe the farmer rallies a lynch mob of other townsfolk to administer his justice. Does the player join in, or try to get to the bandit first? If he finds the bandit first, does he warn him, or do the deed himself? Maybe the designers have decided that this particular scum-bag has useful information that the character needs for the larger plot. Now there's dilemma, the most important part of any story. By setting the stage with interesting people, and letting events play out however they may, a staggering number of scenarios open up giving the player an opportunity to truly make his own choices and have a unique experience.
Tracking events like this for every NPC in the world would be prohibitively resource intensive, however, so a second component is needed. An invisible digital hand like the GM in a pen and paper role playing game can track the player and prod the situation just when appropriate, and in close enough proximity to the player that they can benefit. In short, a game that’s smart enough to never let the player get bored. Valve called the system a “game director” and implemented one in their Left 4 Dead series to create the peaks and valleys of suspense and action that they desired in their levels.
With limited oversight of NPC actions comes the possibility that unforeseen and unnatural behavior will manifest. My favorite example of this is from an early build of Oblivion. After letting the game run for a few hours, the player walked into a town to discover that all of the citizens had mysteriously died. Upon debugging, the team realized that the tiniest accidental act of violence between two NPCs (a hunting misfire for instance) could trigger the riot of a whole city as more and more NPCs were drawn into the conflict. To combat this, they had to place strict limitations on the AI, removing most of the cool emergent behavior the system was supposed to allow for.
The Invisible Hand
Procedural content cannot be a shortcut for designers, but rather it changes the way in which they must do their work. In each of the above cases, considerable background manipulation is necessary to provide the most satisfying experience. That health potion that drops at just the right time. The exciting event that happens just as the player sits down in the tavern. The fact that the first giant rat you kill doesn't accidentally drop the most powerful sword in the game. All these things require subtle influence of the designers in the form of drop tables and the like.
The keyword there is "subtle." These turns of event and reward must seem to the player a natural extension of the game world we present to him. If he ever glimpses the man behind the curtain, we have failed. "Why can't I blast open this wooden door when I can blast all the others?" The answer had better be because it's re-enforced by a spell cast by a wizard within the boundaries of the game rules and not, "because we can't have the player spoiling the ending yet." Although I've veered off into consistency, rather than procedural content, they are inseparable. When you give players freedom, nothing is more disastrous than telling them "not this time because we say so."
After all, what do they know? They're only the player.
In a world where graphics are all ready nearing photo realism, and gun blasts in 7.1 surround sound seem more real than what you hear on the firing range, procedural character and story truly is the last frontier of what is no longer a fledgling medium. I hope developers everywhere will take up the call to conquer it and add a heap of value to their games in the process.