Posted by JibbSmartJibbSmart on 15 Nov 2019 07:48

Welcome to the Gyro Revolution. Here I hope to summarise all the various projects connected to GyroWiki, their current status, and how they're working together to change how we play games for the better.

To better understand all this, there are two main parts:

  1. Observations about modern game controls - What's wrong with the current state of game controls?
  2. The Gyro Revolution projects - What are all these gyro projects, and how are they connected to each other?

Let's get right into it. There are a lot of pieces here, and hopefully I can paint a clear picture of how they all fit together.

Observations about Modern Game Controls

While conventions are extremely helpful for game developers to provide consistently good experiences to players, control conventions haven't kept up with what controllers are capable of. Modern games could be both easier to learn and have more room for skillful mastery with modern controllers.

Traditional thumbstick aiming is very difficult to learn for the first time

Although controllers offer many benefits to players over a keyboard and mouse, they are traditionally not well-suited to playing games that involve precise aiming or control of a cursor. This is in spite of the incredible amount of work that goes into interpreting the player's input more generously and helping them aim with aim assist.

Of course, this is mostly uncontroversial among game developers. While players might debate back and forth, it's generally well-understood that thumbsticks are bad for aiming. So if we can offer players a better option, let's do it!

Gyro aiming is underutilised in games

Many players have no idea that PlayStation's DualShock 4 is just as capable as Switch controllers, because even games like Fortnite and DOOM that sport gyro aiming on Switch don't on the PS4. Why is that? Are thumbstick controls good enough? We know this isn't true. We know difficult controls are a huge obstacle to getting not-yet-gamers into games. And yet here we are, playing PS4 shooters mostly the same way we did almost twenty years ago.

Current gyro implementations leave much to be desired

While gyro fans on the Switch point to Splatoon 2 and Breath of the Wild as exemplar implementations, they're actually sloppy, unpredictable, and unreliable. Other popular games with gyro controls usually don't do better.

With the same controllers, gyro controls can be incredibly precise and responsive. There's a tremendous gap between what players using gyro controls through Steam's controller tools experience and what players experience with gyro controls in Fortnite, Paladins, and Super Mario Odyssey. Steam's controls are much tighter, and a naive player would be forgiven for thinking that it's difficult to pull off an implementation like Steam's.

But it isn't. And we can do even better.

Gyro controls open up far more radical opportunities for innovation

At the very least, gyro controls can be layered seamlessly on top of whatever more traditional controls are there. If gyro controls are sometimes better than stick aiming, and can be used only when they're better, we've proven that games play better when the gyro is utilised well.

But we can do so much better than that. Far more creative and innovative options are explored by the various Gyro Revolution projects. Let's have a look at all the pieces there and how they come together.

Gyro Revolution Projects

Here are the main pieces in play. As you can imagine, they keep me very busy, as I work on these in my spare time:

  • GyroWiki - This website. The glue between everything. Hosts community and developer resources for using the other publicly available projects (below) and actually implementing good gyro controls in games.
  • JoyShockMapper - An open source tool for playing just about any game on PC with good gyro controls and flick stick by faking keyboard and mouse inputs. If your game plays better with JoyShockMapper than it does with your own gyro controls, it's not the end of the world. Just check out the tutorials on GyroWiki and see how easy it is when we have good conventions to follow!
  • JoyShockOverlay - A live 3D controller overlay to show viewers what you're doing with your controller at any time. This is what you see on the left side of the screen in basically all the videos on this site.
  • JoyShockLibrary - An open source library for reading controller input from PlayStation's DualShock 4 and Switch's Joy-Cons and Pro Controller. JoyShockMapper and JoyShockOverlay depend on this library, and any improvements made to it will improve them as well.
  • Gyro Gaming YouTube Channel - This is the chief evangelistic force of the Gyro Revolution. Regular videos use JoyShockOverlay and JoyShockMapper to showcase what can be done with modern controllers in a variety of games.
  • Playable Demo - Gyro aiming, flick stick, and unlocked aiming in action. See a practical example of the settings games should provide to players. See how different control options compare to each other.

Let's look at them in detail.

GyroWiki

Current Status: Published, ongoing
Goals: Continue to publish helpful developer resources, including Good Gyro Controls Part 3: Unlocking the Aimer.

GyroWiki has two main goals:

  1. To educate developers;
  2. To help gyro-keen players.

First, it's a collection of educational resources for developers. The articles on the blog equip developers to implement far better gyro controls than you'll have encountered in the wild. There are a number of decisions that go into a gyro aiming implementation that can be difficult when going in blind, and this is proven by how many games have sloppy, unpredictable, imprecise, laggy gyro controls. If a game's gyro controls are not tight, precise, and responsive on a modern console (Switch or PlayStation 4 - the Xbox One doesn't have gyro), it's certainly not the hardware's fault.

The most important educational resources on GyroWiki are the Good Gyro Controls tutorials. It's a 3 part series with 2 parts out so far. Part 1 guides you through the real basics of good gyro controls. Part 2 teaches you how to implement flick stick, which is a game-changer. I can't wait to see it actually implemented in games:


Excitement around flick stick has been a driving force in the formation of an enthusiastic community around these tools. See its first public introduction on Reddit.

Part 3 will talk about unlocking the aimer from the centre of the screen. It's a work in progress, and it's waiting on more work in other projects below. I do have a working prototype of the features I plan to talk about, and they open up so many new possibilities. Hopefully you're looking forward to that.

GyroWiki also hosts other articles intended to benefit the games industry. The article I shared much earlier on this page on the shortcomings of thumbsticks for aiming was a featured post on on Gamasutra.

But another goal of GyroWiki is to help gyro-keen players. JoyShockMapper (which we'll talk about next) requires calibration and configuration on a per-game basis. While the purpose of JoyShockMapper is to show the potential of gyro controls and flick stick, it can be obfuscated by the difficulty of calibration. This calibration wouldn't be part of native implementations of gyro controls, but it's a necessary part of using JoyShockMapper. By hosting a database of calibration settings and configurations, GyroWiki enables players to much more easily try these controls in different games.

Let's talk more about what JoyShockMapper actually is.

JoyShockMapper

Current Status: Published, ongoing
Goals: Continue to support the growing community and release updates with new features.

JoyShockMapper fakes good gyro controls and flick stick in games by converting controller inputs to virtual keyboard and mouse inputs. It works with any game that uses a mouse, 2D or 3D. It's open source, and serves as a reference implementation for good gyro controls and flick stick as described on GyroWiki.

Everything advocated for on GyroWiki has been proven by practical implementations, and JoyShockMapper accounts for a lot of that. I don't say to do things a certain way because I think they'll be good, but because I've tested them using JoyShockMapper and game prototypes I've worked on privately. Any good idea can only be proven by a good implementation, and JoyShockMapper, when configured correctly, is the proof of the Gyro Revolution.

Since flick stick maps a real-world stick angle to the same angle in-game, JoyShockMapper needs calibration on a per-game basis. This calibration is also used so that, in 3D games at least, your gyro settings can use the natural sensitivity scale. With proper calibration, the same gyro controls can be used across different games.

As of version 1.3, JoyShockMapper has benefited from huge community contributions. This has been such a blessing, as JoyShockMapper has continued to improve while I focus on other projects here.

To learn how to use JoyShockMapper to try out good gyro controls and flick stick in your games without having to implement any of it yourself, there's a tutorial right here on GyroWiki.

JoyShockOverlay

Current Status: Useful, not ready for publishing
Goals: Publish this tool for streamers and the like to better communicate what they're doing in their games. Add more controllers, more options to customise the look and position of the 3D overlay.


It's hard to show gyro controls in action without some way to show what I'm doing with the controller. In fact, many streamers have on-screen overlays showing what their controller is doing. Others will have a "controller-cam" or "mouse-cam" to serve the same purpose.

But available on-screen overlays won't suffice for gyro controls. Viewers need to see the controller's orientation. So I made JoyShockOverlay, shown above. This overlay is:

  • Live - No need to synchronise different feeds. It appears on your screen over whatever you're playing.
  • Responsive - Real-time rendering is my jam. So, of course, JoyShockOverlay implements a "late latching" solution to get updates from the controller after the current frame's draw call has been submitted but before the GPU has consumed it. What this means is that it's not uncommon to see the 3D controller overlay show an input before the game actually responds to it.
  • Performant - I know a couple dozen draw calls aren't really a big deal, but JSO draws the whole controller (or pair of controllers in the case of Joy-Cons) in one. Data encoded in the vertex colours designate different groups, and then the vertex shader applies the appropriate transformations and highlights such that the sticks always reflect the real controller's stick positions, and the shoulder buttons and triggers swing out to stay visible regardless of the controller's orientation.

At the moment, this is of huge benefit to my videos showing gyro controls in action. Understandably, YouTubers and streamers have asked to use JoyShockOverlay, but it's currently not publicly available. Long term, the goal is to make JSO available, as well as to add more controllers (even popular ones that don't have gyro, like the Xbox One controller) and more customisation options.

JoyShockLibrary

Current Status: Published, ongoing
Goals: Add Linux and Mac support. Add Bluetooth support for DualShock 4, USB support for Switch controllers. More resources and examples to help developers use JSL in popular engines such as Unreal Engine and Unity.

JoyShockLibrary is an open source library that reads input from PlayStation's DualShock 4 and Switch's Joy-Cons and Pro Controller. Both JoyShockMapper and JoyShockOverlay use JoyShockLibrary. It gives access to all the buttons, sticks, and triggers. It also gives access to the accelerometer and gyro, reporting each in the same units across different controllers (g for acceleration and degrees per second for angular velocity), in the same axes. It has functions to help with gyro calibration, too.

Using JoyShockLibrary, a game or application can easily use all three controllers interchangeably, and should be easy to combine with XInput or generic controller APIs.

It relies on the cross-platform hidapi, which should make porting JoyShockLibrary to Linux and Mac relatively painless, but for now it's only compiled for Windows. It also currently only communicates with the DualShock 4 via USB and Switch controllers by Bluetooth. I do plan to add Bluetooth DualShock 4 and USB Switch controller support when I get the chance. I know its current wired/wireless limitations seem weird, but the DualShock 4 is easier to deal with by USB, and Switch controllers only communicate by Bluetooth by default, so I started with what's simplest.

My primary reason for making JoyShockLibrary myself was so that I'd know what comes out of these controllers. I was enjoying gyro controls through Steam and made a prototype using Steam's input API, but I wanted to support Switch controllers, too (Steam didn't at the time), and to understand why Switch games have sloppy gyro controls when games played through Steam don't. This experience has enabled me to speak with authority on the capabilities of the gyros in PlayStation and Switch controllers.

JoyShockLibrary is easy to use with popular game engines, but having working examples available for users will make this much easier.

Gyro Gaming YouTube Channel

Current Status: Public, ongoing
Goals: Continue to regularly publish videos evangelising the innovations uncovered in my work on the JoyShock tools. A video summarising the Good Gyro Controls Part 1: The Gyro is a Mouse article on GyroWiki. Videos utilising game prototypes I'm working on to better demonstrate what we can't fake in current games with JoyShockMapper.


The Gyro Gaming YouTube Channel is the primary way I reach people with these projects. The channel serves to:

  • Educate about gyro controls and flick stick;
  • Demonstrate these features in popular games;
  • Reach more people in creative ways, such as playing Overwatch with one Joy-Con, which was published right before Overwatch came out on Switch;
  • Support GyroWiki with complementary videos (as you've seen on this page);
  • Make it easier to share and evangelise good gyro controls, flick stick, accessibility tools, and anything else that comes out of my work.

Sharing the intro to flick stick video above on Reddit, for example, exposed thousands of people to the innovations described here in a matter of days. Gyro vs thumbstick vs mouse was quickly shared in gaming fora and continues to appear in gyro-related discussions as a go-to taster of what the gyro is capable of. It continues to get regular traffic without my active intervention.

At the moment, most of my time spent on these projects is producing videos for this channel. I don't have a lot of free time, and maintaining momentum on the channel uses up a lot of it. But it's been extremely fruitful, reaching more and more people with the potential of modern controllers, particularly with good gyro controls and related innovations.

The channel is growing, and has helped grow a Discord community dedicated to gyro gaming, whether with JSM, Steam, or even on console.


There's so much more to come on the Gyro Gaming YouTube Channel, and this video gives an overview of what I'm working on. Which brings us to the last piece I'm working on: the Playable Demo.

Playable Demo

Current Status: Prototyping, ongoing
Goals: To publish a simple, playable demo of good gyro controls, flick stick, and unlocked aiming in action.

I'm working on a prototype demonstrating all the features described on GyroWiki and more. The unfinished Part 3 of the Good Gyro Controls tutorial series here on GyroWiki and the YouTube channel both plan to use this demo to show what's possible. I mentioned in the JoyShockMapper section that JSM serves as the proof of the Gyro Revolution. But it's really only half of the proof. This demo will serve as the other half.

It has features that are impossible to fake with JoyShockMapper, such as unlocking the aimer from the centre of the screen in a standard shooter. It also serves as an example of how to present these options to the user - even the simple options demonstrated by JoyShockMapper.

It's a work in progress, and, as I'm focused on the programming side of the minimum viable product right now, I have nothing to show for it. It functions well at a mechanical level, covering the most important features of JSM and a bunch of new ones, but it's neither publishable nor in a recordable state. The plan is for it to be a very simple target-shooter, allowing the player to experiment with different control systems. The demo should provide statistics on how the player fares with different kinds of controls. I also plan for it to collect anonymised data by which we can better understand the pros and cons of different control systems and how they can be improved.

This demo should bring gyro controls and flick stick to a wider audience, as only a relatively small number of people are willing to try something like JoyShockMapper to change the way they play other games. The demo will benefit from being easy to install and update through an established vendor, natively recognising the player's controllers without the need for complex calibration and configuration, and being able to teach these controls in an interactive way.

With this demo, my practice with it, and feedback and data from players, this should help test more creative control solutions. This unnamed playable demo will inform the Gyro Gaming YouTube Channel, GyroWiki, and the industry at large how we can best move forward with game controls.

With JoyShockMapper, we have proof that games can be far more accessible to new players. They can give far more freedom for mastery to skillful players willing to put in the practice. They provide an accessible alternative to aiming with a tiny joystick. They open the console gamer market to genres of games that cannot traditionally be played without a mouse, like strategy games, dota-likes, and more. This demo will enable us to see how far these benefits can go.

How they fit together

So there you have it. GyroWiki is a growing reference for developers who are up for making games play way better. JoyShockMapper and this upcoming Playable Demo serve to prove it. The Gyro Gaming YouTube Channel evangelises it. JoyShockOverlay supports GyroWiki and the Gyro Gaming Channel. And JoyShockLibrary makes it all possible.

If you want to learn more or get involved some how, you can find me in the Gyro Gaming Discord community, message me on Twitter, through the email address on the Gyro Gaming YouTube Channel About page, or through the contact form on this site. I'd love to hear from you! Let's change how games are played.