This is the first post in a series on gameplay usability. Future posts will be about accelerometer controls, situational awareness and helping players win. Subscribe to my RSS feed not to miss these posts.

Virtual dual stick controls are a standard choice for top-down shooters in App Store. Left stick usually controls player character’s movement (speed vector), and right stick handles character’s shooting angle. Let’s examine the usability issues with this control scheme.

Indirection and channel mixing


In top-down shooters players want to do two things: get their character to some point, and shoot at some target. With dual sticks this involves a lot of mental processing. Given these two coordinates, you need to determine which speed vector you want your character to move at, and then you need to determine which angle to shoot at. That’s a rather inconvenient indirection even if we could assume that dual sticks were perfect for specifying these two variables. To make things worse, the angle at which you need to shoot a fixed target changes as your character moves, effectively making it a moving target. Apart from forcing players to perform continuous angle corrections as they move, this also limits gameplay possibilities (e.g fast shooting and moving becomes very hard).


In Chopper Defense, players hold an iPad in landscape mode and move their thumbs in bottom-left and bottom-right corners of the screen. There are no sticks, the left thumb moves the helicopter and the right thumb moves its attack cursor on the screen. They move the same way your fingers move, just at a larger scale (8.5x scale works best for full-screen iPad game imho), so if you want to move your chopper left by a bit, you move your finger left by a bit, and when the chopper reaches your desired point, it will rest there if you don’t move your finger any further, rather than go on and on in that direction.

Since you also control the cursor’s position directly, rather than via angle, where you shoot is independent of how you evade homing missiles, and you can do both very precisely at the same time. Note, however: controlling character’s position rather than speed vector works best when it moves fast enough not to create a huge gap between desired and actual position. Also, in Chopper Defense screen edges are the end of the world. In a bigger, scrollable world, my controls would need some modification. Here are Chopper Defense controls in action:

Attack angle confusion


Since the sticks are virtual, they don’t provide tactile feedback, so you don’t know your finger’s position relative to the stick’s center point. This is especially inconvenient for the shooting stick since you never know exactly how far and in what direction do you need to move your finger to start shooting at a desired angle (which is already your mental estimate based on the position of the target relative to your character). If you shoot slow projectiles rather than instantly appearing bullet rays, it is also hard to estimate your new attack angle after you rotate until your projectiles fly far enough for you to be able to estimate the new angle. Delays are never good in action games.


Within the dual sticks scheme, that issue can be partially mitigated by giving the player an attack cursor and locating it relatively to the player character the same way that the player’s finger is located relative to the center of the attack stick. It is not a perfect solution because players tend to try to put the cursor near the enemies, not merely in their direction, and it may not be possible if the enemies are far away. You could also give the player a weapon which does not need precise targeting, like bullet sprays or homing missiles, or make an option for aiming aid.

Another improvement that is surprisingly rarely used is to center control sticks on exactly the point the player first touched. That way if you get confused you can release your finger, then tap again and swipe in desired direction. Eases some pain.

One weapon only, or else…


With both hands on your sticks, how are you going to switch weapons without disrupting your movement or shooting? You probably have zombies chasing you after all. You could think of some interesting gameplay options like being able to select a weapon between every battle, or pick up a new weapon instead of your current one or as temporary upgrade. Or you could also detect taps on the back side of the iPad using accelerometer and microphone, but I’ve no idea how viable and App-Store approvable is that.

Instead, the standard switch UI, if there is any, is a virtual button. Its main disadvantage is immediately evident – you have to look at it to tap it for sure. And you have to actually stop shooting or moving for that fraction of a second.


Within the dual sticks framework, the best interface solution is to make the button large and within reach of the player’s finger near the attack stick. Also, make it so that the character stops shooting only ~200ms after the player releases their finger from attack stick, and don’t stop shooting for another ~200ms after the weapon switch button is tapped. That way shooting will not stop when switching weapons.

In Chopper Defense the second weapon is a blast cannon, which, unsurprisingly, blasts enemies around the cursor. It takes 2-4 seconds to reload, then the cursor lights up and you can blast again. Briefly release your left thumb from the screen and cursor will blast immediately. Your chopper will not stop moving, and when your left thumb touches the screen again, even if not exactly at the same point, your chopper will not twitch unexpectedly, it will continue to properly mimic your finger movement as if you didn’t release it at all.


Touch controls usually have poor usability, but a huge part of it comes from poor implementation. Take some time to address common usability issues, think beyond standard control schemes – and you’ll make totally comfortable controls. Don’t forget to playtest several alternative control schemes early in development since controls do influence gameplay and game design on small devices.

Subscribe to my RSS feed not to miss future posts!