Thursday, September 23, 2010

Let's Make Us A Game! -- Preliminary Design

All right.  I talk a lot here about game design, gameplay and technical implementation details.  It's time for me to ante up and actually blog through the process of making a game, or trying and failing miserably to do so.  I won't promise that the end product will be interesting, but I hope the process will be fun to write and read about.

It's going to be a text adventure, for a number of reasons.  For one, the scope will be easy to maintain -- we can focus on content and stick to a simple design, so this series doesn't have to become a book.  For another, as regular readers know, I have a special fondness for the genre.  And for a third, there are plenty of good, free tools available for creating interactive fiction.

We're going to use Inform 7 as our development tool.  It's a major shift in direction from previous versions of Inform -- I have worked with Inform 6, which is more programmerly and precise.  This new version attempts to let users design and implement a game using natural language, essentially turning a sophisticated parser into a compiler.  I expect to wrestle with this approach a bit, especially when we get to the nitty-gritty details of debugging, but for non-programmers I think Inform 7 is likely to be more comprehensible and readable.  It'll be an interesting learning experience for me too.

Care to join me?  Then go download the necessary development environment at the Inform website.  The Inform team has produced excellent documentation, tutorials and examples, and I encourage you to take full advantage of the years of hard work they've put in.  Modern interactive fiction  has benefited immeasurably from the dedication of Graham Nelson, Emily Short and others, inspired by the classic Infocom games but taking the genre into interesting new territory. Inform can be used to create all kinds of interesting interactive experiences; for this series, we're going to stick to the old-fashioned text adventure format, or something close to it.

Fear not, you won't need to follow along with the actual tools in hand -- I will try to make entertaining reading out of the process.  Following along may be irritating, anyway, as I'm not really sure about the best way to structure this.  So I'm going to work the way I normally work -- find something fun to focus on, and when that gets to be either finished or temporarily intractable, shift my attention to another issue for a while.

So.  We begin.  Let's make us a game! (he cried, leaping into his virtual pickup, his software rack brimming over with compilers and documentation)

Before we get into actual programming, let's give a little thought to the game design.  My ideas here are more or less random -- our goal is to build a small but complete and playable game, not necessarily a masterpiece of interactive fiction.  But a starting point is always a good place to, er, start, so...

Extremely High-Level Design Document:

-- The protagonist is an energetic puppy named Riley.  He can jump three times his own height.  He cannot tell time or read.  He cannot talk or understand much in the way of human language beyond certain key words.  But he is a keen student of human behavior and routine, especially when food is involved.  (This character choice will allow us, I hope, to come up with some interesting puzzles from a dog's perspective.  Plus it sounds fun and potentially fresh.)

-- Riley's goal in this story is to retrieve and devour the family's turkey from the dinner table, before everyone sits down to dinner.

-- The map should be small -- let's start with the dining room, the kitchen, the hallway, and the back yard.  There is a doggy door connecting the hallway to the back yard.  There will be some interesting puzzle-related items in each of these locations, and some locations within them, like the dinner table in the dining room.

-- Nemeses include Mom and the family cat. We will have to invent some obstacles and puzzles as we flesh this scenario out.

-- We'll start the story with Riley playing in the back yard.  Perhaps playing in the mud.  A faint scent of turkey will drift out of the house, and that will set our story into motion.

That's enough to give us something to chew on.  Suggestions and playtesting are entirely welcome as this series progresses.  Please, if you have a neat idea, comment and share it!

Next time, we'll start turning this into an actual game using Inform 7.  If you want to play along or use my examples to build your own story, I encourage you to download the tool and do some experimenting in the meanwhile.

No comments:

Post a Comment