As you've no doubt noticed, the Android Army is alive and well. Every quarter Android sees exceptional growth in the American smartphone market, and with new blockbuster phones being released every few months, it's difficult to resist the allure of having the newest possible hardware. So why, with all this momentum, have we at Muse Games not ported our puzzle-platformer CreaVures to the exploding platform, instead remaining focused only on iOS?
Who Are We, Anyway?
As a small, independent Unity3D development house, Muse Games has an interest in seeing the widest distribution platform possible for our games. A little bit of work can go a long way when your development platform supports deployment to a wide array of devices, and we wanted to make full use of the spectrum with CreaVures. Having successfully taken it from PC/Mac to the Web and soon to be iOS, we were eager to bring our game to Android. That’s when the fun began:
It was May this year, and we had just started experimenting with CreaVures on iOS. We had versions successfully running with new materials, textures and shaders, and we were excited about the prospect of getting it running on the slew of Android devices we had sitting around the office on the back of our work for iOS.
We quickly ran into a variety of issues: There was no consistent support for texture compression formats, device horsepower varied wildly -- some devices didn’t even ship with floating point units in their CPUs! We were willing to brave these problems, but we eventually folded when the extremely popular Galaxy S handset proved unable to run Unity games thanks to a memory paging issue at the kernel level. We simply weren’t willing to ship, let alone sell, a game that we could not guarantee would run on the most popular handsets at the time.
Pack It, Ship It
The problem of packaging and shipping Android builds out is also a notable one. Google now allows apps up to 4GB to be uploaded to the Android Market; a substantial increase over the old 50MB limitation. What this doesn’t fix, however, is the relatively anemic amount of internal storage on many of the most popular Android devices. (Most HTC devices for example only ship with 1GB of space.) This forces you to build small wrapper applications to deliver in the Market, and on first run validate and download the requisite assets to the SD card of the device.
This presented us with two problems: we would have to maintain a very different version of our game that worked against this external data pack, and we would have to shoulder the storage and transfer costs for all of this external downloading. The problem of keeping these assets in sync with the binary also concerned us, as now there was a very real chance that a user could update their binary without also updating their asset pack.
The Android Market itself is also nothing to write home about. After spending six months with a 48 hour, carte blanche refund period on purchases in the market, it was reduced to 15 minutes to appease developers who thought the 48 hour period was too long. This 15 minute period works well for small applications that don’t take long to download and run, but for a 3D game that must download more data to the SD card externally at first run, this poses certain problems.
Apple, for example, will take care of refunds and disputes like this, refunding the customer and charging you on their behalf. Google, however, has no role in the matter after the 15 minute period. Emails go directly to the developer who then must decide if the user deserves a refund, despite Google taking the same 30% cut that Apple takes.
For a small team like ours, we couldn't commit the additional resources necessary for maintaining a completely different build structure, maintaining an overbearing testing matrix, or dealing with the Android Market in the case that something did go wrong.
With Ice Cream Sandwich, the newest version of Android, right around the corner, we are very excited about the future of the Android ecosystem, but presently there are too many hurdles preventing us from committing to the operating system.