Here's a short summary of the development process when creating Path Wizard. I began working on the game March 23, 2010. Thinking I should be able to complete this game idea I had in about a month. I had been playing Ravensburger's board game The aMAZEing Labyrinth at my day job and thought its game play characteristics could be translated to an iPhone app. For you who haven't played the game I can give a short description; The goal is to take treasures in a labyrinth. The treasures has to be taken in a certain order described by a deck of cards that each player has. A player has won when he has taken all of the treasures in his deck. The game board consists of 50 bricks depicting turns, crossroads and straights in a maze. The bricks are laid in a 7x7 square and the one extra brick is used to push the rows and columns of the board to make paths. When a path is made between the player marker and the current treasure he can move the marker to the treasure and go on to the next treasure in his deck. A picture of the game board can be seen a few posts down.
Well this should be simple enough. I started to work on the game board graphics first, as I like doing graphics the most. It was a pretty quick job and I was done in about a day or two. Each brick was a compound of a base tile graphic that had a path image pasted on top of it. If a brick should have a treasure it was rendered on top of the previous base tile + path piece.
The treasure graphics took a bit longer to draw, a few days I think. I decided to go with 20 treasures and each had to be in two versions, one big and one small. The smaller treasures could quite easily be created from the bigger ones by scaling the graphic and then some minor adjustments.
When I got bored with drawing (it happens), I began working on the actual code. I decided to have each brick in its own c++ class and have them allocated in one big single array. The sound and graphics loading system could be reused from my previous project Apple Catcher, so I saved quite a bit of development time there. The two biggest problems to solve was the pushing of bricks into the game board and the control of the player and opponents. The first obstacle of pushing the bricks was eventually solved by some brick class copying and position pushing. It wasn't a big thing to conceptualize but it took its nice share of time to get to work just right. The controls was a bit harder to figure out. I had to know when a path had been made, which bricks it consisted of and which path was the best to take when the player or computer controlled player wanted to go to a certain location on it. This sounded like an A-star problem. I had an A-star routine laying around my HDD so I integrated it with my existing project with some frustration and hair loss. It happens that I needed to make at least twelve A-star searchers each time the AI should make a turn. There are twelve possible moves and hence twelve possible sets of bricks that the computer must choose from. If the computer could find a path to the desired brick in the third cycle I could of course break the process right there.
When I had made the brick pushing and A-star stuff I needed some sound effects, music and menus. I also had to make an intro and ending sequences. All this took a couple of weeks, so now I had already worked for over two months. *ugh* this turned out to take a while after all. No testing had been made and I hadn't any high score or loading/saving system in place. This kept the project going for about another three weeks.
However, finally I came to the conclusion that the game was "good enough" for release and last week I submitted it to the App Store. Ten days later the game is approved and made available for sale on the App Store. *woohoo* now onto fixing various bugs that haven't showed up yet. I love my hobby he he
The game can be found here for you that own an iPhone/iPod touch.
That's all for now, thanks for reading!