This is the story of a game called High Castle, which I started making back in the summer of 2011 while on a trip to Mesa Verde with my family. While driving home from Mesa Verde I talked to my family and made a few notes about the game. Inspiration for the game came from a computer game called Heroes of Might and Magic II, although that might not be apparent. It also draws a little bit from Search for the Emperor’s Treasures, a board game that was published in Dragon magazine a zillion years ago.
On returning from Mesa Verde I started work on a board game. I drew the board and did some work on the cards, but I don’t think we ever played the board game much. Instead of continuing work on the board game, I started making a browser-based game with a tile map. Unlike the board-game version, the web game got a lot of play time, at least from me. It works well as a single player game. I don’t win every time I play it so it’s fun to win, but I win often enough that I don’t get frustrated.
Fast forward five or six years (I’m not sure when I finished the browser version of the game) to a time a few weeks ago when I was talking to my wife, who said (not for the first time) that I should publish an app. I’ve been thinking about doing that since about 2010 when I first started iPhone programming, but I’ve never liked Objective-C, and all the good app ideas were taken, and I didn’t have time… For one reason or another I haven’t managed to do it.
The time has come. I’ve accepted my wife’s challenge to publish an app by the end of the summer. Five months to write and publish an app. The app I’m going to publish is High Castle. It’s a fun, single-player game that works well on an iPhone (which I’ve tested with the browser version). The game design is done and I have working JavaScript code to refer to.
Of course, going from JavaScript, known for its casual (at best) approach to types, to Swift, which is known for its obsessive approach to types, is definitely a challenge. No more slurping in an object from a JSON file and sticking it in an instance variable. In Swift reading in a JSON file can be tedious, and Swift dictionaries are as picky about types as any other part of Swift, so I’m defining lots of structs and classes. But, I’ll get into the more technical parts of it in the coming weeks and months, because as I delve into Swift I’m going to write about it in my blog and post reference materials elsewhere on my web site.
It will be fun. It will also be a whole lot of work. Stay tuned.