Community Spotlight: Steam Control 360

In March 2011, Valve introduced an easier way to bring Steam to people's living rooms. In an effort to reach out to PCs connected to televisions, Valve announced "big-picture mode." It was supposed to offer full controller support that would allow gamers to navigate their Steam library from the comfort of their couch. Sadly, the feature remains in limbo with no timetable for its arrival.

One Shacker that was looking forward to big-picture mode was Brian "electroly" Luft. Luft has used controllers with his PC for many years, starting with Sony's PSX and PS2 controllers before moving on to the Xbox 360 controller. For couch players like Luft, the only way to remotely launch Steam titles without walking over to their PC was to use wireless peripherals. On top of feeling like a clunky solution, Luft pointed out the discomfort and silliness of using a mouse atop a couch. Big-picture mode would address these concerns, which is why Valve's continuing silence on the feature has proven disappointing.

That's why Luft has taken matters into his own hands. While many wait for Valve's official "big picture" solution, he has constructed a stopgap solution from scratch, dubbing it "Steam Control 360."

Written in the C programming language, Steam Control 360 monitors the Xbox 360 controller using Microsoft's XInput library and draws the launcher interface using titles and logo graphics from Steam.

It proved to be a simple process for Luft. "As with developing any piece of software that is dominated by the user interface without much complexity underneath," he began, "it's largely a matter of just grinding through the implementation of each piece of the user experience, referencing the developer documentation when needed. I've written many Windows applications before, so this part was largely old hat. Using the Xbox 360 controller was new for me, but the XInput library turned out to be delightfully simple to use. Major kudos to Microsoft in making it easy for developers to make use of their controller. I see now why many games support the Xbox 360 controller exclusively, rather than supporting any gamepad through the clunkier DirectInput library."

The overall ease of writing the application's code made Luft wonder why similar launchers don't exist. However, there were a few bumps in the road. Luft noted that the hardest part of creating Steam Control 360 was figuring out how to get the list of Steam games installed on a user's computer. Despite Steam shipping with several libraries that exposed numerous programming interfaces, Luft had trouble getting them to work. After wracking his brain for several nights, he eventually found a solution.

"Ultimately I settled on using the Steam Community website, which conveniently lists all of the Steam games owned by each user," Luft said. "The unfortunate side effect of this approach is that non-Steam games are not listed and I only have access to the small logo graphics that appear on Steam community profiles, rather than the giant logos you see in Steam's grid view. In addition, the Steam Community website lists every game a user has ever purchased, not just the games that are installed. For obvious reasons, the launcher only shows games that have been installed locally. Determining whether a given game is installed is not nearly as straightforward as you would think. I suspect that all of these issues would vanish if I had direct access to the Steam programming interfaces, and it's clear that an official big-picture mode could do a much better job."

Even with these technical setbacks, Steam Control 360 has proven to be a capable stopgap solution. After releasing the application and its accompanying tutorial, Luft received feedback from a number of users on ways to improve it. "I absolutely agree with many of the suggestions I've received," he said. "For instance, it would be nice if it worked with games that use their own intermediate launchers, like Ubisoft games and MMOs. Currently, Steam Control 360 will get you as far as the launcher, but then you're back to getting up and walking over to the computer to click Play with the mouse."

Luft has also received feedback from fellow Shackers, particularly in regards to launching non-Steam titles. "The ability to launch non-Steam applications would be a welcome addition. With this functionality, Steam Control 360 could be more of a general-purpose launcher." Shacker OverloadUT suggested that this could be used to launch XBMC, which is a media center application that itself supports the Xbox 360 controller. "I think this would be a natural extension to the existing functionality. Support for non-Steam games is at the top of my list for possible future additions."

Steam Control 360, by Luft's own admission, is meant to be a temporary solution until Valve launches its official big-picture mode. So what are his hopes for the application?

"I'd love to see all aspects of the Steam client be accessible using the controller in a TV-friendly interface, including the Friends and Store functionality," answered Luft. "Being able to buy Steam games from my couch would be fantastic. In addition, the in-game Steam overlay is currently keyboard/mouse-only and is something that I'm unable to address in Steam Control 360. It would be great to see the Steam overlay become controller-enabled."

Luft also hopes Valve will pave the way for total controller accessibility in PC games. "I'd like to see Valve use their influence to pressure developers to avoid using their own intermediate launchers," he added, "or at least to make those launchers controller-accessible. They are in a great position to be able to set a standard for controller accessibility in PC games, and I think their official Big Picture Mode will provide the impetus that developers need to make their games fully controller-accessible, from start to finish."

Until Valve's big-picture mode escapes "Valve Time" limbo, however, elctroly's Steam Control 360 will at least make PC players' lives a little easier.