Android Development – Status Report 3

Before I get started: Does someone seriously consider the iPhone or Android a gaming platform? Not saying that there aren’t any fun games for these devices. But they a clearly playing in a different league than the PSP or the DS, right? And it simply is not only about graphics and performance. Mostly it’s about usability and controls!

The last few days/weeks I worked on bringing touch and trackball controls to IntensiGame. Especially trying to make DroidShock/JamJam playable with these new control concepts.

So far I failed.

I have a somewhat usable trackball control implementation to make Galaxina and DroidShock playable. But when the going gets tough, nothing beats the DPAD of my Galaxy. Even the more precise touch screen of the Nexus One will simply not deliver the gaming experience the DPAD gives you. And so won’t the somewhat improved trackball of the Nexus. Compared to the G1/Dream there is some more control here. But it’s not enough.

Baseline: You can have a very responsive trackball or touch control, or you can have one that translates longer ‘motions’ into ‘multi events’. But combining these two approaches seems very hard.

And so far, it looks as if I am not the only one who failed. I haven’t found one shooter or Tetris-like game with touch controls that I would consider really usable. Everything using touch mostly sucks. Android and iPhone are not different here.

So, no good touch controls?

My point is: No good touch controls for these type of games! There are different games that benefit from touch controls. Of course. And you can bend you game a little and make it workable with touch controls. But for now I am not willing to make this compromise too easily. One example of ‘bending’: Touch controls with Tetris games will almost always result in showing where the tile will drop. Otherwise your finger will be in the way. Simple problem. Simple solution. Well.. Got the point?

I consider marking games via the AndroidManifest.xml to not work on devices without a DPAD or trackball, etc. Because: What is the alternative? People complaining about bad usability? Non-responsive touch controls? Too responsive touch controls?

I’ll keep on tweaking my implementation and I’ll add various control settings to the engine to let users tweak the touch and trackball behavior. But I doubt this will ever come close to proper game-pad-like controls. (Of course! Doh..)


Android & Proguard

A quick note about using ProGuard to optimize and/or obfuscate Android packages. Maybe this is useful to someone..

You can use optimize, but I had to disable code/simplification/cast and code/allocation/variable optimizations. In addition, overloadaggressively and allowaccessmodification will result in illegal opcodes detected at runtime only.

        <proguard optimize="true" shrink="true" defaultpackage=""
                  printmapping="false" verbose="false"
                  usemixedcaseclassnames="true" obfuscate="${obfuscate}"
                  overloadaggressively="false" printseeds="false"
                  allowaccessmodification="false" microedition="false">
            ... snip ...
            <keep name="*" extends="">
                <method name="*"/>
            -optimizations !code/simplification/cast
            -optimizations !code/allocation/variable