"Battleheart" developer quits Android
mikamobile.blogspot.com
mikamobile.blogspot.com
I completely support your decision to drop Android like a hot potato.
In the two weeks since starting as a senior graphics engineer at a middleware company who shall remain nameless, I have learned from coworkers about, or personally experienced:
- Drivers that crash if you try to actually use all of the texture formats they claim to support - Drivers that crash if you try to actually use certain ARBs that they report as supported - Drivers that report supporting 128 shader uniforms but crash if you try to access anything past the first 64 - Drivers that report supporting various OpenGL ARBs but actually have a software path
in fact, I don't believe there has been a single Android device that has come out so far that is actually point-for-point compliant with the requirements for OpenGL ES 2.0, yet they have no problems claiming to support it nowadays.
GPU support on Android is utterly atrocious, and I've managed to learn this in all of two weeks at my new job.
As someone that's on the verge of porting some 3D code to OpenGL ES 2.0, this is awfully depressing. :(
The problem with this discussion -- it is ostensibly an iOS versus Android discussion, as if developers have the luxury of just developing for iOS and the market will follow (hint: ha! Android made most of its gains when there little to no apps for it. Apps like Netflix and others followed but didn't lead. Now you could fill your day trying out new games and apps) -- is that there are a lot of very, very strongly biased individuals and parties, and the discussion gets completely crowded out by what often ends up being bullshit (though it takes a lot of legwork and endless excluding to actually discern that). What I like to see are specifics, but they are shockingly hard to come by. Lots of vagaries and second-hand accounts of profound all-encompassing difficulties, but never specifics that could be vetted, if only to offer a fix or different approach.
In this case of the linked story the vendors used Unity 3D -- why they were even writing specific shaders (double shocking given that their top-down sprite graphics, if I am understanding their apps right, are the most bog standard shaders going) is a mystery.
And then you have game systems that I actually consider more 'middleware', like Speedtree, Bink, etc. Those systems also need to have in-depth understandings of the target environments to optimize their output as best they can.
> why is that comment either a) at all credible
First off - rather than address the content of the original commenter I quoted, the first thing you do is go after his credibility. An ad hominem attack, right off the bat?
I don't know the poster. I don't know you either - initially, you're both equally credible to him. But he at least talked the talk - all the things he said made complete sense in the context of someone working cross-device with GL. They dove-tail in a technical manner with the more abstract high-level picture being painted.
Could he be bullshitting? Of course. But the only folks who benefit from pseudo-anonymously posting bullshit are griefers and fanboys. And since the level of technical discussion exceeds what most griefers and fanboys are capable of, I'm giving him the benefit of the doubt.
Do I want to believe him? Hell no. But do I believe him? Yes.
> or b) informative
What? He EXPLICITLY STATES some of the very specific technical problems he's encountered. Problems that a 3rd party can verify for themselves to trivially determine the veracity of his statements. The issues he mentions, assuming they're real, are major technical hurdles for multi-device development. And now I know to look for them if-and-when I start hitting issues. Drivers and APIs lying are a huge deal. And, unfortunately, entirely too common when doing graphics work.
So I have to ask - what, exactly, is the criteria you're using to judge "informative"?
> The problem with this discussion -- it is ostensibly an iOS versus Android discussion
Like fuck it is. I generally try to keep a civil tongue, but that sort of platform apologism is an insult to every Android developer. Framing it as iOS vs Android debate? iOS is a red-herring. IF iOS DIDN'T EXIST, THIS PROBLEM DOESN'T GO AWAY - developers would still be hitting these pain points.
It looks like Android has a problem, and acknowledging it is the first step in correcting it. Pissy GL drivers exist - as anyone who touched a linux box in the Bad Old Days is probably entirely too aware.
> as if developers have the luxury of just developing for iOS and the market will follow (hint: ha! Android made most of its gains when there little to no apps for it. Apps like Netflix and others followed but didn't lead. Now you could fill your day trying out new games and apps)
WTH? How is this even related to the comment I quoted? But I'll bite - Battleheart's developer confirms that they has the luxury of just developing for iOS. And by making this cut, they're signalling they no longer care if the Android market follows him. Just like anyone can author a game in DirectX that just targets Windows can comfortably ignore OS X and still be profitable. It's sad, but a developer has to be pragmatic if they want the to survive long enough to release the next product.
And if you really want to be pedantic - the iPhone made all it's initial gain when there were no apps for it. Remember, on release the iPhone did not have a native market. Developers and users had to cajole Apple into it. But hey, now iPhone users can "fill [their] day trying out new games and apps". I'm not sure what the hell this has to do with anything, though.
> there are a lot of very, very strongly biased individuals and parties, and the discussion gets completely crowded out by what often ends up being bullshit (though it takes a lot of legwork and endless excluding to actually discern that). What I like to see are specifics, but they are shockingly hard to come by.
HOLY FUCK. This quote calls out BROKEN APIS YOU CAN EXPERIMENT WITH RIGHT NOW. The base discussion itself flows out of a developer expressing why he's leaving the platform, with specific reasons stated. There is NOTHING here that can't be verified. And I don't know where the fuck you get off characterizing a studio that's spending time and money desperately trying to support a platform to share their work with as many people as they can (which is why most indie game devs I know do this) as "strongly biased individuals and parties" against Android.
> In this case of the linked story the vendors used Unity 3D -- why they were even writing specific shaders (double shocking given that their top-down sprite graphics, if I am understanding their apps right, are the most bog standard shaders going) is a mystery.
And now you're attacking the developer's competence. :/ Let me twist your statement around - only an incompetent developer wouldn't use fragment shaders. They're a great way of providing compelling visual effects without incurring a substantial performance hit. By using more than just "bog standard shaders", the creators of Battleheart are demonstrating they're trying incredibly hard to create a satisfying experience for their end user - a step up from your cookie-cutter game developers.
Now, getting back to the actual topic - what are some short-term solutions to this problem? The only thing I can think of is a bunch of developers banding together and creating a "reference application" that thoroughly exercises the API on a device (sort of an android-esque Futuremark). And if a device fails to pass "certification", developers right-off supporting that hardware. It'd be great if a company with clout like Rovio pushed this, for example.
A longer term fix would be if Android started incorporating something akin to the Windows Experience Index. As the platform grows, I fully suspect Android will have to include something like this to help developers sanely handle the growing performance gap between devices.
Does anyone know if Google does any driver certification?
And a completely unrelated question - huggyface, may I ask who you are? You've got a karma that doesn't match your listed contributions (A 60-day-old account with 12 comments, no submissions, and over 420 karma), which has me terribly curious.
What a glorious way to lead into an equally valuable comment.
First off - rather than address the content of the original commenter I quoted, the first thing you do is go after his credibility.
Unsupported, undetailed, unsubstantiated claims by an unknown person working doing who knows what at an unknown company. HEY EVERYBODY WE'VE GOT AN EXPERT HERE! See if someone says "a product claims that it has 128 shader uniforms but it really only supports 64", name and shame it! Why are these details always so astonishingly vague?
Battleheart's developer confirms that they has the luxury of just developing for iOS. And by making this cut, they're signalling they no longer care if the Android market follows him.
They strangely have yet to either withdraw their products from the Android market (which ultimately they should be forced to), or even make a comment to prospective buyers. But they have very loudly pandered to the Apple audience (this story has appeared on every single Apple blog and news site), eliciting sales in the Apple sphere by essentially going after the illusory foe.
This quote calls out BROKEN APIS YOU CAN EXPERIMENT WITH RIGHT NOW.
Where? What?
Come on. Now you're just pretending to be willfully ignorant.
"We spent about 20% of our total man-hours last year dealing with Android in one way or another - porting, platform specific bug fixes, customer service, etc. 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. We spent thousands on various test hardware."
I think we could get an economy of scale if someone who enjoyed this kind of work would supply a useful platform for game devs.
Yeah, in my opinion this is where Google would want to step in and provide a little grease to get things moving. In the form of some kind of library I think. It was Google's choice to allow diversity, and I can see how it would require some gardening and / or curation on their part.
Still, Unity is cross-platform and maybe don't yet see themselves going this deep in one platform - so it's an indication that a middleware layer could be successful on Android.
I'm not asking for huge banners or marquee scrolling, just a plain simple text link on first mention.
I think if there was some sort of standardised tier system for categorizing hardware capabilities (e.g. tier 1 = basic, tier 2 = supports 3d, tier 3 = quad core powerhouse), it would help immensely.
"There's a big difference between generating revenue, and "making money" - It's not that they haven't generated income, but that income is offset by the additional support costs the platform has demanded. Where did your dollar go? We spent about 20% of our total man-hours last year dealing with Android in one way or another - porting, platform specific bug fixes, customer service, etc.[...] We spent thousands on various test hardware. These are the unsung necessities of offering our apps on Android. Meanwhile, Android sales amounted to around 5% of our revenue for the year, and continues to shrink. Needless to say, this ratio is unsustainable."
This is a major problem (that actually encompasses several problems often mentioned with Android) that countless developers face, and that will not be addressed anytime soon.
While fragmentation is to be expected because of the nature of Android, the revenue issue is one that is completely on Google, and by far the bigger issue. Ease of paying, ways of paying, ways of promoting your app (namely gifting), all of these things are just poor on the platform, and that's why the taste is bitter in the end. Fragmentation is something that developers can work around, while people having no way to pay for apps is completely out of developer's hands.
(Not to mention the amount of markets where you can only publish free apps.)
End of rant.
Why? I would argue that it speaks to an audience's bias.
I think the most interesting thing about this company is that their games are, by most respects, quite successful on the Android market. A $3.00 game selling more than 50,000 copies. Another selling 100,000+. Another selling 100,000+. Perhaps they got all of their sales during a sale, but their base metrics seem quite good.
I can't speak to their situation or frustration, but will make a couple of remarks for prospective Android devs-
a) Cut out the crap: Don't desperately try to reach 100% of the Android base because that just sets you up for a world of pain, which I suspect is their core issue. Cut out low-end handsets, with the basest filter being Gingerbread+ at this point.
b) There are actually only a handful of GPUs in use across all of the different devices (Adreno, PowerVR, Tegra2/3, Mali). Understand the GPUs, not the handsets.
c) If you can't handle the work, which apparently this company couldn't, subcontract. They apparently had a successful product but they couldn't tolerate the work involved. I guarantee that if they offered it out for profit sharing to a contractor they would have many well-rated prospects.
It does say something about what some mobile devs have come to expect from a development experience. While IOS is never mentioned once in the post, the comparison is implied in every paragraph. While this is far from damning for Android, it's worth keeping in mind as competition for developer mindshare escalates.
I think the general case has already been made: there have been various complaints about supporting Android (varied hardware platform making testing/support more cumbersome, unreliable hardware/firmware causing problems the developer has to work around (and worse gets blamed for), the number of low quality devices available (which feeds into that previous point), and that is before considering problems some devs have had with the marketplace away from hardware/firmware concerns).
A lot of people have written this off as just grumbling and suggesting the people either cope with it or move on. While this story can't be taken as a general case, it is an indication that the problems might be as bad as some say: i.e. bad enough to make the platform not commercially viable to support for some. If this is not a one-off, and the issue can not be addressed quickly, it could mean significant trouble for Android long-term as after-market apps is a significant driver for sales.