We get lots of mail from players, almost all nice, mostly requests for multiplayer (we know, we’re working on it)! On the rare occasion someone complains you can bet it’s to report a disappearing bat. In the midst of a tense rally the bat can disappear from view, not to return until the player releases their finger then reconnects with the screen. By which point the devious AI has smashed the ball and our player feels cheated of the point they would, of course, have otherwise won.
Fix it then stupid!
Needless to say we wanted to fix this bug, but at first we couldn’t even reproduce it. After chatting with a few helpful players we discovered it only occurred when their finger left the lit area of the screen and entered the iPad’s border. Now we could sometimes reproduce it, but to fix a bug we need 100% consistency.
Long story short, the bug only occurs in the following situation:
- the iPad is landscape
- the Home button is on the LEFT, the camera on the RIGHT
- the finger is dragged onto the RIGHT border
In such a scenario, when the finger is dragged back onto the lit screen area the bat does not reappear. If the finger was dragged the opposite way onto the LEFT border then back to the lit area the bat would reappear. That’s a bit odd, but we assumed that the border on the iPad’s camera side had some different characteristics from the Home button side. But…
If you rotate the iPad so the offending camera border is now on the LEFT, both borders behave perfectly. WTF!
To ensure you’re still with me I’ll summarise: the iPad behaves perfectly with the camera on the left, but rotate it the other way and one side is broken! And this happens on every iPad we’ve tested.
How did you mess things up so royally?
Given such an odd scenario we naturally assumed we’d got a dodgy if statement or two. We started logging at the lowest level in Unity but in the problem scenario, we never receive a message indicating the player’s finger had reconnected with the screen. So it wasn’t us!
We promptly submitted a bug report to Unity. We then tried playing a few other games with a similar mechanic to Table Tennis Touch and they exhibited the same problem, even games we’re fairly certain aren’t built with Unity. So the problem must be lower still.
Being the diligent developers that we are, we created the simplest reproduction case we could manage in Cocoa Touch and submitted it to Apple (18130890) for their consideration. This is our first bug report to the big A so we’ve no idea what happens next. Hopefully they’ll fix different.
Is there anything else you could have done?
Given the problems this is causing our players (and in turn our game’s rating) we’re super keen to resolve it, even if only by way of an interim fix. We considered locking the iPad’s rotation to the safe orientation but you can almost hear the complaints being typed. We considered a warning message for those playing in the problem orientation, encouraging them to rotate if they experience the disappearing bat, but that just felt messy and intrusive. None of our many proposals was tidy so in the end we decided to wait for Apple to advise on a workaround or to schedule a fix. Not ideal but when faced with what appears to be an OS-level issue, there aren’t many options available.
How can I avoid the problem?
There are two really easy ways to avoid the problem:
Play with the iPad rotated so that the Home button is on the right. This simple solution fixes the problem in 100% of the cases for which we’ve had feedback. It also serves to highlight how odd the problem is.
Play with the iPad in whatever rotation you like, but make smaller, more focused finger swipes, keeping your finger inside the lit screen area. For some, this may be easier said than done. In tests we’ve seen some crazy swiping action and our good friend Mikey Mike over at Hotdogleg knew he’d seen someone playing TTT on the train by their crazy gesturing and disgruntled neighbour. But all these big swipes are unnecessary. The game is smart enough to detect fast movements from the briefest of swipes. So play like a pro, swipe small.