News and research
Gyro ratcheting and flick stick
6 March 2023
8 March 2023 (amends and corrections)
Introduction and disclaimer
This blog entry is an answer to the frequently asked questions about using flick stick on the Alpakka. We wrote this as a consolidation of many things we learnt while researching gyroscope-based controls, and it is a mix of data, rationales, and thoughts.
This topic can be sensitive and we do not wish to be confrontational, for that reason the entry is titled ratcheting AND flick stick and not ratcheting VS flick stick.
History of gyro aiming
Using angular rate sensors (also known as gyroscope, or simply gyro) as a method for camera control in videogames is relatively new. Some commercial controllers included an IMU (Inertial Measurement Unit) sensor, those were never intended as primary input method for camera control, but mostly to enable new alternative "experiences", such as for example, playing golf swinging the controller.
It was up to gyro enthusiasts to start trying new ways to use the gyro on their controllers, sometimes by using custom mapping based on 3rd party PC software, or even by coding custom firmware for their proprietary controllers.
The first approaches, first generation of gyro aiming , were as simple as using the secondary thumbstick as a standard camera control (relative turn rate) while employing the gyro for fine camera control (for example adjusting the last milli-degrees necessary for landing a headshot in a shooter). These IMU sensors were not very accurate, so they had to be configured with a very low sensitivity, so big movements translated into small in-game camera turns. One of these first implementations was Uncharted: Golden Abyss (2011) in PlayStation Vita.
Then later, the second generation of gyro aiming evolved into two parallel solutions: ratcheting and flick stick, these try to solve the lack of gyro accuracy in different ways:
(on generic controllers)
|Large turns||Gyro tuned with high sensitivity|
Thumbstick perimeter mapping
Gyro with lot of filtering
(smoothing and acceleration)
|Gyro tuned with low sensitivity|
Ratcheting refers to a usage situation, where the gyro is used as the only method of camera control, so the thumbstick is not used for camera control anymore. This approach requires a solution to engage and disengage the gyro, for re-centering purposes, similar to re-centering a mouse (the mouse can be lifted and re-centered while "disengaged").
But when people started experimenting with this approach, due to the limitations of current gyros, it was obvious that some tradeoffs had to be made: a low sensitivity allowed for fine aiming, but made doing large turns very difficult; on the contrary a higher sensitivity allowed for big turns, but made fine aiming very noisy and unreliable. This latest approach combined with a lot of post-processing (smoothing and acceleration) was the state-of-the-art solution for gyro ratcheting for some time.
- Single method of input, shallower learning curve.
- Encourages the building of muscle memory for large movements.
- Mostly equivalent to using a mouse.
- It requires less complex movements on the thumb finger.
- Full range of motion requires a high sensitivity.
- High sensitivity requires higher gyro performance, or significant post-processing.
- Requires a higher range of motion in the hands and/or wrists.
- Requires setting in-game sensitivity within an acceptable range (1:3 to 1:5).
Flick stick is an evolution of the thumbstick+gyro parallel method, so there is still two parallel methods to control the camera, but now the thumbstick is used in a more clever way. Instead of the classic relative turn-rate control, the thumbstick external perimeter is mapped 1:1 to control the in-game horizontal axis. So for example pushing down (180°) on the thumbstick, the in-game camera also turns 180°.
This is a clear improvement in many scenarios, as it can be used as a fast-turn shortcut in any approximate desired angle, or can be used as a more traditional turn control by swipping the thumbstick along the perimeter, though the much higher 1:1 sensitivity makes it less accurate for this purpose.
- Does not require a high performance gyro sensor.
- It allows for fast turns compared with traditional thumbstick-camera controls.
- Parallel input method, steeper learning curve.
- Only suitable for a single axis (X-axis), so not good for general mouse emulation, or 6DOF games.
- It requires more complex finger/hands movements to perform the same actions.
- Requires a careful manual setup to set the in-game sensitivity to 1:1 ratio.
- Due to the super-high sensitivity / low-resolution required on the thumbstick, flick stick method is not very good for long distance flicks based on muscle memory (See table below).
Translation-to-rotation resolution table
Analysis of the theoretical resolution of different devices while performing large movements, as for example, long distance flick shots.
* Assuming perfect mouse optics, perfect gyro sensors, and perfect thumbstick potentiometers.
|Device details||Mouse on Logitech G240 mat|
(40mm safe zone on the borders)
|Alpakka center-to-handle, -60° to 60° turn||DualShock 4 thumbstick 360° perimeter|
|Max travel X-axis||260 millimeters|
(81mm * 2π) * (120°/360°)
(7.5mm * 2π)
X-axis on 360°
(lower is better)
|1.386 degrees per millimeter||2.117 degrees per millimeter||7.639 degrees per millimeter|
Parallel input methods
"Parallel Input" refers to a situation where two different control surfaces are assigned to the same in-game action, this is not very common for games, but most people may be familiar with something similar: connecting a mouse to a laptop, so both the mouse and the laptop trackpad are able to control the mouse in parallel (at the same time).
We could argue that the body itself, and the way multiple muscles are used at the same time to perform a single action, could be considered a form of parallel input, and while true, our brains have complex "dedicated hardware" to encode and decode these movements naturally (Movement coding). Likewise, when performing fine motion, we tend to isolate smaller groups of muscles to increase dexterity.
Based in our experience using thumbstick+gyro aiming and overall research of motion-based controls, we found that when using parallel inputs there are multiple ways to achieve the same output results, which interferes with the ability of building muscle memory, and increases the chances of getting confused while in high-stakes situations.
Focused research on gyro ratcheting
At Input Labs we decided to research and develop solutions to remove the limitations of gyro ratcheting as a generalist input method, compared with the shortcomings of flick stick, for all the reasons mentioned above:
- Shallower learning curve.
- More potential applications (better suited as a generic mouse replacement).
- Higher performance on restricted mobility scenarios.
- Higher performance on competitive scenarios.
|Lack of accuracy, linearity and responsiveness when employing gyro both both large and fine movements||Dual gyro, carefully tuned firmware|
|Engage and disengage gyro while being able to use other buttons||Touch surface embedded within the ABXY buttons|
|Required software configuration||The controller identifies itself as a HID mouse|
With the current performance and simplicity of the Alpakka controller reference design, we believe we achieved the goal of making gyro ratcheting not just an enthusiast/experimental solution, but a first-class citizen for generalist input methods, which can replace mouse input in any scenario.
Several independent reviewers and members of our Discord community agree about its exceptional characteristics, so we consider the Alpakka as the first of a third generation of gyro controllers.
|Third generation of gyro controllers|
|Gyro control supports full range of movement (large and fine).|
|Does not require filtering (no smoothing, no acceleration).|
|It is suitable for any generalist use (desktop, gaming, productivity).|
And as the cherry on top, we made everything open source and Creative Commons, ain't that cool?
Thanks a lot for the support!
- M&M <3