Tuesday, July 17, 2007

Mysterious Mysteries: Using Imperfect Information

In games, it's not all what actions your players can take. Just as important is what makes them take those actions.

Some games are built around the idea of perfect information, but the vast majority of games use imperfect information. By revealing specific bits of information at the right times, the games can make the player try to guess what is really backing that up, and respond appropriately.

For example, a first person game is inherently about restricting information to what you can "see". Sure, there's a whole level programmed into the system, but you can only see bits of it at a time. You don't know for sure whether there's going to be a monster around the corner, or even what kind of room will be through the door. But you can make predictions and prep accordingly: if you're expecting tight little corridors, you equip the shotgun. Large rooms? Equip the sniper rifle.

Your memory of the places you've already been usually plays a big role in helping you navigate. Constructing this internal map is often a big part of these games, because the amount of information they show you at any given time is so restricted.

Of course, depending on how predictable the developers are, you can learn to predict the level better than they intend. For example, in Doom III I could predict where the monsters were going to teleport in so accurately that I would literally be looking at them when they teleported in, even though the level designers obviously (too obviously) intended them to pop in behind you.

This is true in almost every game. An RPG with random encounters quickly trains you to predict what kind of creatures you can expect to run into and equip yourself accordingly. Even though you have no warning as to exactly when you'll be attacked, you're still ready for it.

Building these contextual maps - whether they are what monsters to expect or where your enemy is likely to be or the layout of the level - is a big part of playing games and an integral part of what makes a game fun. Even games with perfect information such as chess or go still revolve around building context maps of the kinds of maneuvers that work best in various situations and what your enemy is likely to do.

To that end, when you're designing a game, think hard about what you're going to hide and what you'll reveal, and when. "Juicy" gameplay is more than just showing an animation whenever the player clicks a button: it's about revealing something in response to the player's action. That reveal might be a feedback loop's response: shoot the bad guy, he dies. That reveal could also just be to reveal another piece of the world: the next little part of the plot, or a temporarily enlarged view radius, or a trajectory prediction.

This facet of game design is too often overlooked in favor of trying to come up with fantastic new game play. But, frankly, you can use stale game play and, if you make the reveals juicy enough, nobody will even think to complain. They'll just call it "the best of its genre."

Good examples of this technique can be found in Psychonauts, Beyond Good and Evil, Halo, Baldur's Gate, Prince of Persia, Civilization... basically any really good game will have a very polished pace that revolves largely around knowing when to reveal new bits of plot, map, gameplay elements, and/or fun side stuff.

How do your favorite games use the reveal?


Patrick said...

If you come up with original gameplay and you have a tight economy of information, thats probably good too. :)

In Loot there is a beacon that goes off when the Loot is initially found, giving a universal reveal that prompts all other players to start trying to sabotage the "lucky" player. Less systematic reveals occur all over the place, someone drops a trap and shoots out the light, someone dashes out of a shadow for a split second, stuff like that. Light is a core dynamic thread, because its basically a stealth game.

Craig Perko said...


Oh, wait, there's actually nothing to disagree with.

You get off lucky this time... :D