Wednesday, December 1, 2010

Testing Final Freeway on Android

Final Freeway for Android has entered in beta testing a few days ago, and it hasn't been easy.

Though the Android platform code is being completely handled by somebody else, I had to intervene to fix or rethink a few things about the quirks that come out when mixing different devices and OS releases.

As a general rule, the "low" and "mid" level Android phones tend to present a worse experience than iPhone 3G.

Frame rate is a problem and while it's true that phones such as the Nexus One have to deal with more pixels (800 x 480), it's also true that, for arcade games, frame rate is more important than resolution.

Then there is "touching"..  multi-touch is not guaranteed to be there. What was possible with the very first iPhone, is not possible with some of the Android phones still being sold.

In some cases, one cannot reliably have two virtual buttons on screen to be pressed at the same time.. see this video as an example. This seems to be an actual hardware limitation, and one just has to live with it.

Frustratingly, in some other cases there are lingering bugs in the OS that, on some phones, will sensibly decrease performance for the simplest action of all: touching the screen !
I'm talking about a minimum of 100 ms of time wasted simply for touching the screen, this means that when touching the screen, the maximum frame rate possible is less than 10 fps. Not a very good prospect for a racing game..

The only solution I can think of, is to have the accelerator pedal automatically pressed down by default and prevent or warn against the usage of touch-based steering.

It's a major fack-up that has been noticed at least since April 2009, and properly reported since at least April 2010. And two months ago the bug has finally been assigned to someone.. oh, hello ?!

Sometimes, Google apathy towards the user experience is really astounding.

Nevertheless, the game runs like a charm on the Galaxy S and, hopefully, will run as well with the more modern phones.
Still, this complicates things.. because the risk is out there for customers to get angry at the game, when it's Google that is at fault..   what a bunch of Java programmers !!



  1. Hey Kaz, any plans to port FF to Windows Phone 7? I just got a HTC Mozart and I must say that Microsoft this time made a great work on their OS. The Marketplace is growing everyday more and Samsung itself will release more WP7 phones in 2011 than Android ones. I think you should consider this platform! ;) Marco

  2. Hey Marco !
    Porting won't be possible on WP7 until MS allows common developers to use C++.
    All my code base in is C++ and porting from C++ to C# would require a near complete rewrite for all the current and future code.. basically an impossible amount of manual labor (^^;)

    Eventually MS will have give access to native code, because I doubt that the big companies are willing to rewrite their engines from scratch just for WP7..

    Let's wait and see...

  3. Hi Kaz, when multitouch is a problem you could use only one control to steering, I mean, only one finger, moving towards left or right. Maybe not in a central position, not to steel too much screen space to the game. I know, it is not the same, just an idea...

  4. Hi Claudio,
    With the current configuration, it's possible to drive with a single touch, using "Accelerator-Lock". That way one presses the accelerator once and then use only one finger to steer.. or, possibly just use the accelerometer, requiring no touch at all.
    The annoying part is to detect the problem and to tell the user about it.

    Does one completely forbid touch steering, or does one explain to the user that he/she can still use a certain option if combined with accelerator-lock ?

    Explaining is always tricky.. not everyone understand English, and many will simply ignore explanations anyway.

    In the end, everything is possible.. but it's a pain to have to deal with all those specific cases. This takes development time and is bound to create confusion and possibly even dissatisfaction from the user.

  5. I understand what you mean. Anyway, one could think to put a quick interactive test at the very first start of the game in which trying to detect if the phone is true moultitouch, or has any problem, and then set the right stearing control system for it. The advanced user can go to the manu and change the setting, but the basic user has got a system that does work. In some way the game would be hardware-dependent, so on two different phones it would behave differently (about the control system). It's annoying having to deal to such problems, but just to trying to satisy as much users as possible :)

  6. Actually I think that one can query the device to see if true multi-touch is available and I think that we do that now.
    The default controls are with accelerometer steering, so that works well also for non-multitouch.

    Additionally, when the user goes to select a control that needs multitouch, a warming appears saying that the selected control type is not suitable for the device (in English, but it's better than nothing 8).

    The tricker part was to detect "slow touch" issues. We now have some code that associates sudden reduction of frame rate with touch and gives a quick option to choose a "touchless" control (where the accelerator is always pressed and one has to touch the screen only to brake).

    This is being tested now, and if it works, I think that we can consider the "slow touch" problem solved.. at least until Google gets its act together and fixes it's own performance bug 8P

    ..pheww !!