Case Study #1 - Jeeboman

Defining "actions" for the game

Fire - Trigger Click



Select Weapon - Trackpad Click



Shield - Grip Button Click



Pause/Menu - Application Menu Click

Binding actions to the new controller

Test your binding

Sharing the binding with the community

Our first case study of how to rebind a game is Jeeboman . This is a straightforward wave shooter that was a launch title for the Vive. The controls are easy to understand, so it is a good place to start.If you don't happen to own Jeeboman and want to follow along, you can perform these same steps using the Jeeboman Demo.Our first step is to figure out what actions the game has so we know what's bindable. The best way to figure out these actions is to run the game using a controller that the developers of the game have tested with. In Jeeboman's case it's a Vive Controller, and there are four actions: Fire, Select Weapon, Shield, and Pause/Menu.Now we can set these actions in the binding UI. You can open the UI under the "Devices" menu in the SteamVR status window or use it in-headset. Once you have it open, select Jeeboman from the list of games (you will need to have run it recently). Then select "Edit" under whatever binding you have for the controller type you're binding. In my case it is called "Knuckles Legacy Defaults".Then select the "Set Up Legacy Actions" tab:Here you'll see a list of all the bits of data (inputs) a game can query using the old input API. SteamVR doesn't know what the game is doing with any of these bits, just that it might be using them for something. Rebinding a legacy game is a matter of figuring out what bits the game uses, then labeling and organizing them so the rest of the UI is usable by humans.Because of how little SteamVR knows about the game this screen shows a ton of options by default. What we are doing in this step is providing names for what the game cares about, and hiding everything else. To do that we'll ask ourselves three questions.Yes. Each hand has the same four actions. Any weapon can be used to either hand, and buttons affect the hand they are pressed on.That means we want to check the box at the top labeled "This game expects the left and right hands to use the same actions". Note that when you do this the other tab is renamed to "Legacy Bindings (Mirrored)" to reflect the fact that the right hand is a mirror of the left hand.The game exposes four actions:Now that we know what actions Jeeboman has, we can provide names for the things we care about, and get rid of the rest. Let's start with Pause/Menu. The Pause/Menu action happens when the game gets an Application Menu Button click event. So next that input we'll name it Pause/Menu. Jeeboman doesn't use Application Menu Button Touch events (since those didn't exist on the Vive Controller it was developed on) so we'll hide that action.Now do the same thing for the other three actions and hide the rest. You'll end up with something like this:If you happen to hide an action that you didn't mean to, you can always press "Show Hidden Actions", find the action in the list, and press "Show" to bring it back.None. We picked Jeeboman to go first because it is a simple example. We'll get into this question more in the other two examples.Now that we have our actions named, the next step is to bind them to inputs on the controllers. Exactly how to do this depends on the game, but also on your personal preferences. If you don't like the way something is bound, you can always go back and rebind it. Also, if you start with a binding where someone has already done step 1, you can just use their names and skip straight to step 2.The first action we want to bind is Fire. The trigger is an obvious choice for this action. Usually trigger bindings are mapped like buttons so SteamVR Input will apply a threshold and activate the action when the trigger is partially pulled. To do that we add a "Button" mode to the trigger. Click the "+" next to Trigger and select "Button".After adding the mode, we want to change the action that is bound to "Click":The next action to bind is Select Weapon, which was on the Vive controller trackpad. Let's bind Select Weapon to the A button - follow the same steps as above to make the A Button a "Button" type and set Click to "Select Weapon".Pause/Menu was bound to the Application Menu button on the Vive controller, but there is no such button on Knuckles. So we'll bind that action to the B button.Shield was on the Grip button on the Vive Controller. The Grip on Knuckles is more capable though, so we need to make sure we get the right value bound to this action. In this case, we want squeezing the grip to activate the shield instead of just closing your hand around the controller. The first step to doing that is to add a "Button" mode. Then click the gear icon to bring up settings for that mode.From here click on "Generate Click From" to pick where the click comes from. "Force" is the option we want so we're using the force sensor. The other option here is "Pull", which for Knuckles means the capacitive (proximity and touch) sensors on the handle. For some games and actions that's the right choice, but we're looking for a squeeze in our case.Click "Close" to save this setting. Then set Grip > Button > Click to "Shield".Now we just need to bind the pose and haptic actions to some values so the game will get reasonable controller positions and send haptic feedback. We are planning to add more functionality here, for now it's simply using the raw pose and the standard haptics of the controller. These settings can be found under "Edit Action Poses" and "Edit Haptics"For Pose, just set "Left Hand Raw" to "pose" like this:And for Haptics, set "Left Hand Haptic" to "haptic" like this:As we've been binding actions on the left hand, those same bindings have been populated on the right hand automatically. This saves us a bunch of work for games with mirrored inputs.Any changes you make in the binding UI are applied to the game automatically. Just start Jeeboman and pick up your controllers to see how they work.Now that our bindings are good to go, we'll share them with anyone else who wants to use Knuckles to play Jeeboman. To do that just click the "Publish to Workshop" button at the bottom of the binding window.Give your binding a reasonable name and description, and then click Save to share it.Once you share your binding it will appear as an option for other users.And that's it for Jeeboman!