Mark Cooke (cofounder)
Prior dev background (platforms): Xbox, Xbox 360, PS2, PS3, GameCube, iOS, Android, Sifteo Cubes
Shipped Android titles: Offworld
Preferred toolset: Unity
Is fragmentation still a major issue for you?
Thanks to the great work done by the engineers at Unity, it has been easy for us to get our games running on a wide variety of Android hardware. As a tiny studio, Shiny Shoe has access to a limited number of devices to test on, but every device we've been able to get our hands on runs our games.
What is frustrating and creates a concrete support problem is that there are so many devices out there that there is literally no way we can support them all. We receive a few support requests a week where a particular part of the game is nonfunctional on a specific device/OS combination. I want to help these customers, but we literally can't; we don't have the time or money to be able to get test hardware in the correct state to find and fix the bugs that are being reported.
When we shipped Offworld we decided to launch on both Google Play and the Amazon App Store, another form of dealing with Android fragmentation. This necessitated additional work in terms of IAP processing and other store-specific changes. This work wasn't particularly challenging, but also wasn't free in terms of engineering and QA time. In our case it wasn't worth it; we have somewhere on the order of 100 times the number of downloads on Google in comparison to Amazon.
Although we have run into some issues, overall fragmentation hasn't been a huge issue for us and we are happy to be working on the Android platform.
Do you have any tips for optimizing the Android dev process?
Make sure to design your UI to support multiple resolutions and aspect ratios from the start. We did this on Offworld and it made it easy to launch on a ton of different devices with minimal UI work. We took a fairly simple route to achieve this that can work for many games; basically, we resize an orthographic camera dynamically based on the vertical screen resolution and the resolution that our UI was authored at. In combination with that we used a Unity plug-in called Multiplatform toolkit, created by fellow indie Owlchemy Labs out in Boston, which allowed us to reposition UI widget containers based on aspect ratio.
One thing I would recommend against if you can avoid it is targeting multiple texture-compression formats via different APKs with manifest files that limit target hardware by the <supports-gl-texture> property. As I understand it, there is only one texture-compression format universally supported across all Android devices: ETC1. That format doesn't support an alpha channel. Offworld uses a large number of textures and almost all of them have an alpha channel, meaning if we wanted to ship a single APK we'd have to switch over to uncompressed 16- or 32-bit textures. This was scary -- we were really concerned about either using too much runtime memory or harming visual quality by switching to uncompressed 16-bit color.
So with that in mind we tried to support the three major hardware-supported compressed texture formats -- PVRTC, ATC, and DXT -- via separate APKs that included texture data for each platform. This is a nightmare and if you don't have a good build process set up you're in for pain. We eventually launched with this setup but quickly ran into a huge issue -- some models of the Samsung Galaxy S2 (a very popular Android device at the time we launched) didn't have hardware that supported any of the aforementioned compression formats. This means that the Google Play store thought our game didn't work on many Galaxy S2s and thus people with that device couldn't download it.
After going through all of that we decided to scrap our setup and switch to uncompressed textures. That took additional work to reduce texture sizes where we could get away with it, but ultimately it has worked out much better for us and allowed all models of the Galaxy S2 to download and play our game.
How have your games sold on Android?
Contrary to conventional wisdom, Offworld has done significantly better on Android than on iOS. We're not really sure why, though! We received minor features by both platform holders that helped drive early installs. After the initial bump we dropped off in a major way on iOS but have continued to find an audience on Google Play. Our revenue on Google Play is currently three times higher than our revenue on iOS. Also, I know this is out of the ordinary, but for us ARPU is fairly similar between the platforms. Amazon has been a total bust for us unfortunately.
Overall, have you found Android dev to be worth the extra work? Are you looking into other mobile platforms?
I always consider this question on a case-by-case basis, but for Offworld, because we are using a cross-platform development tool like Unity, I think it was worth the extra work. Unity has done the majority of the engineering work for us, easing development significantly. I'm interested in potentially releasing on Windows Phone to test that market, but for us that is out of the question until Unity supports the platform.