[1GAM-Apr] Black Holes iOS Log

May be I should have gone with “Black Holes iLog” instead?
Black HolesWelcome to the progress log for my OneGameAMonth entry for April! As usual, it’s late, but at least it’s only late by 7 days.

You may have noticed that there’s no numbering in the post title, unlike the previous logs where I numbered my post with Log #1, Log #2, and so on. Don’t worry, that just means this log is going to cover everything I did in April, so there’s no need for a second or third log.

Wait, a single post for an entire month of work? How could that be?

Well, my entry for April is a bit unusual, you see. Instead of working on a brand new game, I simply ported one of my Android game, Black Holes, to the iOS platform. But that doesn’t mean I have it easy. In fact, I think this April entry is the one that requires the most work so far (not the most difficult work, mind you).

And since I’m just porting stuff, there isn’t a lot of design process happened. I don’t really like writing a lengthy, technical stuff either, so there isn’t really much I could write in the progress log. And with that in mind, I decided that a single log would be enough to cover the entire month.

To be honest, I’ve always wanted to have a game for Apple devices. Not because people said that’s where the money is, but because I want to know more about the iOS market, about the behavior of iOS users, about stuff that would affect my download count. And what would be a better way to learn about it other than to actually release a game on the App Store?

And since I did Black Holes purely using Android SDK, it is only fitting (or stupid?) to do Black Holes for iOS purely using iOS SDK and Objective-C as well.

Title screen on iPhone

So, how did the porting go?

Basically, I worked on it using a bottom-up approach. I started with porting a lot of the game base components, like images, file loading, and touches detection before moving to the more abstract stuff like game loop and resource management. Not surprisingly, the abstract stuff can be ported quite easily while the low-end stuff requires a bit more work (AKA googling).

Fortunately, despite the differences in both platform, I didn’t encounter anything too difficult. Two things surprise me though, one is the fact that iOS doesn’t seem to have a definite place to store game save data (whereas Android has SharedPreference). Another one is the fact that iOS has a really complete suite of audio processing. I mean, it has like 6 different classes just for handling audio.

Oh, and another thing that surprises me is the fact that file management on an Xcode project is a total nightmare. I keep having to create and recreate the project since moving stuff around often leads to things breaking down.

With all said and done, I finally managed to port the game and have it running on my iPod. I was fortunate since Black Holes is on the simple side and doesn’t utilize all the components my game framework has. Yeah, you guessed it, there are actually still tons of stuff not ported yet to iOS, most notably accelerometer input and scrollable item list.

Another major omission from the game’s (and framework’s) current state is the support for iPad. My game framework has been doing pretty well in handling multiple resolutions, but having two base resolutions is a whole different beast. And I’m not prepared for that.

Yet iOS developers have been dealing with that problem for years now. So yeah, I still need to research how other people are doing it before actually adding iPad support. Not to mention that I would need an actual iPad to test it, since the iPad simulator on Mac doesn’t seem to work for me.

Black Holes on iPhone

While I did say that the game has been successfully ported, it has not been released on the App Store yet.

As this post is written, I’m still struggling to finish up some administration stuff since I want to sell the game. I suppose I can just publish the game for free, but I kinda want to see how a paid game would fare and how the market would react when the game becomes free. After all, I did this for the sake of learning more about the market.

All in all, I’m quite satisfied with how the port turns out. Haven’t test it thoroughly yet, but so far I haven’t see any lag or memory leaks. That said, there are some rough edges since the size isn’t exactly optimized for iPhone’s resolution. But eh, I can live with that.

Oh, and speaking of which, my game and the framework it used is totally open sourced on GitHub (except for the music, that is). The plan is to have Black Holes as an example of how the framework can be used since its quite complex but still pretty simple. And since the game is also available on Android, it would easily shows how the framework can be used for multiple platforms. So yeah, feel free to check it out.

Phew, and with this, I’ve paid off all my progress log writing debt. We’re going back to our regular schedule, people!

So, what’s coming up this May? Well, you’ll have to see for yourself in the May progress log, which hopefully doesn’t take too long to be posted. Suffice to say, it would be totally different from my previous OneGameAMonth entries. This time we’re going to focus our effort on a rather unusual aspect of a game.

Wait, did I just say “we”? Indeed, for my May entry I’ll be teaming up with a friend to help me finish this massive undertaking. And when I asked for help from other people, you know it’s going to be something exciting or something big, or may be even both!