This is my second post in a series on gameplay usability. I've covered dual stick controls already, future posts will be about situational awareness and helping players win.
Accelerometer controls are not a big favorite with iOS gamers. Let's see how you can make your game better by examining one awesome and one less-than-awesome accelerometer-controlled game.
TILT TO LIVE
Tilt to Live is one of my favorite iOS games ever. In fact, it was I think during my ~53427th attempt at this game that I had an idea to add avoidance gameplay elements to Chopper Defense HD, which finally made the gameplay an order of magnitude more fun and intense. In Tilt to Live, you control an arrow in an arena filled with dots that always move in your direction, and there are always more and more of them appearing. You tilt your iPhone to avoid these deadly dots and pick up supercharged weapons.
Calibration presets – Calibration means changing the default device position at which nothing happens (in our case, the arrow rests in one place). In accelerometer-controlled games, it's a must. Tilt to Live goes one step further – it also has two calibration presets so that you don't have to calibrate it manually 99% of the time.
Sensitivity settings – The range of possible sensitivity values (i.e. how much you need to tilt your device) in Tilt to Live is very large and you can set X and Y sensitivities separately. Why the latter is important: iPhones are rectangular, not square, and to produce the same input (e.g. 10 degrees) requires that you move the edges of the device up/down by a larger distance in the X axis than in the Y axis, so you may feel that more tilting is required to move left/right than to move up/down.
Input filtering – Accelerometer data is not 100% precise, it follows a random distribution around the true values, so you should use a filter to smooth it. A simple low-pass filter should solve 80% of the problem. In Tilt to Live, the arrow always points in the direction it moves. Normally that would cause rotational jitter at low speeds even with moderate accelerometer input filtering, but the arrow always rotates smoothly even when it stays in one place because 1) it starts rotating only when it gains some minimum speed, 2) there's an additional low-pass filter on its rotation, 3) there's a hard limit on rotation speed.
No channel mixing – Accelerometer data shows you at what angle your device is relative to the floor. In games where you use only 2 axes, you want the accelerometer inputs to be relative to the screen surface, not the floor. This is trivial to code using simple trigonometry and z axis data. To be fair though, I have not seen any games use that.
No indication of max tilt – The main problem for me with tilting controls is that it's hard to understand if you've reached the maximum speed already or need to tilt more. As a gamer I usually work around this problem by setting near-maximum sensitivity, but game designers should really think on some visual indication of reaching maximum speed/tilt. The only time I've seen somewhat like that is in Chopper 2 where helicopter trails appear when it flies at max. speed.
FLY EFFECT REAL 3D
In Fly Effect Real 3D you fly your aircraft through steampunky 3D tunnels and rooms filled with obstacles. Despite nice art, this game is full of lessons of what not to do with regard to usability
Broken automatic-only calibration – In Fly Effect, Accelerometer controls are calibrated right before a game begins, so the way you hold your iPhone at that moment will become the fly-straight position. Reasonable idea, but terrible implementation: there are invisible limits to such calibration: it won't calibrate properly, for example, if you're holding your iPhone parallel to the floor – your aircraft will be heading down when the game starts. And there is no manual calibration option.
Blatant sensitivity bug – If you start the game holding your iPad in front of your face (near vertically), the aircraft will go down too eagerly and go up too slowly – the maximum up and down speeds are heavily unbalanced. No, this is not gravity – if you hold your iPad nearly horizontally the bug will reverse – slow falls, sharp rises. The problem goes away only if you hold your iPad in a typical 45-degrees position.
Dead zone? – Instead of properly filtering accelerometer input, left/right tilts smaller than some threshold angle are just ignored. This threshold is set way too high, and when it is reached the aircraft starts turning faster than expected. The real problem is that you don't know where in the dead zone you are and therefore how much you need to tilt to start turning. // Actually, I've played it yet again and I can't say it is exactly like I described, but something's definitely wrong with small left/right tilt handling and/or the aircraft's roll not corresponding properly to steering.
Non-aircraft controls – OK, I admit I've played too few casual iOS flying games and know too much about airplanes, but if your aircraft is rolled 90 degrees to the right and you pull up, it should go further right, not up. In Fly Effect, it goes up. The whole control system in Fly Effect is about moving your aircraft left/right/up/down, not about controlling its ailerons and elevators, and frankly I don't see the point of using accelerometer in that case – it does not add any magic to the flight.
Try different controls early in development. I mean, actually code them and ask yourself and alpha testers what they like more. Controls on such small devices heavily influence not only gameplay, but also game design – and these are the two most important components of a game.
Last but not least, it's obligatory to learn from others' mistakes. You should try as many games as you can (especially those that are free!) to find great gameplay/design/usability ideas and also see how not to fail. You should get Tilt to Live and Fly Effect (both have a free lite version), and if you're also interested in improving the usability of dual-stick controls, check out my previous post here or on chopperdefense.com/blog