Before you buy Android for Unity, ARMv6 and what you should know

Before you buy Android for Unity, ARMv6 and what you should know.

The purpose of this post is to inform potential Android developers of the issues they will face
when developing from Unity for Android

ARM architecture:
About the processors phones use.

ARMv? and why is it important?
Quite simply it is the Processor used in phones. It is important to note
that the differences between ARMv6 and ARMv7 is effiency and the ability
to run many things on your phone within an application. The difference is
substantial, doubled, and tripled in some cases.

Unity only publishes to ARMv7, and maybe ARMv6 with VFP (Vector Floating Point) phones.
How can you find this information?
It is listed here:
http://unity3d.com/unity/system-requirements.html
However it is NOT listed here:
http://unity3d.com/unity/publishing/android

How can we tell what phone is what?
Possibly the quickest answer to this question is: 4G = ARMv7+

You MIGHT be able to tell which phone is ARMv6 or v7 Here (Though I find it terribly confusing
and several phones that have been out for 6+ months aren’t on this list):

And you MIGHT be able to tell which phone is which here (Oddly enough thats at FireFox’s Dev Site):
https://wiki.mozilla.org/Mobile/Platforms/Android#System_Requirements

What phones are currently the most accessable or most widly used by people in the market?
That is a good question and a hard one to answer. There doesn’t seem to be a really simple
way to find out at the moment. Currently 01/11/2011 there are no less than 40 phones which
have been sold in the last year and are currently sold that all have ARMv6. A handful of these
have VFP. There are about 10 phones on the market, (some that have been available since October of 2010)
that are ARMv7, and 4 tablets. These are the ‘latest and greatest’ units and won’t fully be integrated
into the market for another year at least.
Other than trying before buying all 40 of the ARMv6 phones, telling which ones will work with Unity, the simplest
answer is the ARMv7 phones.

How long until those ARMv6 phones are no longer in the market bottle-necking our publishing?
ARM is all the way up to ARM11 and there is talk already of a phone being released with ARM9.
But our concern as developers is simply, how much of the market can we rely upon that our
software will work?
Typically it is better to develop for the largest common use consumer,
not the latest and greatest consumer who has to have the newest thing on the market.

In short, until those ARMv6 phones are pulled from availability to consumers, you have to project
that 2 years from the day they stop offering the ARMv6 phones is when the market will
start to balance more towards ARMv7 and above. This will take a while as alot of those phones that
are ARMv6, are offered for free to consumers! It’s simple really, a consumer is going to go
after “Get a free smartphone” versus dropping 200+ dollars for the ARMv7 phone.

How can we tell our consumer, or can we detect which phone they are using so we don’t generate
thousands of dis-satisfied potential customers?
Unfortuntly at this time there doesn’t seem to be a method via the Android market to detect if the
phone is ARMv6 or 7 BEFORE they download your app. All you can really do is include it in your
description, alter the pop-up that they will receive when they try to run your app;
“Your Phone’s hardware is incompatable, the app has been closed” (or something similar)
and hope to point them elsewhere and apologize for wasting thier time!

The wall I ran into with Unity
(Also known as “Don’t make the same mistake I made!!”)

It was in November that I made the decision to Purchase Unity and focus on Android development.
I performed what I beleived was the best dilligence in making sure I knew
every possible requirement for publishing to the Android.
Short of finding the Android page on Unity
http://unity3d.com/unity/publishing/android
The Engine Pages
http://unity3d.com/unity/engine/
And all of the other pages linked when reading the website, I never encountered
the page that says specifically, to look for ARMv7.
http://unity3d.com/unity/system-requirements.html

Also Unity’s setting was still set to the "Universal (experimental) option so my test app
‘appeared’ to be working just fine on any phone I tried.
I had run several smaller apps built in Eclipse as well as published directly my test app
to the emulator, again everything ‘appeared’ to be functioning just fine.

When I went to try and troubleshoot why sound wasn’t working on the development test phone
was when I encountered the speed bump of ARMv6. After alot of google searches I finally
found a link to the system-requirements page of Unity within a forum posting:
http://forum.unity3d.com/threads/67883-Android-Sound

In fact, if the sound had worked
from the start, I would have never figured out the differences in ARM versions and why they would
matter.

As it happens, this was exactly 2 days after I was locked into keeping the phone that I received, the LG

Optimus S, and 7 days after purchasing full licensing for Unity Android.
Talk about taking a punch to the face. Now I have a phone that is useless for my purposes
for the next two years!

So what’s the deal?
The deal is I really like Unity, I adore the heck out of it. It’s not only affordable
for artists and game designers, but it allows you to quickly and easily publish to multiple
platforms. To be frank it makes all other game engine options look stupid. That being
said it’s a no brainer on sticking with Unity. Mind you this is coming from someone who
first wrote in Basic on the Atari 2600 28 years ago.

The problem is, publishing to Android won’t really be solid for another year. Consumers get
locked into 2 year contracts, in the same way I got locked in, and the most common will be
the free phones and the cheaper (50$) for the next 2 years. Without a way to dumbdown your app, or modify

the published one within Eclipse to work for ARMv6, that is potentially a GIANT chunk of current market

share which will be LOST to a Unity>Android developer.
It’s kinda like saying “We’ve got the BEST breed of horse from the TOP Sires available, but we’re
going to knock its back two legs off just before it leaves the gate. Don’t worry it will run just
fine down the track.”

To be fair however, Unity is making a good choice as the effiency of ARMv7 and above far outshines
the ineffiecncy of ARMv6, even with VFP. So the choice made here is to get the awesomeness of Unity

working with less headache. Thumbs up on that one.

How can we fix this?
Unity:
Unity’s already taken a stand last October that they are focused On ARMv7.
A standing list that is easily accessible, in fact right here on this very page:
http://unity3d.com/unity/publishing/android
of a few things;
Stating ARMv7 only and linking to what ARMv7 is, its advantages (performs much much better, etc)
A list or a link to an active list of phones that are ARMv7+ and compatable.
A method to repackage your app via Eclipse or hooks that can be written by hand in the AndroidSDK for the

following:
Detect which ARM a consumer has during install (More on Android Market really)
Dumbing down your APP for ARMv6 (Maybe we can strip it?)
External linking to external scripts that will allow coding via the SDK before packaging by Unity. This

sounds like madness but what the heck.
Make Unity Sales Reps aware of this difference when a potential buyer calls. Several phone calls
and not a single sales rep even knew what ARM was at all.

Android Market:
We need to be able to check if our app will work on thier phone. That’s it. If not we shuffle them
to an app that will work or apologize humbly and give them free smores.

Android Developers:
Really you would have to start from scratch and code your app from dirt to diamond and lose all of the

wonderful engine use from Unity to get your app working on ARMv6. It is possible, there are tons of apps
that work just fine on ARMv6 without VFP that have music, sound fx, and complex AI all running at the same
time. This option is to not use Unity but create your own engine, in effect. (OUCH!)
An example of this accomplishment would be Pocket Legends and thier SpaceTime Engine.
http://www.spacetimestudios.com/content.php?5-Tech
Runs just fine on ARMv6 phones.

The Community:
Create a standing list of phones that are ARMv6 and ARMv7. The wikipedia page is confusing at best and
not up to date. Also finding a Firefox development website for such a list is kinda hinky.

Find out which Android phones are used the most and keep track of it. This is an ongoing project
and something I myself have to check daily to see if I can actually find anything of use.

Conclusion

Hopefully this posting will help guide folks better, prevent confusion, and help the android market grow
better. Onward and upward!

Where this is posted:
ARMv6 Android Support
(Yes Unity has already taken a stand on ARMv7+, but what the heck one can dream right?)
http://feedback.unity3d.com/forums/15792-unity/suggestions/1368831-armv6-android-support

Android Market ARM Detection
http://www.google.com/support/forum/p/Android+Market/thread?tid=25a80c0968946087&hl=en

Before you buy Android for Unity, ARMv6 and what you should know.
@ Android Forums:
http://androidforums.com/application-development/255511-before-you-buy-android-unity-armv6-what-you-should-know.html#post2124617

Thanks for all the info.

Thanx a lot Argenex! You are quite right. If I knew all this before… :slight_smile:

Thanks for the info.

Great analysis.

True this looks dark but I must say I found A LOT of ARM7 phones and tablets being release already along these beginning 2011 months, I followed Engadget continuously on purpose and checked a lot of the stuff.

So, what is written is true but I don’t agree that the market will be so ARM6 saturated this year, my opinion is that ARM7 will instead explode this year, and for the end of 2011 we’ll not see any ARM6 being sold anymore (or nearly).

Of course, many people having a ARM6 phone will remain unreachable… that’s the slice of market we’ll not be able to reach until 2012 (if the world will not end!) but I think the Unity/Android/ARM7 market is large enough anyway to live on it… for now at least. I mean, before the Big Ones will start the aggression and the rest of the world will start uploading crapapps into it.

Last but not least, Erique wrote (if I remember well) that Android Market is already filtering based on ARM architecture so we shouldn’t worry about that: an ARM6 phone shouldn’t see our game anyway and in fact I have some friends that didn’t find an experimental app on the market using HTC Hero and another ARM6 mobile (can’t remember the model now).

heh, this explains the download difference between my iphone and android apps. even the free ones.

I see postings constantly of how many more androids are sold than iphones lately, but they just don’t correlate on the store.
Iphone apps sell around 10x more than android. It just didn’t make sense until I read this article.

Is it really that impossible to allow for armv6? i know tons of people with an older phone that won’t be updating for who knows.

Thanks for this info. at first I thought oh no… but then I went to find out which processor my desire HD had… whooo haaa I did make the right choice after all. I was going to buy the older desire which wont work with unity.

beside me feeling good about about my decision, I think this is a good decision by unity. Android phones have been doing ok on the sales side but now I think we are going to see a real boom in sales this year, a bit like china’s economy. From what I have seen on android marketplace, I was shocked to se so much crap.

It’s time for us to bring out 3d apps/ games usin unity to compete with iphone standards.

Now is a great time to take on the big boys :slight_smile:

there is a huge difference in the consumers when it comes to apps. Android users are less likely than iPhone users to download apps and significantly less likely to purchase apps. That’s why angry birds is ad supported on android. Also lots of phones they count as android phones are locked up and not truly androids in the sense we think of.

From my research i have done this is just partially true, yes they might not be quite as willing to pay for apps but the difference is just a few % and also those who do buy is prepared to pay more it seems. Also the Android market is growing faster than iOs so the Android market will have more users which most likely will make this difference obsolete.

And also if Angry birds would had actually set their price to a more proper one, ie 1.99 - 2.99 it would most likely have generated more money, and it would had sold on Android aswell. Dont take what one game does as a fact for the entire market.

But you ignore one fact: how large is that share per hardware type?
Because t its also fragmenting worlds faster than iOS and Google does not seem to be interested to get this problem under control any time soon.
iOS gives you 1 -2 new small devices and about 1 large device a year.

Android gives you that per 2-3 months which is faster than the production cycle for larger games.
These different platforms are not “same performance just different manufacturer”, actually they do not even use the same rendering styles (tile based rendering on SGX vs standard desktop rendering approaches on tegra), which makes optimization very ugly and also means that you must buy significantly more hardware to ensure to really support them with good performance which thanks to the lack of “iTouch” counterparts that cost 200-300 bucks cost you a lot due to the $500++ per device. I know enough here that already moaned due to the 1 device per year on iOS, I doubt the will be all to happy if these devices on android cost twice as much and might need to be bought even more regularly due to the fragmentation spread and OS version spread.

Additionally the “bottom half” (cheap half, the more sold half) of the devices base on hardware that could compete with iphone 3g-3gs but not with what you expect in 2011 and see on the competitors platforms and on the upper half of the android devices provide either …

Its a fast growing platform as whole, agreed. Yet many won’t be able to target the whole platform because only big teams can afford the required hardware to target it. Just cause Unity runs on the hardware doesn’t mean anything, half the Unity android games show that by running bare if fluent at all on 1st gen snapdragon hardware yet that was the upper half till last autumn, so on the bottom half of last autumn and before these games don’t run at all anymore in a usable form

I prefer to go with real market research, my observations are useless as I can only se a few people in my city, not everyone everywhere.

iPhone App User Worth More Than An Android App User

iPhone Users Still More Likely to Buy Apps than Android Users

Android Soars, but iPhone Still Most Desired as Smartphones Grab 25% of U.S. Mobile Market

Fruit Ninja Slices 50,000 Downloads in 2 Weeks on Android Market Place

On top of that there are no Android Pods that I have seen, and very few Android Pads, yet. Every other teenager in the world seems to have an iPod touch. There are still more iOS devices than android devices that you can DL apps on.

Nielsen: Android Users More Likely To Click In-App Ads

This matters because the real money now in apps is advertising and in app sales.

The situation changed positively for Android in the last couple of months, last year you could estimate that the Android version will have 1/10th of the Iphone downloads, now it is more like 1/3 with free games. Paid games are also selling great, if you think about the payment limitations (not all countries supported, credit card only).
Also Spectral souls showed that Android users are willing to buy quality software for higher prices, which is a great sign of things to come.

Honestly, i think this is bollocks, the only Arm6 device that people buy in masses is the ZTE Blade, which is supported by Unity.
The other big Android sellers are all higher end devices like the Galaxy S, Desire HD, Droid etc.
If you optimize your game for the Nexus One, it will be playable by a huge part of your audience.

And if we are talking Tegra 2, we are essentially talking about a new plattform for tablets. Most of the games that were shown at MWC today on tegra 2 won’t work on lower end devices and are ports of PC and 360 games in 720p. If you want to make a high end 3D game with a 12 month dev cycle, then this is your target plattform, because by then you have lots of devices in consumer hands, for normal mobile games in the next months, I wouldn’t even use Tegra 2 or Adreno 205 as a reference. As long as your game is running on a Nexus One, it’ll run on all important Android handsets.

hello
i am using unity 3.5.2 and still having trouble with android sounds on armv6 devices!
but some games like train crisishas no problem !
is there new solution for this!??

This topic pops up relatively high on google search results regarding Unity/ARMv6, so it could be helpful to put this info here as well:

In Unity 4, ARMv6 is not supported anymore.

This affects both iOS and Android builds (“iOS: Unity 4.0 discontinues support for ARMv6 devices (iPhone 1st gen, iPhone 3G, iPod Touch 1st/2nd gen)”).

Full list of changes - http://unity3d.com/unity/whats-new/unity-4.0.

Very informative read, that was! And there was me thinking the Majority of Android phones would work except of course those real cheap ones.

Eyes Opened, as they say!

Great thread. I read this a while ago and its been good to refresh it in my mind.
Few quick questions people may find useful to know the answers to:

  1. If I build for Armv6 with VFP, then a phone built using the Armv6 architecture will not be able to play the game? It would require a phone built using the Armv6 with VFP architecture?

  2. If I build using Armv6 with VFP, can phones build using the Armv7 architecture still run the game?

  3. If we build using Armv6 with VFP then it’s likely the game will be downloaded more on the Android market and therefore rank higher in search results. It sounds like the only draw back here is that it would waste players’ time and they would possibly give a low star rating in the market. What are your thoughts on this?

Please let me know what you think as I’d like to test this out. I’ll let you know my results and post here :slight_smile:

Thanks for the info
Martin

Quick update:
So I testing this out quickly with 2 of our games on the Google Play market. When building the game using Armv6 inside Unity, it runs ok on my armv7 devices (google Nexus One, and Sony Experia), but it does run noticeably slower on the Nexus One when building using Armv6. Don’t know how this will effect downloads yet but will let you know if anyone is interested.
Here’s the links if you want to try them out:

Gangnam Style Vs Dance Zombies
https://play.google.com/store/apps/details?id=com.cobalt.gangnamStyleGirlKiller

Super Retro Dodge Ball X
https://play.google.com/store/apps/details?id=com.visualideastudio.com.cobalt.dodge.ball.x

Martin

Arm6 is dying or dead, I see this is a non-issue.

True, though I did see a jump in downloads when publishing an Armv6 version.

yeah I have a split opinion on this. It’s true that arm6 is dying but it is not by any means death yet. I have over 3 million users on one of my games and over 25% of the user base is still using arm6. That’s a incredibly big chunk that we are removing by moving into armv7 only platform.

I ported one game to unity4 and I immediately saw the android downloads graph drop like a rock, 25% of users means thousands of users not getting that next update. I raised that concern long ago but unity4 will simply not support armv6. If you want to support armv6, you will need to stick to unity 3.5