Gamasutra: The Art & Business of Making Gamesspacer
View All     RSS
October 31, 2014
arrowPress Releases
October 31, 2014
PR Newswire
View All
View All     Submit Event

If you enjoy reading this site, you might also want to check out these UBM Tech sites:

Playing Defender's Quest with the Steam Controller
by Lars Doucet on 01/18/14 02:42:00 pm   Expert Blogs   Featured Blogs

The following blog post, unless otherwise noted, was written by a member of Gamasutra’s community.
The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company.


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).

Bottom line -- it's pretty good! Read on for more details about how it plays with Defender's Quest.
This is the prototype we played with (picture nabbed from internet, but I have the same one):Image

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.
They've already committed to a new iteration, that looks like this:


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. 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..." 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?

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.

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 cursor 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 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.
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 experience. 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.

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.
Hope this helps someone!


Related Jobs

Twisted Pixel Games
Twisted Pixel Games — Austin, Texas, United States

Senior Graphics and Systems Engineer
Twisted Pixel Games
Twisted Pixel Games — Austin, Texas, United States

Mid-level Tools and Systems Engineer
Giant Sparrow
Giant Sparrow — Playa Vista, California, United States

Junior 3D Artist
Giant Sparrow
Giant Sparrow — Playa Vista, California, United States

Lead Artist


Michael Zehnich
profile image
Hey Lars, nice write up. Was nice meeting you at SDD! (sat by you during the first day's keynote/intro talks) I've been playing with the controller and it's surprising how well it just works with so many games. Valve really knocked it out of the park. And I agree, I was very glad to see the more traditional button layout revealed. I wonder if they'll add a home button to the big empty space where the touchpad was, since that "bar" button seems to be gone now?

Lars Doucet
profile image
Yeah, I asked them about that -- in the new layout, they haven't put in the three "reserved system buttons" (which basically correspond to start, back, and home) yet because they wanted to get a new prototype out really quick just to play with, and it takes additional time to figure out the circuitry for the system buttons. They said they'd almost certainly be putting those back in the empty space created up top.

Matthew Mouras
profile image
Thanks very much for the write up! It's great to read feedback from developers. I'm looking forward to having one of these in my hands and playing around with it.

As intelligently designed as I think this device is, it's lines like these that having a chilling effect on me:

"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 cursor 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. "

Lars Doucet
profile image
Why exactly is it chilling? (Just wondering what you mean by that, not challenging the sentiment).

For what it's worth, I'm describing a feature in my game (long before the steam controller was announced) where I implemented "virtual mouse control" so that the player could use the keyboard without having to use the mouse at all.

"Virtual" in this sense has nothing to do with the steam controller -- the steam controller sends actual mouse events, not virtual ones.

In my game the player has two sets of "virtual" mouse controls -- numpad to move the "virtual" mouse cursor around, and enter to click at that location (both customizable). Now, when you move the "virtual" mouse cursor, it hides the hardware mouse, and shows a regular mouse cursor sprite instead. (The game was originally written in flash, so I don't have the ability to force the hardware mouse to go where I want -- that ONLY moves when actual mouse hardware events are received.)

This can create a situation where you've moved the "virtual" mouse cursor somewhere but the actual hardware mouse is somewhere else. So an actual hardware mouse click (as opposed to hitting "enter" for virtual mouse click) will cause the cursor to instantly jump to the hardware mouse's location. Hence the glitch -- in my view, this isn't really the steam controller's fault, as this exact same bug exists in my normal mouse-and-keyboard-setup.

Does that help clarify things?

Matthew Mouras
profile image
Thanks for the response and the opportunity to think about this. That does help to clarify what you encountered when driving your game with the Steam controller. Thanks for the detailed explanation.

By "chilling", I suppose I'm thinking of a couple of things.

My understanding was that the Steam controller was designed to allow users to play the widest variety of games possible from the couch without the use of any other input device. Maybe I'm off base after not reading about the Steam controller since its announcement and that isn't the real design goal of this device? It seems that if there are numerous small issues in individual game controls that are only resolved through developer work, it's not going to be the smooth experience Valve was billing. Or do you think that problem has already been solved and small issues like these will be addressed by the community driven configuration files?

That and the on-demand firmware flashes sound pretty slick.

Maybe it is just my ignorance of the design goals of the Steam controller. Maybe the questions I have are already answered. Is this device capable of providing a better control experience in some games than we already have? Or is it just allowing users to choose between the comfort of the couch with a controller in hand or the feel of more precise and immediate controls while hunched over a desk?

Theresa Catalano
profile image
"My understanding was that the Steam controller was designed to allow users to play the widest variety of games possible from the couch without the use of any other input device."

No, I don't think that's the case. If that were true, the Steam controller would also have an analog stick and a d-pad. There's a lot of games that the Steam controller is no good for.

The Steam controller seems to be aiming for games that control well with a mouse and keyboard specifically. Maybe those are the only type of games that they want to have on the Steam system.

Robert Marney
profile image
Very informative! My only suggestion is that I find, in games where pausing and changing speed are the most important keys, that I really prefer the pause button to be on the left hand, so that I can perform an action and immediately pause/unpause. Perhaps you could swap one of the two buttons dedicated to Esc with the space bar for Pause?

Lars Doucet
profile image
Yeah that makes sense.

Alejandro Rodriguez
profile image
I cannot wait to get my hands on one of these.