Playing WINE games with the Steam Controller

While I do the majority of my gaming through Steam on Ubuntu, there’s always a few games around that I’d like to play and aren’t out for Linux, so I play then through WINE.  This morning I discovered that it’s  possible to play WINE games with your Steam Controller.  As usual with WINE, your mileage may vary, but here’s what I did.

Firstly, you can’t just install the Windows version of Steam.  I don’t know if it would recognise the controller, but even if it would, Steam wont run Big Picture Mode if it’s running in WINE, so you’re out of luck there.

The trick is that you can add launchers for non-steam games (or actually, any application) to your steam library.  These will run with the Steam Overlay, and therefore will support Steam Controller configurations.  To do this, you’ll need to create a .desktop launcher file for your game.  You can do this with a text editor, but I used Arronax.

arronaxSet a title and an icon if you like, then for the command, enter the command to launch your game using WINE.  If you’re using the default WINE prefix, then this can be as simple as:

wine ~/.wine/path/to/your/game.exe

However, I tend to install WINE games using PlayOnLinux, which installs games into separate prefixes, with appropriate versions of WINE.  This means the default command doesn’t cut it.  Instead I created the following a shell script, and set the .desktop file’s command to execute that shell script.  Here’s an example that I used:

#!/bin/bash
export WINEPREFIX=/home/steam/.PlayOnLinux/wineprefix/DiabloIII
export WINELOADER=/home/steam/.PlayOnLinux/wine/linux-x86/1.7.15/bin/wine
export WINESERVER=/home/steam/.PlayOnLinux/wine/linux-x86/1.7.15/bin/wineserver
"$WINELOADER" "$WINEPREFIX/drive_c/Program Files/Diablo III/Diablo III Launcher.exe"

You can find the appropriate wine version by looking at the configuration dialogue for the game in PlayOnLinux.  Note that PlayOnLinux can generate a .desktop files for a game, but these launch PlayOnLinux, and don’t appear to work when launched through Steam.

Once you’ve created your shell script and .desktop file, launch Steam in desktop mode, access your library and select “Add a game… > Add a Non-Steam Game…”.  This will show a list of applications in /usr/share/applications.  Click “Browse” and find the .desktop file you have created, then press “Add Selected Programs”.  The game will now appear in your library.

Launch Big Picture Mode, and select the game from your library.  You can now configure the controller as normal, and the Steam Overlay will launch with the game, giving you full support for the controller!

Steam Controller Review

It’s been about a year since I built my Steam Machine, and since then I’ve tried various solutions for playing PC games on my TV while sitting on my sofa.  These have included:

  • A Gamecube controller (my all-time favourite gamepad), which is great but doesn’t have as many buttons as games expect,
  • An XBox 360 controller which is the de facto standard controller for games with gamepad support, but doesn’t work with all games.
  • A Wii Remote, which works for games that need a mouse pointer, but is tiring to use for long periods and tricky to configure well.
  • When I’ve been really desperate, my Rii wireless mouse/keyboard, which is OK in a pinch but far from ideal.

The promise of the Steam Controller is that it “lets you play your entire collection of Steam games on your TV—even the ones designed without controller support in mind.”  When this was announced it seemed like to Holy Grail of input devices, the solution to all of my problems, so of course when I heard I could pre-order one this year for delivery a month before they went on general sale, I snapped one up.  I’ve now racked up a good view hours of gaming on games with various types of control systems, so does it fulfil it’s promise? TL;DR.

The hardware

A steam controller in its box.

The Steam Controller

 

The first analogue stick appeared on the N64 controller, then the Playstation Dual Shock controller was released with 2 analogue sticks.  Since then, controllers have pretty much featured 2 analogue sticks, 4 shoulder buttons/triggers, a D-pad, 4 general purpose buttons, and a couple of “system” buttons.  Each has had it’s own USPs, and Valve have clearly taken inspiration from a lot of places. Some similarities I’ve noticed are:

  • The Gamecube controller’s “cradling” grip.
  • The Gamecube’s 2-stage analogue+digital triggers.
  • Touch pads, seen on the PS4 and PS Vita.
  • A gyroscope (seen in some Gameboy games, the PS3 sixaxis and the Wii Remote Plus).

However, unlike any of these gamepads, the Steam Controller does away with the dual analogue stick/d-pad set up in favour of a single analogue stick, and 2 clickable touch pads, 1 under each thumb.  This allows for similar accuracy to using a touchpad or trackball, an an immense amount of versitibility.  The right pad is flat, while the left pad features an cross-shaped indentation, allowing it to easily emulate a D-Pad.

As well as the standard shoulder buttons, triggers and general purpose A/B/X/Y buttons, the Steam Controller sports a left and right “grip” button, which sits under your two smallest fingers on each hand. Squeezing the controller activated this button, which can be used in a number of ways, as we’ll see below.

The N64 controller features an optional “Rumble Pak”, which introduced what we might now call haptic feedback to console controllers.  All controllers since have featured something similar, merrily vibrating the let us know when we take damage or something near us explodes.  The Steam Controller doesn’t have a “rumble” feature in the same way, but it features a remarkable haptic feedback system for it’s analogue controls.  The analogue stick and triggers can be configured with an actuation threshold, which will provide you with a “clunk” when you cross it.  Similarly, the touch pads can vibrate slightly as your thumb moved over them, giving you a sensation similar to a mouse’s scroll wheel, or a trackball.

None of these features is in itself revolutionary, but the way they’re used together, and crucially the way the software allows you to configure them, creates a completely game-changing experience.

The software

The Steam Controller is not a gamepad.  It’s an input device that can be used to emulate a gamepad, a mouse, a keyboard, or bits of each at the same time.

A screenshot of the controller configuration interface from Steam Big Picture Mode.

Steam Controller Configuration interface.

This is all handled by an addition to Steam’s user interface.  When you select a game in Steam Big Picture Mode, you have the option to configure your controller for that game.  This provides you with an interface that lets you map each pad, stick, button and click to a control on one of the aforementioned devices.  I won’t go into detail, but spending half an hour exploring the configuration options available is mindblowing.

A screenshot showing the options available for configuring the controller's touch pads.

Touch pad configuration options

Configuring a gamepad to emulate a mouse or keyboard is certainly nothing new (I’ve used qjoypad and WiiCan to do similar things in the past), but nothing before has had the flexibility and ease of use that Steam has achieved.  I’ve certainly never seen a controller configuration tool that you can use with the controller you’re configuring.

Once you’ve configured your controller (either manually, using one of Steam’s templates, or using a configuration shared by the Steam community), you launch the game and Steam activates your configuration.  You can even tweak the configuration in-game or call up the innovative dual-pointer on-screen keyboard by pressing the Steam button on the controller and bringing up the Steam Overlay.

The games

I’ve played a number of games with different control systems to really test out the Steam Contoller’s ability to play any game.  Here’s a bit about how the controller can be set up to play each type of game:

First-Person Shooter (Borderlands 2).

Borderlands 2 has gamepad support, so the simplest way to play with the Steam controller is to use the “Gamepad” preset.  This uses the left touchpad as a D-pad, and the right touchpad as an analogue stick. However, to really get the best experience, you can use the “Gamepad with precision aim” preset, which uses the right pad as a trackball, giving you a mouse-look style experience.

The grip buttons are mapped as extra A and X buttons, which gives you the nice option of keeping your thumbs on the movement controls while using those functions.

Real-Time Strategy (Xenonaughts)

RTS games rely on you having a mouse pointer to select units and issue commands.  For games like this, the right pad can be used to control the mouse pointer, while the triggers provide the mouse buttons.  Other buttons can be bound to keyboard keys used for selecting pre-defined groups of units, or switching to different views.

Third-Person Action/Adventure (Don’t starve)

As with Borderlands 2, Don’t starve has controller support, so using the Gamepad preset is all you need.  In an non-FPS game, the precision aim option isn’t so useful.

First-Person Adventure, not controller aware (Minecraft)

Many first-person PC games are controlled with the WASD keys for movement, and the mouse to control the camera.  The keys within easy reach of WASD are used for other functions like jumping and running.  Steam provides a “Keyboard (WASD) and mouse” preset with this configuration in mind – the rest of the buttons can be tweaked as required for the particular game.

Point-and-click adventure (Deponia)

As the name suggests, these games rely almost entirely on the mouse, with a few keys used for opening inventory and menus.  I found a community configuration for Deponia that had the mouse and just the few other functions required mapped to the buttons.

Isometric RPG (Pillars of Eternity)

Once again, these games tend to be mouse-driven to tell your characters where to go and what attacks to use, as well as to manage inventory and equipment, and select dialogue options.  A community configuration provided a nice mouse set up, with the added bonus of the right touch pad being used to move the view around (usually this might be controlled by right-clicking the mouse or using arrow keys).  One slight downfall on this sort of game is that they often make use of a large number of use-defined hotkeys, of which the controller is limited.  However, it is possible to use the grip buttons as modifiers, so “A” could be bound to the “1” key, “Left Grip+A” to the “5” key, and “Right Grip+A” to the “9” key, allowing for more hotkeys to be used.

First-person shooter, Steam Controller Support (Portal 2)

A final bonus of the Steam Controller is that Valve are making an API available for developers to bake support right into the game.  In this case, rather than mapping to gamepad/mouse buttons or keyboard keys, the controller can be mapped straight to available functions in the game (e.g. “Orange Portal” instead of “Mouse 1”).  Also, the game can display appropriate hints like “Left Grip to duck” rather than “Button 15 to duck”.  I expect we’ll be seeing more of this.

The verdict

I’m yet to find a game that I’m not comfortable playing with the Steam Controller and the right configuration.  While certain aspects of the controller take some getting used to, Valve have excelled themselves, to the point where I wouldn’t even consider using another controller for my PC gaming. 10/10.

Setting up a Steam Controller on Ubuntu

I recently received my pre-ordered Steam Controller, which I’ve be itching to use with my home-built HTPC/Steam Machine.  I do all my gaming (and everything else) on Ubuntu, and discovered at that the time the pre-releases were shipped, there was a bit of tweaking to do to get the controller working.  Thanks go to this Ask Ubuntu question and this Steam Community thread.  If you are using Ubuntu 15.10 or later, steps 1-3 shouldn’t be necessary, and hopefully a fix will be in place by the time the controllers are on general sale.

  1. Before you plug in your controller, edit (or create) file /lib/udev/rules.d/99-steam-controller-perms.rules.  This already existed on my system.  Edit to to contain at least these lines (it may also contain others):
    SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", MODE="0666" 
    
    KERNEL=="uinput", MODE="0660", GROUP="yourusernamehere", OPTIONS+="static_node=uinput"
    

    Make sure you change “yourusernamehere” to the user you run steam as, or if there are several, the name of a group containing them all.  This will ensure that the controller is correctly recognised and can emulate a gamepad.

  2. Run sudo apt-get install python3-autopilot.  This will install some packages which will add you to a group with write access to /dev/uinput.  This is necessary for the controller to work properly.
  3. Reboot
  4. Plug in your steam controller dongle.
  5. Press the Steam button. It should beep and light up (if not, check the batteries are installed).
  6. Launch Steam.  You should see a notification that your controller is detected.
  7. Launch Big Picture Mode (if you don’t, Steam will tell you to).
  8. Ensure the Steam overlay is enabled in Settings -> In-game.  If not, your controller configurations will simply not work.
  9. Select a game, pick a controller configuration, and play!