Daily news, dev blogs, and stories from Game Developer straight to your inbox
Featured Blog | This community-written post highlights the best of what the game industry has to offer. Read more like it on the Game Developer Blogs.
The Absolute Basics of Good Gyro Controls
There's no question about it: a controller's gyroscope offers far more precision than a thumbstick for aiming. But without adhering to some very simple standards, most games fall far short of what's possible.
March 30, 2021
17 Min Read
A game is only as good as its controls. And when it comes to precise aiming in shooters, gyro aiming (where the whole controller is treated as a frictionless air mouse) is both easier to learn for new players and gives competitive players more room to excel than thumbstick aiming alone. So, naturally, you want your game to have really good gyro controls.
Gyro gaming community member Augur doing an aiming exercise in Aim Lab using Steam's gyro support for PlayStation's DualSense controller
Implementing good gyro controls is both hard and easy. We know it's hard because games that already do offer gyro controls are very inconsistent in what options they provide. They haven't "figured it out". But once you know what to do, the basic rules found here are easy to understand and easy to implement. They'll appear obvious to you once you know them.
And isn't that so often the way with good game design solutions? The best solutions look so easy and obvious once you've found them, even if they eluded you for the longest time. So the hard part is done. Here's the easy part -- how to implement good gyro controls.
This advice has been thoroughly tested on PC over the years by a growing community of players using a variety of input remappers to force better controls into games. Even though they're using standard console controllers, they're enjoying much more reliable, precise, and predictable gyro aiming with these tools than in any console game.
I first shared these rules in May 2019, titled Good Gyro Controls Part 1. Since then, this advice has only been confirmed as more and more players tested them. But that's a much longer article, explaining far more advanced options in great depth. What follows here is, for your convenience, a summary of the basics. Read the full article for more.
If you're making games on any platform except Xbox -- the only platform that doesn't have a gyroscope in the controller -- then this article is for you.
One Core Principle
The gyro is a mouse.
As soon as we talk about gyro or motion controls, we expect fancy sensor fusion solutions, where a gravity vector obtained from the accelerometer is combined with local angular velocity obtained from the gyro, calibrated automatically to counter any bias, and converted to an orientation. But we're not interested in that here. It's imprecise -- a compromise between two disagreeing sensors -- and irrelevant. We don't care about the controller's orientation any more than we care where a mouse is on the mousepad. We only care about its moment-to-moment movement. We only care about using the gyro as a mouse.
(EDIT July 1st, 2021: There are advantages to fancy sensor fusion solutions for using gyro as a mouse, but they need to be weighed up against their difficulty in implementation and their imprecision. See this article on GyroWiki for a new way to get the best of both worlds -- simple, error-free "player space" gyro controls.)
Like a mouse, a gyro gives players direct and immediate control over something in the game, like they're reaching in and moving the camera or cursor themselves. Yes, the gyro gives angular velocity, while the mouse gives displacement. But we can convert velocity to displacement easily (displacement = velocity * time), and that's basically it! Then just use local pitch displacement how you'd use the mouse's vertical displacement; use local yaw displacement how you'd use the mouse's horizontal displacement. Multiply by sensitivity. Done. Because some players hold their controllers differently, let them choose between yaw and roll for the horizontal axis, with yaw being the default. Or be like Overwatch on Switch and let players use both axes at the same time. Simple!
Rhythm game osu! is virtually unplayable with thumbsticks, but a lot of fun with gyro controls. This example uses JoyShockMapper to get gyro input from a PlayStation DualShock 4
And since the gyro is a mouse, any game that plays better with mouse should make use of the gyro. This is how we know what games would benefit from gyro. Everything from character selection in a fighting game (ever noticed how clunky it is to move a cursor with a thumbstick in Smash Bros?), to full control of point-and-click games, even real-time strategies! But our focus here will be the kinds of games that give us direct camera control: shooters like Overwatch, Fortnite, DOOM Eternal, Apex Legends, Call of Duty, and Battlefield; and third person action games like Metal Gear Solid, Tomb Raider, Uncharted, and Horizon. These games all obviously benefit from mouse when it's available. But none of them use the gyro on PS4 and PS5, even if they do on Switch. Weird, right?
Remember that the Switch isn't exceptional for having gyro controls; the Xbox is exceptional for lacking them.
Finally, since the gyro is a mouse, we know how important it is not to force any weird filters onto players. If a game has forced acceleration, forced deadzone, forced smoothing, or any other kind of filtering that the player can't turn off, its gyro aiming is bad. Just like it'd be bad to force these things on mouse aiming. We can provide these options, but they must be optional, and they should probably be off by default.
With that in mind, let's look at three general rules for making sure your gyro aiming lets players do what they need to do.
Three General Rules
1. Sensitivity - Range, Resolution, and Scale
Like with mouse and stick sensitivity, gyro sensitivity is what lets the user control how fast the camera will turn compared to how strong their input is. For the most part, mouse sensitivity and stick sensitivity numbers don't mean anything intuitive to players, and there's not much that can be done about that. The scale is arbitrary, and developers will often choose what looks nice (although there's something of a "standard" mouse scale that's shared by Id, Valve, Respawn, 343, and more by convention).
It's different with gyro aiming. With gyro aiming, unless you're moving a cursor across the screen in a 2D game, you're usually turning the camera by turning the controller. And so there really is one correct scale here, and we call it the natural sensitivity scale. A sensitivity of '1' means if you turn your controller X degrees, the camera will turn X degrees. It's one-to-one. A sensitivity of '2' means the camera will turn twice as far as the player turns the controller, and so on. Simple, right?
Here are three reasons to use this scale:
It's intuitive to the player. With a little explanation, the player now knows exactly what the number on the screen means.
It's transferable between games. This is the scale. You don't have to have read this article to figure out that this is the scale you should use. And so players should be able to expect to see this same scale around the place and to be able to re-use their settings across games.
Players are already using it. The open source input remapper JoyShockMapper lets players use the same settings across different games by using this scale. Even gyro enthusiasts who use other input remappers (such as Steam) compare sensitivity with each other by first figuring out what it is on the natural scale.
Now, what number we show to users isn't that big a deal, right? I really do think you should use this scale, but even if you don't, it's only an inconvenience. Players will take longer to figure out the settings they want, but once they do, the game will still feel the same. But I want you to understand the sensitivity scale we're using when we talk about something far more important: range and resolution.
Range is just how high and low the scale should go. It is imperative that you get this right. If your range doesn't include the sensitivity a player is most comfortable with, they're not going to have a very good experience with your controls.
There are games out there where the top end of the slider has a big ol' 10 on it, but it only means a natural sensitivity of 1. This is not nearly high enough.
So here are some real-life numbers for you. In the gyro gaming community, a lot of the best players are playing with a sensitivity of 4-5. A few are pushing 6. At the top end I've seen a player who likes 13 (!?), although that's their upper limit with acceleration (remember, if you're going to have acceleration, make it optional). I don't think we need to offer quite that high without acceleration, and acceleration options can increase the cap in different ways. I think your scale should at least go up to 10 (natural).
The best example I've seen in the wild was Rogue Company's settings during the Beta, which used the natural sensitivity scale (yay!) and offered up to 10 on that scale. It's a nice round number, and it should be enough for everyone. However, the setting could only be changed in increments of 0.5, which was too coarse for players at the low end -- many players who like to rely more on stick aiming will prefer a gyro sensitivity of 1 or lower. Their scale didn't offer enough resolution at the low end.
The devs at Hi-Rez "fixed" this by making their gyro sensitivity scale exponential. The numbers themselves are no longer meaningful on their own, their relationship to each other is even less intuitive now ('2' isn't twice as sensitive as '1'). But at least players have more resolution at the low end. They've got some good stuff going on -- separate horizontal and vertical sensitivities, different settings for different aim modes -- but there's no reason Rogue Company and every other shooter with gyro controls can't also offer a wide range, a fine resolution, and the natural scale.
If you're looking for something you can just plug into your game, let's say:
Resolution: increments of 0.1
2. Gyro Off Button
The gyro is a mouse. A mouse is only useful in clear desk space or on a mousepad. Once you get to the edge, if you want to keep moving or turning in that direction you'll have to pick the mouse up and put it down in a better position on the mousepad. The gyro is the same. It's only useful as long as you don't have to twist uncomfortably far to use it. Once you do, you'll want to disable the gyro (like picking up the mouse) and move the controller to a more comfortable position without messing up your aim.
A gyro off button is essential to good gyro controls. Some games kinda sorta have a gyro off button by virtue of having a dedicated aim button. Zelda Breath of the Wild, for example, only activates the gyro when aiming your bow or throwable weapon, and doesn't let you fire or throw a weapon without aiming first. Job done! It doesn't need any other way to disable the gyro.
But most games that let the player use the gyro at all times do not offer a way to disable the gyro. Imagine you've turned your controller and your camera to face where you want to face in-game. Now you want to reposition your controller while still looking in the same in-game direction. What do you do? In most games, you have to reposition your controller (messing up your aim) and then correct your aim with the right stick. Maybe you'll try do both at the same time. But it's most definitely a really janky and clunky way to play. It doesn't need to be this way. Just give the player the option of a gyro off button.
Of course, games usually already use up all the buttons on the controller. There's no room for any more. What can you do? Here are some options:
Every game can offer the option for the right stick to disable gyro. If the right stick is out of its deadzone, ignore gyro input. This means the player can relatively easily reposition their controller while directly controlling the camera with the stick. I was pleased to see Overwatch for Switch do this, and more games have done it since. I strongly recommend that all games offer this option, but most experienced players will want to use gyro and stick at the same time, so please explore the following options, too;
Offer the option to have a button double as a gyro off button when held. For example, most games have a crouch button. Using an input remapper, I usually have a short tap of the crouch button toggle crouching. Holding the crouch button disables the gyro. Of course, I don't wait for the press to be long before disabling the gyro -- that'd make disabling the gyro laggy. The gyro is just disabled as long as the button is pressed. This is virtually unnoticeable with a short tap when toggling crouching, but it means disabling the gyro is always responsive;
Offer players full freedom to customise their controls, and include "disable gyro" as an option they can select.
One thing I occasionally see is a "gyro reset" or "camera reset" option. This seems to be inspired by Splatoon, which has a button for resetting the camera vertically since the right stick would only work in the horizontal axis. But a camera reset option is not only more work for you to implement, but also strictly less useful to the player.
Remember how clunky it is having to fix our camera position with the stick after fixing our controller position without disabling the gyro? A camera reset button doesn't solve this problem horizontally, and only solves this problem vertically when the player wants to look at the horizon and already has their controller in a good position. It's far less useful than a gyro off button.
So, with apologies to Hi-Rez (honestly, huge respect for actually putting gyro controls in their PlayStation games!) Rogue Company provides another example of not quite getting this right. This game provides the option to only have gyro on when aiming down sights (yay!), although hip-fire is important enough in this game that many players will not use this option -- it won't satisfy our need for a "gyro off" button. It does let you remap your controls (yay!) and even lets the player set a "gyro reset" button if they want! This is almost an example of that third point above, except it's for "gyro reset" instead of "gyro off". Now, I'm certainly not asking anyone to remove that option. But since that option is there, they're one very small step away from providing an optional gyro off button, too.
Remember: easier to implement; more useful to the player. That's the dream, right?
And as a bonus specific to this game, you know how most third person games have the camera sit over one shoulder? Rogue Company has a dedicated "toggle shoulder" button. This is the perfect button to double as a gyro off button. When I play using an input remapper, I mostly use the default layout but have the "toggle shoulder" button disable the gyro while held. I only have it swap shoulders on a short press. It's very easy to pick up, and fills the biggest hole in the options already provided by Rogue Company.
3. Manual Calibration
The one problem with gyros found in controllers is that they don't always know what 'zero' is. A gyro has an internal bias that can change gradually over time. This is normally not a problem in console games -- players will quickly realise the gyro is automatically calibrated when the game or console detects that the controller is being held still enough for long enough. This is great default behaviour, and is ubiquitous enough that it's probably provided by platforms or widely spread tools.
However, automatic calibration will get it wrong. Definitely. It happens all the time in live games and players complain about it frequently. The software just cannot tell the difference between the controller being held still or the controller turning horizontally at a near-constant angular velocity. The result is that if you are tracking a slow moving target with your aimer, the camera may suddenly stop turning. The game or the console has been tricked into thinking the controller was held still, and it has automatically recalibrated. Now, when you actually stop turning your controller, the camera begins to turn in the opposite direction. After a second or two, it again detects that the controller is being held still and corrects itself.
As a player, this sucks. And it's usually totally unnecessary. We know from the success of the Wii that players don't mind a bit of calibration up front (though it's of a different kind, it's a similar degree of inconvenience). And we know from using input remappers that allow players to manually calibrate their controllers that automatic calibration is often doing more harm than good. Some controllers appear to need recalibration regularly, but most can be calibrated once or twice a play session.
Aiming with a manually calibrated gyro feels fantastic. The camera responds to your input with delightful precision. Gyro gamers on PC know this already. Players on all platforms should be given the option to manually calibrate and enjoy this themselves.
Now, even the Switch version of World of Goo, which does prompt the player to manually calibrate their gyro, suffers from this automatic calibration problem. So it may well be the case that the platform you're on doesn't give you the option to disable automatic calibration. But please take away these considerations:
If the automatic calibration is configurable, please expose that to the players;
If you are able to access raw gyro, please provide a manual calibration option.
Manual calibration is super easy: just ask the player to put the controller down for a sec, remember that average angular velocity, and subtract it from the raw uncalibrated gyro data. Done.
Getting More Advanced
So those were the basics. Depending on the platform you're on, you should be able to manage at least 2 out of 3. Having done those and those alone, you've raised the bar! You now offer the best gyro controls in any game.
But maybe you have concerns -- The gyro input is noisy! The player's hands are shaky! Maybe you have more options you want to explore -- Why don't we just put a little deadzone in there? Wouldn't some acceleration help? What about some nice smoothing?
It's worth exploring solutions to these problems. But I guarantee you should not force the player to use any solution you come up with. Make it optional. If you put in a deadzone, acceleration, smoothing, or anything because you've found it to help some players, you have most definitely made it worse for others. So these things must be optional -- and independent of each other.
And before you explore implementing these things yourself, there's more reading you can do right here. The original article from a couple years ago from which I've extracted these basics also details advanced options you could provide. How about acceleration settings that actually make sense to the player? What about smoothing that doesn't feel laggy? Or an alternative to deadzones that usually feels much better? Like the basics, these have already been proven by their implementation in JoyShockMapper -- an open source input remapper that I created, though is now being developed by someone else. It is widely used for its comprehensive gyro settings and serves to prove the advice given here and in the full article on GyroWiki.
I'm Jibb Smart, game developer, input specialist, creator of GyroWiki and flick stick, original creator of JoyShockMapper, and one of many players who actually plays almost exclusively with gyro controls. Thanks for reading! I'd love to answer your questions if you have any.
(EDIT July 1st, 2021: With Boomerang X coming out next week and being the first game I've played to meet these standards, the bar has finally been raised. Check it out!)
Read more about:Featured Blogs
You May Also Like
Accessibility and fancy footwork with GLYDR's John Warren - Game Developer Podcast ep. 40Feb 28, 2024
Exploring the 2024 State of the Game Industry report - Game Developer Podcast ep. 39Feb 2, 2024
Phantom inspiration and the ethical auteur with Xalavier Nelson Jr.Dec 8, 2023
Designing Killer Queen: from playground experiment to modern arcade sensationOct 18, 2023
Get daily news, dev blogs, and stories from Game Developer straight to your inbox
Subscribe to Game Developer Newsletters to stay caught up with the latest news, design insights, marketing tips, and more