I’m getting ready to submit my first android app, and I’m running into the maximum upload size limit. Apparently there’s a 50mb limit, and Battleheart clocks in at a hair over that. There are a few areas where I think I can cut back on my assets, however I noticed something odd.
I first tried halving the bitrate on my MP3 music, since the iOS version uses 256kbps, which is admittedly a bit overkill. However, after rebuilding with all of the music halved in resolution, the resulting .APK file was the exact same size, not even a tiny improvement. Anyone have a guess why that might be?
Well I figured out why my music has no effect on the app’s file size - apparently kbps settings above 128 are ignored. My source file is an uncompressed AIFF, so this seems like a bug.
And frankly, google’s upcoming “solution” is completely half-assed. Developers will still have to work with an .APK that’s <50mb (or <30mb on samsung devices) and load additional content after the base app is installed. This is annoying for users and developers alike - the only thing they’re planning to improve is that google themselves will host up to 4gb of additional content. Yay?
Since I can’t easily reduce my .apk size by compressing my music, I need to look at textures. At the moment, the game is built as a universal binary for iOS, so I’m including “retina” resolution art AND low res art for 3GS and earlier. It’s pretty clear that my only option to get the app under 50mb is to get rid of one or the other “set” of textures. I’d prefer to dump the low res textures and just aim to support the more powerful devices on the market, or at least those with a higher res screen (800x480+).
There don’t seem to be a lot of options for limiting the hardware that can run a given app from within unity. Can anyone verify for me that by limiting to Armv7 only that I can be sure the devices that see the app on the market will have screens of 800x480 or higher? Or are there armv7 devices out there with low res screens and little RAM?
Okay, now I’m losing my marbles. I just removed a dozen low-res textures from the project and did a fresh build to see how much I shaved off, and the .APK went UP in size by about 200kbs. I’d appreciate it if something starts making sense soon. :\
Take a look to Cordy, I think is a very well made game.
At first glance I thought about the 2D platformer (in 3d) unity tutorial, but it has so many additions, like: the main Cord you can attach too (remember me Hook Champ dynamic), jumpers, physics boxes and many other tricks, the graphic is awesome, and is a “Zero” App, with just the first set of levels, and then all the others come by in-app billing.
This is the way to go for now for large games on the Market.
Well I managed to get under 50 without much trouble, I just got rid of my low-res art since it seems like every Armv7 device has a fairly high res screen and a ton of RAM.
It does seem like the best way to go for Android is to have a small initial install, and have the rest of the game be installed after the fact, but that presents some challenges I don’t want to deal with just to get under 30mb for Samsung’s sake. Android is hard enough to justify as it is, I’m not going to jump through any hoops to cater to one specific manufacturer.
That and the top 3 sold devices in 2010 (1 and 3 were galaxy s, 2 htc desire), together over 40% of all sales I think, were Samsung Galaxy S incarnations and the HTC desire.
So its not about “one specific manufacturer”, but THE most relevant ones if you want to target the platform at all.
If you don’t intend to support either, I would drop any further effort for the time being realistically.
Yea, to be perfectly honest, supporting Android is just an experiment for me at the moment. Battleheart was nearly a 1-click process to get up and running on everything except the aforementioned devices, so the investment was justifiable on my part. We’ll see if it does well enough to justify supporting the other 25-40% of the market, but my guess is that my energy is still better spent on other projects, rather than re-writing my game to deliver its content via asset bundles.
Just wanted to add a little more info I’ve gathered recently for anyone else running across these issues - it appears that at least a couple samsungs, the Nexus S and Galaxy Tab 10.1, do not have the 30mb limit. Also, while the HTC Desire has a 40mb limit, the Desire HD doesn’t.
Samsung Galaxy s has changed this.
All newer firmware, froyo and all gingerbred dont have any limit.
The limit was due the fact they did use a partition thats only 30MB(cache), but the newer do use the the data partition and thats is 2GB.
But the sad facts is still not all has this newer versions yet.
Supposedly gingerbread will be available on the galaxy S in most territories some time this month, though they’ve been missing their deadling on deploying it already… the whole thing is awfully silly. Personally, I’m just manually filtering the devices I know can’t download my app properly, and offering the game for sale through Amazon’s app store as an alternative, as their store’s delivery method circumvents any cache size issues.
Battleheart is at the top of the charts on both the android market and amazon store, so I think its safe to say this is an adequate solution.