PopCap: Android is a "struggle" to develop for

PopCap, the massively successful developer of casual games, has recently started making their way onto Android. First came Chuzzle, then came Plants Vs. Zombies and Peggle is due to follow soon. However, in a recent interview with Edge, PopCap has admitted that the road to Android, albeit a long overdue one, has not been easy.

Senior Game Designer at PopCap, David Bishop, had this to say -

"Though Android is one of three strategic mobile markets for PopCap, it's been a challenge because of the breadth and variance of devices"

Android often comes under fire due to what people call "fragmentation". People mostly attribute this to manufacturers and carriers being slow to push the latest Android OS updates to their devices, however it seems that this is only a small part of the story.

In reality, most android devices are on Android 2.1 and higher meaning you can target most of the market by simply building towards Android 2.1, which should run on all later versions as well. However, Android's popularity means that there are hundreds of different devices out there, all with different screen sizes, processing power, memory and so on. This is where the fragmentation issue rears its ugly head as it means that two devices, even when running the latest version of Android, can have vastly different experiences for the end user.

The interview with Edge is part of a larger piece where PopCap discusses their strategies for porting titles to various platforms. In fact, PopCap doesn't even like to call it "porting", as that implies you don't tailor the title to each platform's strengths, which is something that PopCap prides themselves on. Perhaps this is the real reason PopCap found Android to be such a struggle - with so many different devices, tailoring to each of them takes time and patience. Still, it's good to know that PopCap are committed to Android without sacrificing quality in the process.

Report a problem with article
Previous Story

App Review: ShakyTower for Android

Next Story

Apple releases unlocked GSM iPhone in US

43 Comments

Commenting is disabled on this article.

android is a slow, fragmented,inconsistent, hacked together mess. the api sucks and limited. the tools suck. the app sales suck. the piracy is rampant. ive quit developing for it,as its more of a headache. most of my users are pirates,and ive made more money on windows phone and ios in a fraction of the time it was on their respective stores than android. i cant believe i wasted so much time and resources on android. this was the most screwed up platform ive ever developed for.

Firstly Popcap said it was a challenge rather than a struggle, am I the only one who sees a distinction between these? Secondly, it's apparent that Android is an OS used on a wider range of hardware and this is the reason it has become so popular. If a developer wants access to Androids pretty huge user base then they'll have to make a trade off, in the form of coding for the larger selection of hardware.

Apart from device specific problems the only demographic that seem to run into hardware fragmentation issues are those on low end devices. Anyone who buys a crappy tablet from eBay or a budget device shouldn't expect high end games to perform well or even work at all. Sure you'll be able to run a good amount of lower spec'd games but complaining because your 400MHz 320*240 based device can't run Tegrazone games is retarded.

Pop caps just lazy. Android based off of java, and java is pretty damn easy. ive actually found android to be fairly easy to program for.

why worry about fragmintation any how, most android users replace their phone every year any how. 2.1 and up and with 800mhz proc u can run most anything.

stuttermind said,
Pop caps just lazy. Android based off of java, and java is pretty damn easy. ive actually found android to be fairly easy to program for.

why worry about fragmintation any how, most android users replace their phone every year any how. 2.1 and up and with 800mhz proc u can run most anything.


Because making a program work is not necessarily the same as making sure the user experience is the same across the different phones. I agree it's laziness, but I also wouldn't say it's something that is easy to overcome for smaller developer firms.

Just an FYI, some companies like Samsung offer the ability for developers to rent time on real hardware so that developers can test across a wider range of devices.

Android is a mess right it will take a few generations for it to be fixed. I don't just blame the manufactures I blame the whole eccosytem. The carriers, the manfanufactures and google.

I think Popcap is just lazy. There are plenty of developers (IE Rovio) who seem to get on just fine. I don't see what the problem is.

its the same with pc gaming, the only way to get the best experience its to have the best, overpriced and expensive hardware....

Sure in pc gaming we have more compatibility and while its fragmented its still better than android, we have to realize that android its new or have less time on the market, things could be improved somehow, google should take notice and i hope they try to fix this issues otherwise they are heading into a development hell.

I'd say the problem is more the phone manufacturers for not keeping their phones up to date. I don't see any other Android developers complaining

stezo2k said,
I'd say the problem is more the phone manufacturers for not keeping their phones up to date. I don't see any other Android developers complaining

No doubt, it's only a few devs that are complaining and fault mostly falls on the manufactures and their lack up updates. I don't know how this "18 months update" is going to work out for manufactures or Google, but hopefully it helps with crap like this.

Some of the issues are that some devices cant be upgraded past 2.1 due to their hardware limitations... I have a ZTE MyTab V9 i got for $99 which im able to upgrade o 2.2 officially and 2.3 un-officially...

Some devices i know (Pendo Pad) cant go past 2.1 due to its own physical hardware limitations (based on details i have read)

This kind of fragmentation only really exists for the smaller developers because larger development teams would have the resources to be able to test and develop on multiple devices. Smaller teams and individuals generally won't be able to afford multiple devices.

That's the price of having an open platform and no hardware standards. Whether its a good or bad thing depends who you talk to...

This problem is Google's really though.

While some people are in love with Google, many developers will be turned off due to the fragmentation of the operating system. Low developers for quality games and apps will mean comsumers will be put off the phones and ultimately result in a lower take.

With Google's obsession with developing very different versions of their Operating System, it is ultimately their fault as they appear to have rushed ahead (like usual) to bump up their version number.

While I own an Android phone myself, when Windows Phone is out of infancy, then I will be looking to make the move to that.
I kind of see now why people turn to Apple as their system while controlling, does provide a stable development platform to work with.

Mr Spoon said,
This problem is Google's really though.

While some people are in love with Google, many developers will be turned off due to the fragmentation of the operating system. Low developers for quality games and apps will mean comsumers will be put off the phones and ultimately result in a lower take.

With Google's obsession with developing very different versions of their Operating System, it is ultimately their fault as they appear to have rushed ahead (like usual) to bump up their version number.

While I own an Android phone myself, when Windows Phone is out of infancy, then I will be looking to make the move to that.
I kind of see now why people turn to Apple as their system while controlling, does provide a stable development platform to work with.

It is Google's problem, but hardly their fault. It is in Google's interest to make the best multi platform operating system possible. Blame OEMs for not updating their phones.

SuperHans said,
It is Google's problem, but hardly their fault. It is in Google's interest to make the best multi platform operating system possible. Blame OEMs for not updating their phones.

Actually it's only Google's fault as they developed a system where updating is as much a PITA as it was on Windows Mobile…

SuperHans said,

It is Google's problem, but hardly their fault. It is in Google's interest to make the best multi platform operating system possible. Blame OEMs for not updating their phones.

Agreed

PC fragmentation is also the main reason PC gaming is dying. Too many graphics cards, CPUs, screen resolutions etc. There is no way to target all of them.

digger1985 said,
PC fragmentation is also the main reason PC gaming is dying. Too many graphics cards, CPUs, screen resolutions etc. There is no way to target all of them.

Personally, one of the main things killing PC gaming is half assed lazy console ports. As far as the various video cards go, that's one of the points of having something like DirectX compliant video drivers in the first place.

digger1985 said,
PC fragmentation is also the main reason PC gaming is dying. Too many graphics cards, CPUs, screen resolutions etc. There is no way to target all of them.
This is a none issue, that's why DirectX exists.

digger1985 said,
PC fragmentation is also the main reason PC gaming is dying. Too many graphics cards, CPUs, screen resolutions etc. There is no way to target all of them.

I disagree with this. You don't really target individual graphics cards, rather you'll target an API they all use (i.e DirectX). Occasionally yes you'll want to optimise by targeting a bit further, but this generally boils down to targeting a specific shader model OR a specific architecture (i.e. targeting "AMD" and "nvidia" rather than targeting their individual products).
CPUs rarely make a difference, it's just a compiler switch and even then, most games don't bother with those sorts of optimisations. As for screen resolutions, when was the last time you played a PC game that didn't support whatever your machine supported?

Kushan said,

I disagree with this. You don't really target individual graphics cards, rather you'll target an API they all use (i.e DirectX). Occasionally yes you'll want to optimise by targeting a bit further, but this generally boils down to targeting a specific shader model OR a specific architecture (i.e. targeting "AMD" and "nvidia" rather than targeting their individual products).
CPUs rarely make a difference, it's just a compiler switch and even then, most games don't bother with those sorts of optimisations. As for screen resolutions, when was the last time you played a PC game that didn't support whatever your machine supported?

So why can't the devs target Androids APIs in the same fashion?

thommcg said,
Not all graphics card perform equally though, do they.

That's why DirectX gives you the ability to query the capabilities of the card. The developer can find out right out of the gate what the card is and isn't able to handle.

i think it falls in the same reasons..
If your cheap, expect little to work.
Put the money into it and it will power on through everything.

Oh no, lets not start this "PC gaming is dying" stuff again. People have been saying that for 20 years now and it's been nonsense the entire time.

digger1985 said,
PC fragmentation is also the main reason PC gaming is dying. Too many graphics cards, CPUs, screen resolutions etc. There is no way to target all of them.

Wait, PC gaming is dying?

digger1985 said,
So why can't the devs target Androids APIs in the same fashion?

They do, just that they compare it to Apple where it's easier because there are way fewer device to contend with. It's like Ikshaar said above, if it wasn't for Android the situation would be incredibly worse, every large manufacturer would have it's own OS.

Today the situation is similar to having PCs for gaming (Android) and just one cosole system (Apple), if it wasn't for Android we would have a dozen consoles and all games would have to be made a dozen times over.

digger1985 said,

So why can't the devs target Androids APIs in the same fashion?

Because Android doesn't offer APIs that are device independent, nor does it offer simple interaction APIs.

OpenGL on Android is not easy, as to get performance you are dealing with the video driver and specifics to the device and writing 'around' OpenGL APIs to get good performance.

As a quick example, the CPU/GPU used in the WP7 phone gets about 7x the performance of the same CPU/GPU when running under Android. (Qualcomm's numbers even.)

OpenGL is good at 'fallback' and most Android GPU drivers just don't fully implement the OpenGL features and expose them properly through Android. So in writing a genreal OpenGL App for Android, on a many devices the GPU is left behind as OpenGL is using the CPU when developes are expecting the GPU to handling things.

This gets messy really fast...

On Windows you can write to OpenGL or DirectX. OpenGL is a less easy as the OpenGL version of the GPU is more fluid and the full implmentation of functionality is not always there. With DirectX, functionality HAS to be there, as the Windows Certified Driver requires it to hit the DirectX version feature set. So a DX9 GPU will work with 99.9% of all DX9 games, and a DX10/DX11 GPU will do the same, with modest performance tweaking that happens at the user adjustable settings level, not in complex coding changes.

quintesse said,

They do, just that they compare it to Apple where it's easier because there are way fewer device to contend with. It's like Ikshaar said above, if it wasn't for Android the situation would be incredibly worse, every large manufacturer would have it's own OS.

Today the situation is similar to having PCs for gaming (Android) and just one cosole system (Apple), if it wasn't for Android we would have a dozen consoles and all games would have to be made a dozen times over.

True, but it isn't just about device consistency. Windows pulls off games on an infinite base of hardware configurations, even just the CPU/GPU. A strong consistent framework that deals with all this crap for developers makes a big difference.

So you can either have a couple of consistent device/computer configurations or you can have a rich API set that deals with massive number of hardware devices easily, and Android does neither.

Apple = few devices
Microsoft = rich API/Framework for large set of hardware configurations

Google has a problem with Android, but I'm not sure they even realize it. They bought Android and the VJM and don't have a clue that they need more to establish some consistency on either side that the Linux driver set and the VJM and OpenGL ES just does not offer developers.

thenetavenger said,

Because Android doesn't offer APIs that are device independent, nor does it offer simple interaction APIs.

Android ONLY offers APIs that are device independent. No API is reliant on a particular phone and what do you class as simple interactions APIs? U mean like a widget library? Do you have to code every button, combo box, picture box et al from scratch?

digger1985 said,
PC fragmentation is also the main reason PC gaming is dying. Too many graphics cards, CPUs, screen resolutions etc. There is no way to target all of them.

Hm, i thought it was because people were buying more notebooks than pcs, which are less powerfull. Yet developers insist in making heavy games. And thats why plants vs zombies and angry birds were so successfull, they can run on any piece of crap of hardware.

Of course without Android, it would be way WORST... the fragmentation would not be just different OS version, it would be completely different OSes. Unless you want "1984", and you mandate every one uses the same phone, there will always be a variety of devices to support.

Now one version can play on about 40% of the mobile market at once - even if they have to tweak performance to adapt to the broad range of users/devices, it seems a good deal.

Surely it's no more difficult than designing for Windows? Why don't the makers of these apps put in some sort of performance options like you get on PC games then?

jamesyfx said,
Surely it's no more difficult than designing for Windows? Why don't the makers of these apps put in some sort of performance options like you get on PC games then?
U KNO HOW BIGG PC GAMES ARE?

Abhinav Kumar said,
U KNO HOW BIGG PC GAMES ARE?

Yeah, all PC games are massive. Every single one of them takes at least 10GB worth of data now. Even Pong.

... >.>

jamesyfx said,
Surely it's no more difficult than designing for Windows? Why don't the makers of these apps put in some sort of performance options like you get on PC games then?
Most Windows applications can be tested on the same PC it was compiled on. With Android, you have to use a device emulator, which unlike other mobile platforms, the emulator is quite different from a real Android OS on a real device.

jamesyfx said,
Surely it's no more difficult than designing for Windows? Why don't the makers of these apps put in some sort of performance options like you get on PC games then?

Um, ya it is a lot more complicated than developing for Windows, at least Windows of today.

Developing on Android with any complexity is very much like developing for Windows 3.0, which was a 20 year old model and set of base APIs. Even Windows 3.1 was easier than what Android offers as it was the shift to move more devices and offer OS level abilities to applications so developers didn't have to even think about querying the device functionality.

On Windows today, no matter what track you pick, you have display independence, scaling, and hardware independence, as this is how the APIs of Windows are designed. You no longer have to worry about device specifics whatsoever. Windows 7 offers inherent APIs that offer gestures and touch APIs to the applications that Android just doesn't have, and yet Android is supposed to be a 'touch/tablet' OS, but has nothing in the inherent OS beyond reporting the touch points to the Application for touch interactions.

Phil_123 said,
Most Windows applications can be tested on the same PC it was compiled on. With Android, you have to use a device emulator, which unlike other mobile platforms, the emulator is quite different from a real Android OS on a real device.

You can setup Eclipse to deploy the binary directly to the phone. You can even debug it while running on real hardware too.

popcap likes flash. flash has a nice fixed window size where you can put all your sprites perfectly tailored for that window size.
Android, like PCs, can have a number of different screen resolutions. On a PC, this means having a texture/Sprite/whatever with the best resolution you want and then resize it to fit the screen. Or have different resolution textures which can be easily handled by lower end PCs... the same concept may be applied to android, but mobile app developers want their apps to be small, as small as possible, so the user has as many apps as possible. That is why we don't see android games with different levels of resolution. We only get the maximum resolution resized to fit the screen which requires more processing power and you see the lower end devices with their lower resolution screens suffering the most.
My Lg P500 can play angry birds just fine... but there are some levels which are just a pain! SO dead slow, but only at the start! why?! I don't know, but I think it has to do with textures/sprites... too many to handle, I guess.

pocaracas said,
popcap likes flash. flash has a nice fixed window size where you can put all your sprites perfectly tailored for that window size.
Android, like PCs, can have a number of different screen resolutions. On a PC, this means having a texture/Sprite/whatever with the best resolution you want and then resize it to fit the screen. Or have different resolution textures which can be easily handled by lower end PCs... the same concept may be applied to android, but mobile app developers want their apps to be small, as small as possible, so the user has as many apps as possible. That is why we don't see android games with different levels of resolution. We only get the maximum resolution resized to fit the screen which requires more processing power and you see the lower end devices with their lower resolution screens suffering the most.
My Lg P500 can play angry birds just fine... but there are some levels which are just a pain! SO dead slow, but only at the start! why?! I don't know, but I think it has to do with textures/sprites... too many to handle, I guess.

It's less to do with the application being small, and far more to do with code complexity. Having to introduce checks for device capabilities (for many types of device) can be complicated and increases test time (because you really need to check more than just one type of device) and risk of defects.

pocaracas said,
popcap likes flash. flash has a nice fixed window size where you can put all your sprites perfectly tailored for that window size.
Android, like PCs, can have a number of different screen resolutions. On a PC, this means having a texture/Sprite/whatever with the best resolution you want and then resize it to fit the screen. Or have different resolution textures which can be easily handled by lower end PCs... the same concept may be applied to android, but mobile app developers want their apps to be small, as small as possible, so the user has as many apps as possible. That is why we don't see android games with different levels of resolution. We only get the maximum resolution resized to fit the screen which requires more processing power and you see the lower end devices with their lower resolution screens suffering the most.
My Lg P500 can play angry birds just fine... but there are some levels which are just a pain! SO dead slow, but only at the start! why?! I don't know, but I think it has to do with textures/sprites... too many to handle, I guess.

Um display resolution independence is something Flash does rather well, it is not as fixed pixel as you describe, in fact if used right is the opposite of what you describe and what has drawn developers to it as it can use vector graphics.

Android is a horrible to develop on, for the same reasons that Facebook and every other major label has come out and publically talked about.

The VJM API set is restricted and horrible and slow, with no inherent OS functions that instead have to replicated in each application. (There is no reason that simple touch gestures have to be coded by the application developers, for example.)

THe VJM also has no inherent display scaling capabilities, making the developers design around the screen sizes specifically.

The OpenGL ES implementation is just as cumbersome.

Android is also using a framework that requires a programming model that is a generation behind iOS and two generations behind WP7. iOS has some ok levels of ObjectiveC/Cocoa features and WP7 is offering a true 'object oriented' development and OS platform. (not just an object based or partial object based platform like iOS.)

This is why copy any Paste on WP7 when added, just worked everywhere, yet on Android you STILL can't do copy and paste inside the Email App that Google provides, as this complexity would have to be 'specifically' coded into the Email App, instead of its controls properly just inheriting the features..