Battleheart Developer Drops Android As 'Unsustainable'
mr100percent writes with this excerpt from Electronista: "Battleheart's creator Mika Mobile in an update explained that it was dropping Android support. Google's platform was losing money for the company, since it spent about 20 percent of its time supporting the platform but only ever made five percent or less of the company's revenue. Much of the effort was spent on issues specific to Android, where the diversity was only creating problems rather than helping.
'I would have preferred spending that time on more content for you, but instead I was thanklessly modifying shaders and texture formats to work on different GPUs, or pushing out patches to support new devices without crashing, or walking someone through how to fix an installation that wouldn't go through,' one half of the husband and wife duo said. 'We spent thousands on various test hardware. These are the unsung necessities of offering our apps on Android.'"
But I can't help wondering if there is something wrong with the code that it struggled with different GPUs or crashes on new devices without special patches. Most code seems pretty robust to such things.
Just spent the week at the Game Developers Conference in SF and this seemed to be a bit of a recurring theme from having conversations with a couple mobile developers. The cost of supporting Android is too high in many cases and not worth the effort.
Once of the sessions I sat in on (can't remember who it was now, embarrassingly - I think it was PopCap talking about Bejeweled - not a bit player) pointed out that Android has many many variants on many different handsets. Even though the market size is roughly the same as iOS (his numbers were around ~250m each), iOS has way fewer variants to deal with, whereas Android had many. So you get to spend a lot of time messing around trying to make sure it's working on all platforms.
I've noticed from flicking through app reviews in the Market, it's not uncommon to see people with complaints about it not working on their particular handset. I haven't had this problem with anything I've tried so it's hard to tell how big a deal it is, but I don't use many apps.
The general feeling I got from speaking to a few indie developers was that they wouldn't bother doing an Android version unless their title turned out to be a big hit on iPhone.
And I thought Apple fanboys were bad. Android seems to be garnering its own set of rabid followers who disregard reality in favor of their favorite.
All mobile development is platform specific, whether you like it or not. Apple in particular always has an interest in making you develop for their platform only. The fragmentation of the market is deliberate and always occurs in the current *innovation space*. Same thing happened with web 'standards' (ECMAscript and W3C standards), same thing happened with 'operating systems' (until Java came and levelled most of the differences for the developers interested in doing cross-platform stuff), same thing happened in hardware.
At the mobile development is balkanized while the big players fight for turf. Who suffers? developers. It would have been nice to have proper Java work on the mobiles too (funny thing is, the early Apple devices actually had hardware JVM support, which Apple did not use) - that way developers would get a benefit of 'write once run everywhere, test everywhere' (which your JUnit and Continuous Integration environments help with - if you are smart enough to use them). However, every hardware manufacturer wants to do their own thing (just like sound, CPUs, disk drives, networking etc etc all used to have non-standardized interfaces in the past). The current mess on mobiles is Apple's fault as much as it is Google's. Face it, they just don't give a sh!t about developer needs, they just want to rule the mobile world and feel that trying to capture the market with non-standard interfaces helps themselves.
OpenGL has become a joke under Khronos. More and more of the work needed to render scenes is pushed back onto the application developer. Once upon a time you could specify the material, texture, and light parameters and IT WOULD JUST FIGURE IT OUT! The responsibility for making it run fast was up to the OpenGL implementer, not the application writer. Now you cannot draw a single triangle without a month's worth of effort to implement matrix math, texture uploading, and material lighting from first principles. And then do it all over again on the next device because the stupid chipset vendor decided that they couldn't be bothered making simple color interpolation work fast (I'm looking at you ImgTech).
The problem is not handset fragmentation. The problem is that the OpenGL API provides no guarantees about what will actually work and work well. It's all thrown back onto the application and the chipset vendors can then brush off bugs in their design with "our examples work great - obviously you don't know how to write shaders".
It's time the application (not chipset) developer community smacked Khronos upside the head and made them specify a USEFUL rendering API that guarantees good performance for application-level tasks, and decertify chipset vendors who are too lazy to do their damn jobs.
Which is why they're making good money on the Apple market, right?
They don't come right out and say that, in fact it seems unlikely given their great concern over investing "a few thousand" in test hardware. Which seems like a dubious claim anyway, because it probably costs them little more than an email to get sample equipment from any given manufacturer. In fact, the whole story smacks of spintroll to me. After all, who except Apple cares about what a boutique game shop does not attempt?
Have you got your LWN subscription yet?
Which is why they're making good money on the Apple market, right?
Of course, other developers have had the opposite experience. For example, Angry Birds makes more money from Android than iOS:
http://news.softpedia.com/news/Angry-Birds-Makes-More-Money-from-the-Free-Android-Version-than-from-Paid-Ones-170596.shtml
While their business model may work fine on Apple market, sometimes it takes changes to make money in a different environment.
It's not Android that's unsustainable, it's their business model on Android that appears to be unsustainable.
I was about to ask if you were thinking of the TabHost bug where clearAllTabs() will randomly provoke a crash. But a quick DuckDuckGo search turned up a bunch of other mysterious bugs with the Android tab bits. My favorite was issue #12359 where the fix is a couple of lines, and it would be an easy fix were Google to not mark their classes as final (thus preventing you from subclassing them). Unfortunately the proper fix is to roll your own copies. The official Google response was to ignore the problem and tell everyone to stop using ActivityGroups (which are useful in tabs) and start using Fragments (introduced in Android 3.0).
Google applies their hands off approach to updates and support to both hardware (as evidenced by all the fairly new phones that don't ever get updates) and software. I'm pretty sure Google never fixed the broken widgets in Android 2.3, leaving developers to completely reinvent even rudimentary pieces of the Android framework.
QA in Android is a freaking mess, I'm not surprised that the Battleheart team gave up on it.
The revolution will be mocked
Yes IOS can be a nightmare. When an IOS update came out all of a sudden my code stopped working. I had checked the changes to IOS and nothing should have caused a problem. I was doing everything the "safe" documented apple way and it still blew up. I got a fix uploaded and then Apple had the app store shutdown for the holidays!!!! My update was uploaded to the store days before the shutdown but did they clear the backlog? Not a freaking chance they shut it down and we had to wait for weeks with upset customers.
See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
Battleheart's Google Play page indicates that it's been downloaded 50,000 - 100,000 times. It has an average rating of 4.7/5 stars, based on 5,374 user ratings, and the overwhelming majority of those reviews are 5-star reviews.
And if you sort reviews by latest, you can see that at least a couple dozen of those 1-star ratings were given today, in an apparent fit of "sour grapes" where users are giving the app a 1-star review with comments like, "The developer will no longer update this app. They stated that Android development is too hard for them and will no longer update their apps. Since when is objective C easier to write than java? Disgusting and Lazy!"
Yep, sounds like a poorly written, buggy piece of shit to me. I'm sure the developer is just lazy, incompetent, and shilling for Apple. It couldn't be that Android has legitimate shortcomings that Android device manufacturers could learn from to improve their platform.
So life is hard for developers, but in exchange the world gets a diversity of platforms and competition.
I don't. Nothing worse than a monopoly dictating the course of technology and allowing innovation to proceed only when they see fit.
The really disappointing thing is that it sold GREAT when the app was new, but while the dev continued updating the iOS app with all kinds of new levels and features, he chose to abandon the Android app and bitch and moan about the ecosystem rather than keeping the Android version on par with its iOS cousin.
Then he has the balls to wonder aloud why sales have dropped after that initial burst? Maybe if he'd updated the goddamn app anytime in the past eight months, it would have done a little better.