My first real iPhone/iPod touch game — Bedeviled: The Most Diabolical Sliding Puzzle Game Ever — went live with both a US$0.99 full version and a free, limited version in the iTunes App Store on Friday, 3 July. It’s a combination of a sliding tile puzzle game and ball-in-a-tilting-box labyrinth, derived from a Flash game concept I did more than eight years ago.
Bedeviled was executed in Unity, a 3D game development system which which has a tie to my days as a Macromedia Director programmer, in the person of Unity Product Evangelist Tom Higgins, who was the Director Product Manager back before Macromedia’s sale to Adobe. I wouldn’t say that there’s a lot of similarity between Unity and Director — which was a more general multimedia development tool — but if you did much work in Director’s latter-day subset of Shockwave 3D, there’s definitely some knowledge you have that’s useful. That said, I had a pretty frustrating path to getting my toes wet enough with iPhone development to get Bedeviled from my original concept to where it is now, i.e. selling somewhat less than a copy a day over the past several weeks.
I’d toyed with the idea of programming for the Mac more generally for a long, long time. Long enough to have taken stabs at Metrowerks’ CodeWarrior and earlier versions of Objective-C development environments. But it never really jelled for me. For me, Director was always the crack cocaine of programming — I suppose that would make Flash the methamphetamine — and trying to get things done in C++ and Obj-C just seemed like trying to swim in molasses. Late last October, though, in an attempt to broaden my skillset beyond the two environments I’d been working in for the past fifteen years (one of which nobody seemed to have much interest in any more), I bought a new laptop and an iPod touch. My trusty desktop computer doesn’t have an Intel chip, so it can’t run the version of Apple’s Xcode IDE needed for iPhone development, and neither would the Toshiba Windows laptop whose dead pixel columns were itching for replacement. I also bought a couple of books on iPhone programming: Erica Sadun’s The iPhone Developer’s Cookbook and Dave Mark and Jeff LaMarche’s Beginning iPhone Development, which were about the only iPhone-specific titles available at the time.
I spent several weeks working through tutorials in both books, reading blogs, and generally learning my way around Xcode. Got myself signed up with the Apple iPhone Developer program right away. Had a minor hitch getting my business license information synced up with Apple so that I could be ready for the checks to come rolling in, but managed to work that out with a very nice woman from their business unit. But I’m not ashamed to say the size of the programming portion of the task was rather daunting. There’s was so much in even the iPhone-specific Objective-C libraries that it was difficult to know which way to turn to accomplish a particular task, not to mention learning the idiosyncrasies of Obj-C formatting.
Then, in early December I heard about Unity’s recently-released iPhone publishing system. Tom hooked me up with a demo copy and I started working with it a week or so before Christmas, but a family emergency combined with the most snow Portland had seen in fifty years diverted time and energy for a couple of weeks. I was trying to find as much common ground as I could with my Shockwave 3D knowledge, in an effort to put together a working model of the game’s basic mechanism (something I could do in less than a day in SW3D), but was running into some problems. From an email exchange with Tom, it didn’t sound like what I wanted to do was possible (or at least not recommended) in Unity, and by the time my trial expired I had a paying Flash project that required attention for several weeks.
Of course, by the time I got back to Xcode, I’d forgotten more than I remembered, and I had to refresh myself a bit to get up to the point where I’d left off. I got an idea for a quick, free, gag application that the App Store promptly rejected. It almost took me longer to prep the distribution files and fill out the forms for submission than it did to write the application (and it took me a day to write the app). But, they didn’t reject it because I’d done anything wrong, they just thought that it didn’t have as much user value* as, say, iFart.
So after re-learning some stuff in March, I started work on Bedeviled in earnest, learning my way around UIViews and UIImageViews, and figuring out how to cut up UIImages. And once I’d managed to do all that, I uploaded a development build to my iPod and it ran like a complete dog. Which was, of course, why I’d tested it, but it wasn’t the result I’d been hoping for.
Up to that point, I hadn’t touched OpenGL ES except for some very simple tutorials. I knew that the iPhone had the capability to do what I wanted to do with Bedeviled — after all, there are a number of actual 3D games on the iPhone and what I needed was much simpler, in processing terms — but I was becoming aware that something that implemented OpenGL was going to be necessary.
And so, in mid-April, I was back knocking on Unity’s door and got a second trial of the iPhone publishing tool. This time, nothing intervened, and — after getting past some technical issues — I figured out how to do what I needed. Best of all, when it ran on the iPhone as a build through Xcode, the performance was great. I spent about six weeks (not full-time) working on the game, submitted it to the App Store on 20 June, and Apple approved it yesterday.
Now all I have to do is figure out how to promote a game that came out the first day of a holiday weekend!