Cross-posted on my personal blog, Fortress of Doors.
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).
The back looks like this, note the "paddles":
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.
I'm glad Valve 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.
In both the new prototype and the older ones that we went home with, it's clear 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. NativeThe 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..." According to Valve, that method has too much latency. 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 pressing the E key on the keyboard, or whatever. 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 up-vote. When someone stops using it, it gets down-voted, 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. If you have a Steam Controller, presumably if you start up DQ in big picture mode, the default layout for your controller will be the one I designed below.
How does it play?
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.
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.
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 keyboard shift key, which changes "a" to "A." I wanted some button to switch keys 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 would 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. Long story short, full hotkey support is complicated.
But if you want to play Defender's Quest from your couch, this should do just fine. I was honestly dreading adding controller support - I'm still not sure how I would make this work with an XBOX or Playstation controller, but the Steam device was up and running in less than a day without any changes to the code.