Valve’s Steam client for Linux
It was august 2012 when I wrote an article about the viability of commercial games on Linux. In particular, I was talking about the new Steam client for Linux which Valve Software was developing. Read that article now if you have not seen it yet, it will give insight as to where I stand with regard to the use of commercial software on Linux.
It took a while, and then Valve opened a limited Beta for their Steam client, inviting 1000 users at random, but targeting users of the Ubuntu distribution for obvious reasons: Valve wants to create a firm foothold in Linux now that they have “officially” denounced Windows 8 as a platform for which they will develop their software and games. Gabe Newell’s criticism of Windows 8 is well-known by now and in October of this year, Valve issued a similar statement during the Ubuntu Developer Summit.
And Ubuntu has the biggest potential user base for game fans – let’s face it, more people move from Windows to Ubuntu than to Slackware, so commercially Valve is doing the smart thing.
When the Beta program kicked off, people found out relatively fast that the Steam client had limited functionality, even for people who were not part of the initial beta. I quickly hacked together a set of instructions based on the tests I did.
Last week, the Steam for Linux Beta program opened up to a much wider audience and I received my invitation email as well (along with many more Slackers). It looks like there will not be any limitations at all after next week, so I decided to use a little of my holiday to properly package the Steam Client for Linux. Obviously, the client software is distributed as binary-only. Furthermore, it is 32-bit software and developed on Ubuntu. Nevertheless, it is not hard at all to run the Steam client on Slackware. I created a 32-bit package, see http://www.slackware.com/~alien/slackbuilds/steamclient/ , and added some additional instructions in a README.Slackware file:
The Steam client is primarily targeting Ubuntu, so in order to make it work on Slackware, the package ships with a slightly modified steam startup script. You will also have to install several dependencies: - pulseaudio - speex - json-c - OpenAL - flashplayer-plugin These are all available as SlackBuild scripts on http://slackbuilds.org, while OpenAL and flashplayer-plugin packages can be found in my own repository at http://slackware.com/~alien/slackbuilds/ too. Note that the Steam client currently is 32-bit only. If you are running a 64-bit Slackware you must add multilib capability to it first. Then, you need to add several more 'compat32' packages. In addition to 'compat32' versions of the aforementioned dependencies, you also need to install 'compat32' packages for: - flac - libogg - libvorbis - oxygen-gtk2 Note that before building pulseaudio, its README instructs you to create a "pulse" user and group: # groupadd -g 216 pulse # useradd -u 216 -g pulse -d /var/lib/pulse -m pulse However, there is no need to actually _start_ the pulseaudio server. You can prevent this by running: # chmod -x /etc/rc.d/rc.pulseaudio The Steam client is dynamically linked against pulseaudio libraries, but my modification to the steam startup script will actually force it to use Slackware's ALSA for audio output. Pulseaudio will not be used. In order to run the Steam client you will probably need a Nvidia or Ati card with proprietary drivers. I would like to hear from people who are able to start Steam and play a game using open source drivers.
I have added the required dependency packages (including those required for multilib) in a separate “deps” directory of that steamclient package. Note that my old hacks of creating a symlink to the “/sbin/pidof” binary and exporting several variables is no longer needed, the steam start-up script does all of that now.
Installing the steamclient package, will get you a “Steam” icon in your desktop menu. Alternatively you can type “steam” in a terminal to start the client.You will see it downloading updates first, and then it allows you to connect to your Steam account.
When you are connected to your Steam account you will see the Steam Store and a “Linux” menu which is exclusive to the Linux client. You can of course do anything (purchases, community chat etc) which you would also do in the Windows client or the web interface.
You can then check out your own virtual “Library” which will contain the games you have purchased or which you could add because they are free to play. The Linux Beta shows two games here, the “Team Fortress Beta” which is an online shooter and “World of Goo Demo”, both of which are free.
Note that I modified the steam startup script to use ALSA as audio output. The pulseaudio libraries are required because the Steam binaries link against them but PulseAudio is not used for sound. Also note that if your default ALSA soundcard is not “hw:0,0″ you may have to add one more variable. The AUDIODEV variable defines which audiodevice ALSA should use instead of “default”. You can set additional environment variables in a file” ~/.steam4slackware “. This is what I have in that file:
$ cat ~/.steam4slackware
This tells ALSA to use the first “hw” device available. The default value for AUDIODEV is “default”.
One more quirk was that I had to stop any program which was playing audio (like VLC) before starting the Steam client, or else the Steam games would not have sound…