Nov 06 AT 12:22 PM Robert Green 29 Comments

Complications looming for Android developers

It wasn’t long ago when using an Android phone really just meant using a G1 phone.  In one short year, we’ve seen different models of phones pop up from different carriers all over the world.  This is a great thing for Android as a platform because more users means more apps and hardware choices.  Unfortunately, there are many complications coming.

The G1, MyTouch and Hero phones all use a screen size called HVGA, or Half VGA.  It is 320 pixels wide and 480 pixels tall.  That’s exactly the same number of pixels as the iPhone’s screen.  Up until about 2 months ago, every app developed for Android was developed specifically for that screen size.  That was easy and it worked well.  With the introduction of Android version 1.6, support was added different screen sizes.  The platform does a nice job of letting developers tell the market what size screens their app supports, but that’s only half the story.

Many 2D games are developed for a fixed size screen.  Games that scroll up or sideways don’t really have too much of a problem adapting to new screen sizes but games that use an “arena” have to figure out what to do.  The new screen sizes aren’t just bigger or smaller – if they were, we could simple scale up or down for them.  They are actually wider and narrower as well which is especially difficult to cope with.

Devices using the small-screen format are like your old boxy television.  They have the exact same aspect ratio.  An aspect ratio is simply a fancy way of saying, “how wide is it.”  New HDTVs have a wider aspect ratio, that is, compared to the same height old TV, they are wider.

Small-screened devices are called QVGA or Quarter VGA.  They have half as many pixels as the standard HVGA.  Another new standard is WVGA which is what the new Droid has.  It’s the same aspect ratio as an HDTV.  QVGA is 1.3 (like your old TV), HVGA is 1.5 (somewhere in the middle) and WVGA is about 1.77 (just like HDTV).  Each one of those aspect ratios can come in regular and high resolution.  This means that every game will have to support 6 unique screen configurations in order to look its best on every phone!

Multiple screen sizes means more work.

Multiple screen sizes means more work.

Regular applications won’t have quite as much of an issue with these different ratios.  While there are always exceptions, for the most part they can usually just list less or more stuff depending on how much space is available.  The QVGA screen tends to always be difficult because of the low resolution but through use of clever component layout, they should all be able to cope and even take advantage of the space that’s given to them.

3D games generally have an easy time stretching to fit the screen.  For many of them, supporting a new screen size is trivial or just a matter of tweaking a few graphics.

2D games, like I said before, are really where the problem is – and there are around 1000 of them on the market right now.  It will be interesting to see what kind of solutions they use to work with the different screens, if the developers do anything at all.  It’s possible that many games simply won’t be updated due to poor sales or lack of time commitment from the developers.  Those games will likely suffer bad ratings from new phone owners.

There is another issue besides screens size.  Several new phones are shipping without a graphics processor.  This means that many games, including ones that don’t even look 3D (many 2D games use the 3D processor to draw), won’t run well on them at all.  That shouldn’t be such a problem but there is no way for the developers to tell the market that their game requires a certain level of hardware to run well.  What will inevitably happen is that low-end phone users will give low ratings to games that don’t run well on their phone and the developers won’t be able to do anything about it.

It’s a bad situation for both developers and phone owners.  Developers get bad marks for having a game that only performs well on high-end phones and owners of low-end phones complain because the games meant for high-end phones don’t run well.  Meanwhile people will continue to demand that games get as good or better than iPhone equivalents.  It seems like a losing situation from that angle.

Hopefully something will be done by Google in a future release that will allow for developers to either release the same game targetted specifically to different levels of hardware or to declare which level of hardware is officially supported by the game.  The latter will certainly cause for market segmentation, but since that is already going to happen because of the wide range of hardware that comes in the different phones, it’s really the best we can hope for.  A simple “Requires GPU” flag would be sufficient for most 3D games.

If you’re a game developer and haven’t thought about screen sizes yet, it’s about to become a big deal.  Make sure to support everything you can or you’ll surely be left in the dust.  Google has put together a very helpful document here.

Going forward if a game doesn’t work or look right on your phone, it may not be the developer’s fault.  It may just be that your phone doesn’t have the kind of hardware needed to run the game and there’s no way for the developer to offer you anything different.  Be kind and save those 1-star ratings for things that are truly bad!

Robert Green is a game developer for

    Most Tweeted This Week

  • Miguel

    Nice article ;)

    You can read more about another problems that developers are having because of Android Fragmentation in

  • William Furr

    This sounds exactly like PC gaming compared to console gaming.

    Console game developers know the exact hardware and screen resolutions they need to support, kind of like iPhone developers.

    PC game developers have to develop for a bewildering array of hardware combinations, some of which will never work, despite their best efforts. All they can do is post their “minimum requirements” and hope for the best.

    It’s a little different in Android, because the phones don’t generally advertise their processing hardware, though you can find it if you want.

    If the Android Market can provide some form of automated minimum system requirements checking, that’ll be a huge improvement over what PC games can generally do.

    Anyway, this whole phenomenon isn’t really anything new. It’s just new to the mobile phone space.

    • Mark

      As far as I understand, Android Market does do requirement checking. It not only checks your Android version, but there is a post somewhere in the Android Developers group (about something indirectly related*) that talks about it also checking for required libraries.

      Unfortunately, instead of letting us know that we can run these apps on our phones, those apps simply don’t appear in the Market. I assume they did that because they hope less of us with Heroes, etc will be up in arms about being behind a version. Can’t complain about wanting apps you can’t see I guess.

      *The post was about people putting apps on the Market that require a “rooted” device or are specific to a device that gives users more permissions on their phone. To prevent people from downloading them that don’t have these permissions, they suggested requiring a dummy library that would only be installed on devices with proper access. I can’t find that post anymore though.

      • Mark

        Proofread fail. First “can” should be “can’t.”

      • Robert Green

        The following checks exist for developers to specify:

        1) Supported Android Version
        2) Supported Screen Size

        What I’m pulling for is:

        3) Supported GPU Class (None, Normal, High Performance)

        And ultimately I’d like to see the market support multiple APKs for one app. This would make it so that language packs which get each currently get posted as a new app can just be a single app together and when you download it, you pick which variant you want. Games could do that as well: We could make a build of a game that is geared towards very low performance phones and one that is very high quality. They could both show up as the same app and the user would end up downloading the appropriate one for their device.

  • andy

    Great article. Both screen and processor compatibility will become a bigger issue when more android 2.0 hardware phones are coming out early next year. Performance-wise, this is just like how iphone 3g vs 3gs, I believe developers will probably design some specific software for faster cpu phones and most of software will take the lower spec to guarantee better compatibility across all phones. It also means we probably won’t see lots of software that will take advantage of Moto Droid spec anytime soon.

  • j_norton

    More work means more money too. Every display size a developer has to code for is another couple hundred thousand possible customers who thought that particular phone was a better fit for their personal needs. Serving the same marketplace over several different hardware platforms has its obvious ups and downs, but nobody is going to argue that having more work to do ever made anyone less money.

    Kind of a downer article, hope it doesn’t discourage potential devs choosing a platform to focus on…

    • Robert Green

      I didn’t mean for it to be such a downer article. I mostly wanted to draw developer’s attention to make sure they’re taking the necessary steps. I also want consumers to be aware that their phones simply may not be able to play some games and there isn’t a lot the developers could do about it.

      The fact of the matter is that if you don’t have a GPU in your phone, it won’t run 3D or HW accelerated 2D games well. I’d really like google to add a capability switch for that.

      I’m a huge advocate of android I would never discourage people from developing for the Android platform. I just didn’t realize how big of an issue this was until I recently started testing my games on the new small and large screened phone. Had I not had an opportunity to try my games out on a Droid, for instance, I would not have known that point-sized text shows up as horribly tiny on it, even in compatibility mode. I also needed to add on-screen controls because it doesn’t have a DPad or trackball without sliding it open. That’s the kind of stuff devs need to become more aware of.

  • http://None Austin Hull

    Great Article.

  • MrChaz

    Since the 1.6 SDK you’ve been able to specify a maximum version for your application. At the current time that will help you either target or eliminate DROID and it’s WVGA screen. or course that is a temporary measure but hopefully Google will push out a better solution soon.

    p.s. I’ve a developer that won’t be updating my game for DROID for reasons you’ve mentioned above.

  • sha

    Good analysis. I think this is the main reason why big game studios will not come to Android in a near future, even with millions of potential customers… (John Carmack said it himself: , end of the article)

    As an Android user/developer myself, I’m sad to see this (I’m ready to pay 10 bucks or more for a great 3D racing game with physical keys support) but I agree there’s more work due to the additional touch or physical keyboard support, multi resolutions issues… even the trackball needs some code if you want to make it work like a real D-pad (or I haven’t found the proper setting :p)

    Still, I’m confident for the future :)

  • Tim H.

    I don’t want this to come off as rude, so please don’t take it that way… I respect all of my fellow developers and their hard work.

    It has been known for some time that multiple hardware and resolutions would be coming. 1.5 SDK and updated ADT introduced the AVD manager which allows for testing on QVGA and HVGA (albeit much more of a pain than it should be). 1.6 SDK improved on this by adding WVGA testing, 2 months before the hardware was available.. as well as supports-screens option.

    What you have to ask yourself is.. is it worth it for you to support all this? Unfortunately, developers (including myself) have adjusted themselves to developing for a single piece of hardware. You don’t HAVE to support everything, and in the future this may be very near impossible – but supporting as much as you can is the goal as I see it, and in doing so you will see a much larger potential customer list follow.

    To do this, you must be very aware when you are developing how your app will function (or if) on various hardware when you are testing. Devs, START USING AVD for what it is intended! Good for you for bringing developers attention to this :) Note: giving us downloadable, preconfigured AVDs (and maybe a emu skin too) each time a device is released would be cool.

    I totally agree with you regarding performance and hardware targeting – right now, it seems like they are forcing compatibility for everything on the developers. The market, market publishing and/or SDK need definitive ways for adjustments and allowing/denying various hardware, or providing minimum requirements. You can not have differences in hardware with no way to adjust your application for them.

    Google MUST continue providing informative articles on its blog to help ease the process along the way.

  • Zacqary Adam Green

    As for the aspect ratio problem, a simple letterbox/pillarbox would work quite nicely for WVGA-to-HVGA/HVGA-to-WVGA respectively. Letterboxing for QVGA from an HVGA-native game (and especially WVGA) would likely make everything too tiny, but it might be feasible for certain games.

    I doubt this problem will last too long, though. As long as Android 2.5 doesn’t add support for Cinemascope, designing for these three ratios should end up being a reflex for developers eventually.

  • mantrik00

    Here is some information with regard to developing for different screen sizes of Android devices:

    Here’s some more information about the updated Android Market. The developers can mention the limitations or minimum requirements for their apps along with the description.

    “An opportunist will see an opportunity in every difficulty; a pessimist will see a difficulty in every opportunity”.

  • Christopher Chavez

    THIS IS WHAT I HAVE BEEN SAYING!!!! After playing with the Droid this became horribly apparent =/

    Great article guys!!!! Took the words right out of my screaming mouth… LOL


  • Tom

    Great article. It’s been brought up on a few occasions on this and other blogs. I’m kinda worried. Android seems to becoming as fragmented as a broken piece of glass. Do you think consumers are going to become frustrated by “Version x required for this app”? I do. This entire issue needs to be completely transparent to the average consumer surfing the Market. If they hit too many roadblocks, they’re quick with the 1 star rating – as you said. And with so many great devices and different OS’s on the market, I fear they are quick to pigeonhole Android as “too complex”. Hope not…

  • Mark

    Isn’t this an age old problem? Palm and WinMo have had the same issues for a few years and the developers seemed to figure it out. I am sure the same will hold true here.

  • Todd A

    This is an age-old problem, requiring only a current interpretation of an age-old solution. Personally, I have yet to see the Droid break any part of the app I wrote on the G1. It really looks good on the Droid.

    If this type of situation is too much work for anyone, so much the better for the rest of us who believe in what can be accomplished with the Android platform.

    • Robert Green

      The problem is more like this sort of situation:

      The game Light Racer Elite is multiplayer, 2D and uses a fixed-size arena (320×440). This was fine when the game was designed because only a HVGA device existed. If the game wasn’t multiplayer, the arena could be fitted specifically to any given screen size. The game objects could then be scaled to fit so it always looks right. Unfortunately, it needs to remain the same size to ensure integrity in a 2D multiplayer environment, however, it’s very hard to see and doesn’t look good on QVGA devices and there is an open, empty space on WVGA because of the long aspect ratio. We could stretch it on WVGA but it looks a little strange stretched.

      Sure, there are solutions to this problem but the point of the article is that these things need to be dealt with if a 2D game developer is to support a variety of screen sizes and hardware. PCs aren’t even a valid comparison in the regard that they typically just change the screen resolution to match the game. Most early 90s games were 320×200. It was only when games switched to 3D did they really start offering the ability to run in different resolutions.

      Android doesn’t let us specify a resolution that our game runs at. I can tell it to switch to 320×200. I can set up a transformation matrix and use that to scale to the screen, but a game designed for 320×240 would look awfully bad stretched out and scaled up on the Droid’s 480×854 screen. See the problem?

      It’s not unsolvable. It’s just something that needs careful consideration on behalf of the developers.

      • Eirik Moseng

        Great article Robert!

        I think Todd is right. Fragmentation is nothing new. The Java ME world for instance has had this problem for a decade soon. In the first 2-3 years the fragmentation was rather limited, due to that most games was targeting Nokia S40 and later S60 devices. From 2003 the market really started to get fragmented. We have been developing mobile games for 8 years on most platforms and Android is currently not even close to being as fragmented as the world of Java ME.

        I also do think your multiplayer argument is almost as vague as claming PC game development is not fragmented. There are for example tons of other issues related to multiplayer development which cause “fragementation” problems (but similiar to your problem exist solutions too) that could as well be used to argue for PC as a fragmented platform.

        This is not to say that PC is just as fragmented as Android. PC probably has the benefictial of being an easier platform to test on in most cases and a few other things. But there is no doubt that fragmention is not something new that has appeared with Android.

        No dobut, Android is fragmented, but far far from what it will end up being. This is just the begining.

  • cowgrlcrzy

    One way to solve some of the issues is do what NexSoftware is doing and stop supporting Android 1.5 all together and try and force the manufacturers and providers to do upgrades.

  • Pingback: Complications looming for Android developers | 7touch Group Blog()

  • Christoffer Du Rietz

    This is one of many problems the Android platform has over the iPhone. People always seem to think that openness and freedom is better for everyone, but this is a clear example that it isn’t. Of course businesses will be drawn to develop for the iPhone when you can reach much larger audience with less effort.

    I’m part of a mobile development startup (MobisleApps) focusing mainly on the Android platform and we do believe firmly in the potential of the Android platform. But Google is making it very hard for us to prosper because they don’t seem to have a consistent strategy that we can hang on to. This whole device inconsistency is a real pain when it comes to development of nice user interfaces. If Google at least could restrict the OS to run on only 2 screen resolutions then it could be controllable. But now we have to see which device will become the most popular and see to it that our apps are catered to it. Adapting to all possible screen sizes is uncontrollable overhead and the restrictions would water down the interface to a mess. So it’s absolutely not only game developers that are restricted by this.

    So Google, if you wan’t a flourishing developer community on the Android, please shed som light on this and your strategies for the future of Android.

  • Pingback: Android and Me()

  • Yves
  • Will Henriquez

    How has WinMo coped with this issue… They keep throwing out new phones with different resolutions as well. Let;’s see, the Dash, Treo, HTC Touch, Touch Pro 2, Imagio, HD. Not to mention the countless HP/Dell PDAs out there. It’s definitely not new and they should’ve taken it into account before hand but… eh… what can they do now… Move forward like WinMo (still an ok platform)… It’d be nice if they had unique developers specific to the device or carrier.

  • Pingback: iPhone vs Android is not PC vs Mac | ro()

  • Pingback: Our first release of the Android App is coming soon!()

  • Pingback: Xavier Vespa – Tattoo: Le Vilain Petit Android De HTC()