Posted by JibbSmartJibbSmart on 08 Mar 2019 10:58

Welcome to GyroWiki! I'm Jibb Smart, and I just want to touch on my various motivations for creating JoyShockLibrary, JoyShockMapper, and GyroWiki. These have all been made to support each other in one main purpose: to encourage adoption of great gyro controls by both game developers and players.

My first experience of gyro controls was via Steam's DualShock 4 support added in 2016, which I used to play DOOM (2016) and, with some fiddling, Overwatch. I was pleasantly surprised to find it precise, responsive, and layered over traditional stick controls in a way that made it easy for me to learn gradually. It was also a painless way to play after I'd injured my wrist overdoing it with the mouse.

When I finally played Splatoon 2 and Zelda: Breath of the Wild on the Nintendo Switch, I was disappointed to find their gyro aiming sloppy and inconsistent, although still preferable over pure stick aiming. I figured that there were two possible causes for this difference of experience:

  1. Nintendo's JoyCon and Pro Controller have drastically inferior gyros compared to Sony's DualShock 4, or
  2. Steam's DualShock 4 gyro-to-mouse conversion software must be doing a lot of work to interpret the gyro in a way that can provide such precise and responsive input.

So I created JoyShockLibrary (JSL), an open source interface for developers to access the inputs that JoyCons, Switch's Pro Controller, and Sony's DualShock 4 have in common, and found instead that:

  1. Nintendo's JoyCon and Pro Controller are capable of providing a similar gyro experience to the DualShock 4, and
  2. The simplest solution imaginable is the most precise.

It turns out that games with sloppy and imprecise gyro controls are doing more work behind the scenes than games with more precise gyro controls. This extra work is to solve problems that can be solved in simple ways that don't cost the precision and responsive of a bare-bones solution, which I'll explore in depth in another post.

In order to test and prove this, I began developing JoyShockMapper (JSM), an open source tool to convert JoyCon, Pro Controller, and DualShock 4 inputs (read through JSL) to keyboard and mouse inputs. Yes, it's doing a lot of stuff that Steam does, but JoyShockMapper serves some unique purposes:

  • To give me more control over the parameters of my gyro controls (Steam's options seem comprehensive at first blush, but are lacking in some areas I think are important to the success of gyro controls),
  • To support the Pro Controller (which Steam didn't support at the time I began development of JSM) and JoyCons (which Steam still doesn't support to my knowledge),
  • To allow me to explore novel ways to use the thumbsticks in combination with gyro aiming (this lead to the flick stick, which is unique to JSM at time of writing, but I'd love to see it adopted by games),
  • To give me the experience to be able to speak with authority on the capabilities and potential of gyro controls, in the hope of being able to help other developers implement great gyro controls in their games.

Having played PC games with JSM almost exclusively since it was first able to convert controller inputs to keyboard and mouse inputs, I'm confident that it has become a versatile tool for exploring and enjoying great gyro controls in keyboard-and-mouse games. This isn't to say the gyro is better than a mouse, but that it sufficiently fulfills the role of a mouse when playing with a controller, and is a drastic improvement over standard console controls for a variety of genres.

But JSM provides a variety of options, some I would never recommend using, in order to allow you and I to thoroughly explore what it takes to implement good gyro controls. As such, one might have a really negative experience of gyro controls without a little help. JSM doesn't enforce that good principles of gyro controls are adhered to. It helps to have a starting point before fine-tuning the settings for your own needs. It also takes some work to calibrate JSM for a given game the first time, and this is something users shouldn't have to deal with if someone else already has. And so this is what GyroWiki is for as far as JSM users are concerned:

  1. To provide guides to using and making the most of JSM for the best gyro experience possible,
  2. To provide a space where JSM users can find and share calibration settings for any game on Windows that uses a mouse.

But GyroWiki is also for game developers, regardless of their interest in JSM. My objective is for GyroWiki to ultimately be a place where I can:

  1. Make the case that gyro controls have incredible potential for the benefit of gamers and not-yet gamers,
  2. Codify principles of good gyro controls,
  3. Acknowledge what modern games do that violate these principles,
  4. Explore best practices for creating games that adhere to these principles.

If you're here really early, perhaps all you'll find are a JoyShockMapper tutorial and calibration info for a small collection of games. But I hope you'll find enough to explore gyro controls in games you already enjoy, and that you'll come back later as I flesh out the learning material on the site. Perhaps you'll discover that gyro controls have an important place in the future of gaming.