Archive for the ‘All’ Category

Android Gingerbread 2.3 A huge step in the right direction for game developers

Tuesday, January 18th, 2011

Recently I attempted to port our iOS game over to Android < 2.2. My motivation was to use the opportunity as a learning experience and refactor my code to run on multiple mobile platforms. When I started coding B.I.T.S Pinball I picked C/C++ even though it wasn't a language I use every day (it is now). The thinking was that I didn't want to pick a language that would tie us to a specific platform, a luxury game developer usually have.

I got to the point where I just felt marred down by the Android NDK and the platform. This was after I ported my game over to Palm WebOS using their NDK in a couple of weeks of my spare time! The Palm PDK isn't bad at all, their tools need work but that's another story for another time.

With the Android NDK doing simple things like loading and playing a sound effect, handling device input events, loading a texture from assets in your apk (loading any resources for that matter), figuring out which texture format and compression format is supported, (which isn't easy when you have 100+ devices that might do this differently, I'll get into texture units in another post) it's just cumbersome. This is on top of having to cross back and forth between the JVM and native code using JNI, I wanted to take a bath, it just feels dirty.

Thankfully with Android 2.3 Google clearly acknowledges the importance of having native games on their platform and the only way to do that is to provide developers almost direct access to the hardware (without having to write JNI code to go back into the JVM that probably calls back into native code). There are a few places the NDK falls short:

  • There’s still not way to get to the device sensors such as the accelerometer, mic and such without going through JNI to call into the JVM (please correct me if I’m wrong).
  • Carriers hold their customers hostage by preventing them from receiving new updates and forcing them to upgrade their devices and renew their cellphone plan to get new OS versions. So basically game developers are stuck with < 2.3 for a lot longer then Google or Android developers would like.
  • Tangent:
    If Microsoft has any chance of staying relevant in the mobile space they are going to have to do the same. They really have no choice ATM, they don’t have the user base (this is huge), they don’t have tools that are vastly superior (sure VS is nice) and they force you to write/rewrite everything using Silverlight or XNA… ouch. They’re basically saying, “if you want to be on our platform you have to ditch your currently platform or double your efforts”. Ummm, they can’t get away with that anymore.

New Features, Massive Update coming for B.I.T.S Soon

Sunday, February 14th, 2010

My brother and I have recently done a bunch of work on B.I.T.S. He totally re-purposed all the art assets to look way crisper and in higher resolution. We’re also adding a new feature to the table. Lastly, I’ve done a lot of work to gain some huge performance improvements even with higher res graphics. I’m seeing an almost constant 60 frames per second on my iPhone 3G (not 3GS) with OS 3.1.3+ and on my iPad. On a first gen device with OS 2.2.1 Im seeing around 40fps.

Most of the performance gains were achieved by eliminating redundant OpenGL ES state changes and batching draw calls. An example of this is when binding textures. Instead of constantly switch textures (everything is stored in texture atlases) I store which texture is currently bound and don’t bind if I don’t need to. I also make sure that I put the textures in the atlases in the order in which they are drawn to further minimize texture switching.

Here is a screenshot comparison. The old version runs at half the speed (inconsistently) and doesn’t look nearly as good. Please note that this is all still in development.

Before:
Old B.I.T.S Pinball Graphics

After:
New B.I.T.S Pinball Graphics

This is what your sales might look like after being featured by Apple.

Tuesday, November 3rd, 2009

Shortly after “B.I.T.S” Pinball’s initial release we ended up on “New and Noteworthy” in the iTunes store and on “Hot New Games” in the iPhone App Store. Of course we have no real way of figuring out where our sales came from but we can only assume our boost in sales had to do with this. Don’t get me wrong, being featured by Apple is definitely great for business! We are extremely excited and thankful for being featured and hope to pull it off again in the future.

B.I.T.S Initial Sales Full

Based on these statistics the only observation I can make is that getting Apple’s attention is only part of the equation. I can see traditional marketing making a larger impact on sales over time and the fly by night successes disappearing. Of course this may only apply to us and I’m sure there are stories out there that prove the opposite. I think sharing this info can only help others make more educated guesses on how to play the game :)

As a side note, the “only” marketing we did was announcing our game on the touchArcade forums (one of the best places to announce your game by far) and requesting reviews from as many iPhone gaming websites as possible. It’s been almost a month since release and not a single review site has reviewed our game (perhaps our game is just that bad?… I don’t thinks so). Those that responded to our review requests where only trying to sell us adverting or wanting us to pay $$$ for an “expedited” review, (except for the iPhoneSlutz: http://iphoneslutz.com/, those ladies are awesome!). It takes a lot to make me nauseous but email responses asking for money to review our game only make me reach for the Pepto.

iTunes link: B.I.T.S Pinball

B.I.T.S Pinball home page: http://www.ballinthesystem.com

I’m heading to Seattle iPhone Tech Talk

Saturday, October 31st, 2009

I’m really looking forward to attending the iPhone Tech Talk here in Seattle on Monday (Nov 2nd 2009). The scheduled talks look to be really relevant, (http://devworld.apple.com/events/iphone/techtalks/). I might even get a chance to meet up with some Seattle XCoders and maybe even make some new iPhone developer friends. Anyone else going to be there?