What’s the problem?
We can be playing along, winning the game nicely at 60fps then Bang! it will just die, throwing us out of the game. The problem appears to be a memory corruption, one that produces an impossible path through the code.
For example: A calls B calls C calls Xylophone. Xylophone is a perfectly valid function, just not in the sequence A-B-C-D!
Can you fix it?
Ordinarily, bugs are identified and fixed. If we can’t fix them we do the next best thing, we work around them. So long as the player has an excellent experience, we’re happy. But in this situation we can’t guarantee which lines of code will run so therefore we can’t fix it and we can’t work around it. It’s like giving a painter a Teflon canvas; you can’t predict the result, but it’s certain to be messy.
Seems like you’re blaming the engine
We are! And with good reason: much of our Android codebase is shared with our rock solid iOS release so it’s been proven out in the wild for many months now. And the problem doesn’t appear on older Android devices so it’s not poor porting on our part. It’s just for a few devices the engine goes nuts and runs the wrong code!
We’re working with the engine manufacturers to find a solution to the problem. In the meantime our Android release is on hold. We’re not happy with the situation (#understatement) but we only have two alternatives: to blacklist all affected (flagship) devices or to let a large proportion of our players have an unpredictable experience. Neither of these options are acceptable so, sadly, we just have to hold out for a fix.
As I mentioned earlier, we’re code complete so as soon as this underlying issue is fixed we can start shipping our Android release to the stores but until then, we just have to sit tight.