I’m a sucker for adventure games.  Most of my favorite board games are short, focusing on getting a good resource or point engine running and then stopping right as players hit their stride.  But I’ve spent the last 10 years wanting to dig into a really epic adventure game, the kind with a 30-page rule book, where you get to see your choices pay off.

This past weekend I stumbled upon perhaps the holy grail of adventure games, a surprise hit from 2011 called Mage Knight.  It’s got all the geeky elements I want – exploration, conquest, leveling up, and of course dragons.

I’ve tried this sort of game before and they’ve all fallen flat for two reasons.  First, all players need to know the entire rule set before they can take their first turn, and teaching it can take as long as actually playing it… which is a long time.  And second, the same freedom that makes a game open and adventurous can also make it overwhelming and paralyzing to play.

Mage Knight’s rule set allows a huge pool of possible decisions that could be made every turn, but it keeps the playing experience enjoyable in a unique way.  Every action the player can take is printed on a deck of cards, and the player draws a hand of action cards every turn.  While many actions are possible, only the ones in his hand are available at any one time.  This keeps the rule set very open, but the decision tree for any turn manageable.  Playing the game is more like filling in Mad Libs than writing a novel.  There’s enough choice to have fun, but not enough to become a burden.

On a semi-related note, I’ve been reading up on Domain Driven Design, CQRS, and Task Based UI.  Obviously, in the software world, we can’t arbitrarily limit what information and choices users have access to in the way we can with a game and a deck of cards.  Losing a game to the luck of the draw is part of the fun, but losing productivity because you can’t access the tools you need is… not fun.  But if we as developers can work with domain experts to boil down the essential tasks that users need to take at any point, we can relieve the user from the trouble of figuring out how to accomplish those tasks via interfaces that provide a bunch of unnecessary extraneous options.