Playing Defender's Quest with the Steam Controller

So I got back from Steam Dev Days. You might have heard that everyone who attended got a Steam Controller prototype from Valve, as well as one of the many Steam Machine models (courtesy of Intel).

Bottom line -- it's pretty good! Read on for more details.

This is the prototype we played with (picture nabbed from internet, but I have the same one):Image

The back looked like this:

So, basically it has two circular trackpads, two shoulder "bumpers", two shoulder "triggers", and two back "paddles." It has 8 face buttons - 4 weird triangle button thingies, and 4 weird square thingies, then three "reserved" thin rectangular buttons on the bottom. At the conference, Valve said these controllers were from the same manufacturing run that they gave to the 300 Steam hardware beta participants. 
They've already committed to a new iteration, that looks like this:


They have finally seen the light and are changing the weird mess in the center into a proper set of face buttons, neatly arranged in two diamond patterns of four each that mirrors the classic "D-Pad + XYAB" that we've grown accustomed to. I saw one of these at the conference, freshly 3D-printed, so we can expect the final design to be based off this.

At any rate, in all models I've seen they've punted on the digital touch-screen that they had talked about before. In early tests it just proved too distracting, and was of marginal use for a pretty substantial increase in manufacturing cost.

So basically the new design represents what's coming next, and the images at the top reflect what I was actually able to play with today. 

Legacy vs. Native

The Steam Controller has two modes: Legacy Mode and Native Mode.

In Legacy Mode, your computer literally cannot tell the difference between your controller's input and the input of a mouse and keyboard. The controller is actually sending low-level mouse+keyboard events.

In Native Mode, you compile your game against the Steam SDK, and get to look directly at what the steam controller is doing -- get X/Y coordinates for each trackpad, controller input for each button, etc, and one more thing - you can have up to SIXTEEN of these plugged in at once. SIXTEEN.

The Steam controller configuration stuff is actually already in the steam client, too -- if you open big picture mode, and IF you have a steam controller hooked up to your computer, you can see the controller configuration for your current game. This is legacy mode configuration -- mapping mouse/keyboard events to the various buttons for this particular game. What's cool is that Steam is NOT sitting in the middle like Joy2Key, and translating on the fly. It's not going, "You pressed the X button, let's see... that's the "E" key on the keyboard..." Instead, what happens is whenever you load up a new game and grab a controller configuration, it re-flashes the controller's firmware, so now pushing the X button just IS the same as the E key on the keyboard, or whatever. Again, your computer just gets mouse and keyboard input.

It's also cool how they deal with user configuration. So, if you make a controller configuration for a game, by default you're sharing it with everyone, unless you set it to private. And whenever someone else uses it, it gets an automatic upvote. When they stop using it, it gets downvoted, and then the most popular configuration becomes the default for all steam users, and the others are ranked somehow, with the best ones bubbling up to the top. Hopefully they're also doing the sorting right to correct for the recency bias in the "first configuration gets all the votes" effect.

How does it play?

So how does it work with Defender's Quest? Pretty well, I'd say. Here's the configuration I'm using right now:

It maps the right pad to mouse movement, and assigns left-mouse click to clicking the right pad, as well as the right shoulder bumper. Clicking on the pad is intuitive, but it's not ideal because it's easy to move the cursor a bit as you click, so I prefer to have a second dedicated "click" button for precision. When I played Portal at Steam Dev Days, I noticed they had the same setup. (The game doesn't use right click for anything except deselect, but I mapped it to the left bumper for good measure).

I've noticed most Defender's Quest players use the mouse for near everything. And of those who use hotkeys, only a fraction use them all. Pause (spacebar) is by far the most important hotkey, followed by speed up/slow down and boost.

Speed up/down are mapped to the shoulder triggers, and boost is mapped to the left back paddle. Back/deselect is mapped to the right back paddle.

With just these few keys, the game is very playable. The mouse movement is surprisingly good, although I'd like to adjust the sensitivity and switch from relative motion to absolute (basically make the track pad behave like a wacom tablet). Valve has assured me that sensitivity is configurable but not yet exposed in the menu, and I'm waiting to hear back on absolute vs. relative motion. (In native mode I could easily do all this and more myself, but that means specifically programming for it).

I do love the haptic feedback in the track pads. For those who are wondering what it's like, basically all it does is give feedback about acceleration and momentum to your motion. It feels almost like you're spinning a trackball, but of course the surface is flat, and you don't have any of the physical disadvantages of a trackpad (weight, hugeness, grime and gunk getting inside your controller). 

For most players, just what I've described above should be enough to sit down and play Defender's Quest on your big screen from your couch without too much trouble. However, there's a few other things I added for convenience. I mapped the left pad to the arrow keys, so you can pan the overworld map with it. And as a stopgap feature, I mapped tab navigation to the two top face buttons. This way, you can technically reach any UI element on screen just by tabbing to it. 

There is one glitch -- tabbing uses my "virtual mouse" control feature, and for boring reasons I won't go into right now, a real mouse click event (as opposed to the faked "virtual mouse click", bound to ENTER by default), will click wherever the mouse was last, not on the currently selected element you jumped to with TAB. I think I can re-program the game to fix this, so that if you've just tabbed to something and haven't touched the mouse since, the next mouse click (real or virtual) will let you click it. 

Assuming I get that fixed, you can easily navigate the game's menu without having to point at everything directly. 

One thing I wasn't able to do was map all the spell and character selection hotkeys (all 18 of them) to anything useful, so I just left them out. (123456 mapped to spells, QWERTY mapped to classes, ASDFGH mapped to characters of the current class).
If I was able to do some "chording" I could conceivably work around this issue. "Chording" is when you click one button to change the function of another - the most obvious example is the shift key, which changes "a" to "A." What I wanted to do was have some button work as a "switch", so that -- at a low level -- when I press face button "X" by itself, it means "1", but X+(some switch) now means "Q", or whatever, so I can switch between what "row" I'm targeting. Then all I need is 8 free buttons -- 6 for individual items, and two for creating the categories. Of course, that might be horrible overkill. In any case, it's impossible in legacy support, but could be done using the Native API.
Bottom line time -- is the steam controller a viable "don't look back" replacement for a mouse and keyboard? Probably not -- it's a different device and it's just not the same thing. For instance, text input is laborious -- you have to bring up this virtual keyboard thing. And no matter what magic I work with chording, it will never be the same as a giant sea of hotkeys at my fingertips. 
All that said, I can say it works really well for Defender's Quest, even after only a few days. My wife was able to pick it up in just a few minutes, and after a few hours of practice I think I could really get good at this method. Legacy support is surprisingly powerful even with its limitations, and with a little extra programming there's basically nothing I couldn't do with the Native API. The big grain of salt to take this all with is that Defender's Quest is a game you can pause, speed up, and slow down at any time. It often requires precision mouse control, but it doesn't also add time pressure to the mix. So I can't speak to whether this is a good control method for, say, DOTA or StarCraft.

Hope this helps someone!