My iPhone Game: Early Design Decisions

October 09, 2008

About 18 months ago I started thinking about designing a new strategic board game. I wanted to create something familiar using elements from popular existing games, but with unique elements as well. There are thousands of board games created over the millennia, and it's not easy to find a new path.

My initial design criteria were:

  1. Can be played in 10 to 15 minutes on average.
  2. Rules can be explained in an elevator ride.
  3. Easy to start playing but deep enough to resist total mastery.
  4. Computer opponent not impossible to write.

I came up with some preliminary ideas, then visited my friends at the developers of World War II Online and ask them to try it out. It had good elements but didn't really work so I went back to the drawing board and spent a lot more time simplifying ideas until I came up with something much more refined.

When the iPhone developer program started, I added additional criteria:

  1. UI can be simple enough to use with a finger
  2. Game small enough to fit on the screen.

Now I'm finally to the point I can actually build a working prototype. I decided to build it in javascript to run in a browser. This makes it easier to work with (I can avoid XCode as long as possible) plus I can get people to play test it easier (still no easy way to get folks to test on the iPhone itself). Building a computer opponent for a new game is hard enough; not being able to get real people to interact with it makes it doubly tough.

The game I have now is midway between Chess and Checkers in complexity but certainly not as difficult to model as Go. I can see ways to extend the game and provide variations that could add to the deepness without breaking the basic idea.

My goal is to ultimately build the engine first in javascript, then translate it to pure C. This way I can create a UI for the iPhone and OS X; then find someone to create an Android version and a Windows version without the need to change the core engine.

The initial version of the game would support playing versus the AI, playing against another human (by passing the iPhone back and forth) and solitaire (it works, though a little odd). A second release would add internet play (any platform of the game versus another) via a web server based application.

The only real problem to solve is the computer opponent. The key is to build something that is adjustable in strength, so that every player can find a level where they can win half the time. This isn't easy, especially for something without a long history (like Chess, Checkers or the inhuman Go). I'm hoping I can find enough articles, papers and examples on the web so I don't have to invent everything myself.

How long the development will take is also unknown. The basic iPhone development for this game isn't too hard outside of the AI. I will have to find some contract work in the meantime as my $ isn't infinite.

The good news is despite the large number of people hoping to build iPhone apps it's clear the market is huge. 10 million iPhone and iPod Touches and one marketplace is a great target. I don't expect to match the developer of Trism, who made $250,000 in two months; I'd be happy with 10% of that. Given the ability to port this to the other platforms it sure seems possible.

Now the main job is getting this done!