bookmark_borderSteam Proton compatibility layer: The holy grail for Linux gaming?

On 21th August 2018, Valve announced that they are soon start to distribute a new compatibility layer. It’s exclusive for Linux and is called Proton. Proton can be compared to WINE but it comes with support from Valve. That means that if a game is official listed as „supported by Proton“ (the real name of the feature is Steam Link) it will work with your Linux gaming machine. This is unlike WINE where you don’t get support for games you want to play. After some days of testing and reading through opinions on the internet about this compatibilty layer, I want to make a statement how I think and feel about Proton.

About Proton

Proton is developed by Valve in cooperation with Codeweavers. Codeweavers is a long time WINE supporter and offers the software Crossover for MAC and Linux. Crossover is WINE bundled with a easy to use GUI and some additional features like guided setup. Codeweavers does support dozens of programs and games which are guaranteed to work with Crossover. Therefore it just makes sense that Valve created Proton with the help of the professionals from Codeweavers.

Why not simply use WINE?

This might be something a lot of people are questioning themselves. Why not simply use WINE? Well, Proton has some great advantages in direct comparison to WINE. In my short period of testing, I can say that selected DirectX 11 and DirectX 12 games are working with Proton while they fail to start with WINE. A popular example here is The Witcher 3. Also the integration of a wireless XBox 360 controller is flawlessly. You simply plug in your controller and use it. You don’t have to remap buttons or tell the driver to mimic as an x-pad or something get it working. But these two things are just small parts of a whole bigger picture of exciting features in direct comparison to WINE.

It really feels like a native application

Ever game I’ve tested so far (including Blood Bowl 2, Warhammer 40k Dawn of War: Soulstorm and Dead by Daylight) was simply installed like a „normal“ Steam game. Click install, wait for the download and click „Play“ afterwards. Dependencies (like DirectX or Microsofts Visual C++ Runtime) are automatically installed and prepared. This is totally different from installing every single game in a different WINE Prefix in order to install the needed DLLs clean and separated. With that being said, you could see Proton as a modified WINE which also maintains and controls each prefix on it’s own. For me, this is fantastic. I really abhorred that I had to create a new WINE prefix for every Steam game I wanted to install. I know that I could have installed all games in just one WINE prefix as well. But sometimes the different needed DLLs for each game came in each others way which resulted in a game crashing or simply being unplayable.

Performance, performance, performance …

The performance with Proton is really good keeping in mind that this is a compatibility layer. Is it better than with WINE? I would say Yes at least for the games I’ve tested so far. Is it equals to  Windows? I doubt it. But for somebody who uses WINE for a long time, I was happy to get at least up to 60% of the performance in direct comparison to Windows. With Proton however, I would say we are near 80-85% of the performance. That’s impressive and I’m excited to see the further development.

Is this the end for native ports?

This is something which came up in my mind several times. A lot of Linux enthusiasts are calling this argument as their number one reason against Proton. Is such a implementation really the end for future native game ports under Linux? In my humble opinion the following three scenarios could happen:

  1. If Microsoft doesn’t fully lock up their operating system (something Valve was afraid of when they started to work on Steam OS), Proton could be the future for a lot of Linux games, because the developers don’t want to put in that much effort in a port for the 1% of Linux users. With Proton these developers are at least „ready“ to support Linux that way.
  2. Proton is the entry point for developers to create native Linux ports in the future. Every game bought with a Linux client and played with Proton is counted as a Linux sale (according to a question from GamingOnLinux to Valve). With the increasing number of sales, developers start to provide native ports because it’s „worth it“.
  3. Proton will be terminated due to the lack of interest by the users or game developers.

If I would have to pick one of these scenarios, I would say that it’s most likely that the first one will happen. And I would be totally fine with that.

When is Proton finally released?

Proton is in the latest Steam Beta client. Everyone can participate in this beta be enabling it in the settings section of the Steam client:
Setting to enable Valve Proton
Afterwards you will be able to install and play the official supported games which are at the time of writing:

  • Beat Saber
  • Bejeweled 2 Deluxe
  • Doki Doki Literature Club!
  • DOOM
  • DOOM II: Hell on Earth
  • DOOM VFR
  • Fallout Shelter
  • FATE
  • FINAL FANTASY VI
  • Geometry Dash
  • Google Earth VR
  • Into The Breach
  • Magic: The Gathering – Duels of the Planeswalkers 2012
  • Magic: The Gathering – Duels of the Planeswalkers 2013
  • Mount & Blade
  • Mount & Blade: With Fire & Sword
  • NieR: Automata
  • PAYDAY: The Heist
  • QUAKE
  • S.T.A.L.K.E.R.: Shadow of Chernobyl
  • Star Wars: Battlefront 2
  • Tekken 7
  • The Last Remnant
  • Tropico 4
  • Ultimate Doom
  • Warhammer 40,000: Dawn of War – Dark Crusade
  • Warhammer 40,000: Dawn of War – Soulstorm

If you want to start all Windows games with Proton, you have to check the additional checkbox in the Steam settings:
Settings to enable Valve Proton for all games

What about „non-steam“ games?

I also tried to add a „non-steam“ Windows executable. In this case it was Guild Wars 2. Right now it seems like this isn’t working. Steam tries to start the Guild Wars 2 executable as a Linux executable which results in an error of course. However, Valve is providing a build instruction on their official GitHub repository. After this build is done, you should be able to use Proton on the command line just like WINE.

Is Steam Link / Streaming supported?

I’ve tested Blood Bowl 2 on Linux with Proton on a Steam Link in my local network. It worked and was handled like starting a native Linux game. I didn’t found a note in the official release statement from Valve, but it seems like Valve considered Proton to work over Steam Link / Streaming in the first place. This is great and just one more reason to feel that Valve means it serious with Proton in the future.

The Windows game XYZ runs with Proton. How to get it white listed?

Valve is actively asking users for their help with testing and reporting games. If you tested a game with Proton (that isn’t official supported right now) and it works, you can go to the GitHub repository of Proton and report a white list request under the issues section. However, there are a lot of people actually reporting bugs and white list request. Thus it can take some time until your request is processed.

Conclusion

Will Proton push developers to use the compatibility layer instead of providing native ports? A lot of them might actually go this route. But is this bad for Linux gaming in general? In my humble opinion: No!
I can remember of statements made by Bethesda that native Linux ports aren’t worth it (right now) and therefore they will not support it. Jon Carmack (former developer at ID software) stated similar things and recommended to improve WINE instead of native ports back in 2013. With Proton we might see games by such developers coming to Linux as well. Think about it, a company could reach an additional ~1% of the whole Steam user base with an additional time effort of round about 10 hours or so. A native port would be way more time consuming and thus expensive. Therefore they are not providing a native port but they are welcoming such a solution like Proton. You see where this is going, right? Hopefully we will see a lot of developers welcoming this solution and therefore supporting Linux. However, we will also see a lot of developers saying „Why a native port when we can use Proton?“. To be honest, I really don’t care anymore, as long as Proton is giving me a overall good to ok performance and the game runs as excepted (especially multiplayer games with anti cheat systems like „Easy Anti Cheat“ could be a obstacle here). Don’t get me wrong, I would love to see more native Linux ports. However, I simply waited too long for companies to support Linux. My patience has been reduced to a minimum now. Even companies like SI Games which are developing the Football Manager and Football Manger Touch series are dropping Linux support. With the 2019 release of Football Manager and the Touch variant they will provide no more Linux version. The reason? The low sales didn’t covered the additional dev costs.

Further links

bookmark_borderContent servers unreachable: Steam does not download

If your Steam client gives you the error An error occurred while installing Your Game (content servers unreachable) whenever you want to update or install a game, you might have to check your network connection in the first place. However, if the error isn’t related to your network, this quick and easy workaround will help you to get rid of the error.

Who is affected by this problem?

Basically everyone can be affected by this. I for myself got confronted with this problem twice under Windows and almost every time when I’m using the Steam Windows version under Linux with WINE. Because of this fact, this article only covers Windows and Steam WINE installations. If you’re a user of the Mac or Linux native Steam client, this workaround could help as well. However, you have to find the specific file (which has to be edited later on) on your own.

Steam content servers unreachable error message
Steam yells „content servers unreachable“ in a WINE prefix

The workaround

This workaround has originally brought up by a user in the askubuntu.com forums. We have to add a list of servers to the config.vdf file from your Steam installation. This list of servers are representing the content servers provided by Valve. Navigate to the config directory within the Steam installation directory. It is located under Windows by default in C:\Program Files (x86)\Steam\config. For a default Linux WINE prefix you have to navigate to $HOME/.wine/drive_c/Program Files (x86)/Steam/config. Search for a file called config.vdf. Open the file with the Notepad editor under Windows or with the editor you’re typically use under Linux and add the following line after the line starting with the word cip:

"CS" "valve511.steamcontent.com;valve530.steamcontent.com;valve548.steamcontent.com;valve539.steamcontent.com;valve519.steamcontent.com;valve555.steamcontent.com;valve504.steamcontent.com;valve529.steamcontent.com;valve558.steamcontent.com;valve500.steamcontent.com;valve561.steamcontent.com;valve532.steamcontent.com;valve540.steamcontent.com;valve502.steamcontent.com;valve544.steamcontent.com;valve528.steamcontent.com;valve556.steamcontent.com;valve520.steamcontent.com;valve542.steamcontent.com;valve538.steamcontent.com;valve551.steamcontent.com;valve521.steamcontent.com;valve564.steamcontent.com;valve516.steamcontent.com;valve535.steamcontent.com;valve541.steamcontent.com;valve533.steamcontent.com;valve536.steamcontent.com;valve557.steamcontent.com;valve559.steamcontent.com;valve537.steamcontent.com;valve508.steamcontent.com;valve525.steamcontent.com;valve565.steamcontent.com;valve566.steamcontent.com;valve514.steamcontent.com;valve545.steamcontent.com;valve517.steamcontent.com;valve547.steamcontent.com;valve549.steamcontent.com;valve503.steamcontent.com;valve515.steamcontent.com;valve506.steamcontent.com;valve562.steamcontent.com;valve526.steamcontent.com;valve543.steamcontent.com;valve522.steamcontent.com;valve518.steamcontent.com;valve509.steamcontent.com;valve550.steamcontent.com;valve552.steamcontent.com;valve505.steamcontent.com;valve553.steamcontent.com;valve512.steamcontent.com;valve546.steamcontent.com;valve554.steamcontent.com;valve510.steamcontent.com;valve563.steamcontent.com;valve501.steamcontent.com;valve531.steamcontent.com;valve523.steamcontent.com;valve524.steamcontent.com;valve507.steamcontent.com;valve560.steamcontent.com;valve567.steamcontent.com;valve513.steamcontent.com;valve1601.steamcontent.com;valve164.steamcontent.com;valve1615.steamcontent.com;valve1602.steamcontent.com;valve1604.steamcontent.com;valve1608.steamcontent.com;valve1603.steamcontent.com;valve1606.steamcontent.com;valve1609.steamcontent.com;valve1618.steamcontent.com;valve1617.steamcontent.com;valve1613.steamcontent.com;valve1607.steamcontent.com;valve1611.steamcontent.com;valve1614.steamcontent.com;valve1619.steamcontent.com;valve1616.steamcontent.com;valve1612.steamcontent.com;valve1610.steamcontent.com;valve165.steamcontent.com;valve1605.steamcontent.com;valve954.steamcontent.com;valve955.steamcontent.com;valve904.steamcontent.com;valve901.steamcontent.com;valve957.steamcontent.com;valve953.steamcontent.com;valve956.steamcontent.com;valve950.steamcontent.com;valve905.steamcontent.com;valve952.steamcontent.com;valve902.steamcontent.com;valve907.steamcontent.com;valve958.steamcontent.com

Save and close the file. If you’re a Windows user you may see a message saying that you can’t save the edited file at the given location. If so, simply save the new config.vdf file on your desktop. Move the so saved file to the Steam config directory afterwards.

Conclusion

I’m unable to tell you why Steam sometimes isn’t able to find the Content servers on it’s own. The list above represents the content servers provided by Valve. The list of servers could change in the future of course. But right now, the workaround gives you the capability to download and update your Steam games again.
If you know more about this issue, especially why it actually occurs on some installations, please let me know in the comment section below.

Further links

 

bookmark_borderUse a XBox 360 Wireless Controller under Linux

NOTE: This article is now outdated. Normally you don’t need to install the xboxdrv anymore. A recent Linux kernel comes with a driver already included. So it’s simple Plug ’n Play. You can now also pair more than one wireless controller to one receiver.
A lot of games today need a controller … yes, even on PC you can’t ignore that fact. One of the best controllers out there is (IMHO) the XBox 360 Wireless Controller from Microsoft. The Wired version of this controller can be easily connected through Plug & Play under Linux. The standard loaded driver xpad then can handle it. But what do you have to do if the controller is the wireless Version?

First things first

You need of course a receiver which gets all the signals that are sent from your controller. This receiver is (normally) not included when you’re buying the controller. The receiver also comes from Microsoft and costs round about 20 $. I have also seen some third party products here which are way more cheaper, but actually I really can’t say if they are working that well.
After you plugged in the receiver, the kernel will recognize it but yet it is actually unable to do anything.

Install the driver

As I mentioned before, if you’re useing the wired controller, then you have to nothing to be worried about. Everything will work out of the box.
Anyways, for the wireless XBox 360 Controller you need a driver which is called ‚xboxdrv‘.
Under Ubuntu and Debian this driver can be easily installed with apt. This means the driver is already available in the repositorys:

sudo apt-get install xboxdrv

In openSUSE the driver is also in the official repositorys as long as you are on openSUSE Tumbleweed or Leap (>= 42.1):

sudo zypper install xboxdrv

For Fedora, Arch and any other distribution you have to check for your owner whether you need a extra repository for the driver or not.

Start the driver

Starting the driver with default settings is rather simple. The following command starts the driver with default settings:

sudo xboxdrv

If you didn’t unloaded the xpad driver before you will run into an error message that the driver couldn’t be loaded because the xpad driver is already loaded.
To unload the xpad module you can use ‚rmmod xpad‘ or let the xboxdrv do that for you:

sudo xboxdrv --detach-kernel-driver

Now you should see something like the following output on your terminal window:
Controller: Xbox 360 Wireless Receiver
Vendor/Product: 045e:0719
USB Path: 005:004
Wireless Port: 0
Controller Type: Xbox360 (wireless)

Your Xbox/Xbox360 controller should now be available as:
/dev/input/js0
/dev/input/event19
Press Ctrl-C to quit, use ‚–silent‘ to suppress the event output
So this means, you’re ready to go. Useing buttons and pads on the controller should create tons of output which you can ignore. Do disable this output add the ‚–silent‘ option to the xboxdrv command:
sudo xboxdrv --detach-kernel-driver --silent
Now you should be able to use your XBox 360 Wireless controller with almost every native Linux game which is available.

Using xboxdrv with WINE

For using xboxdrv with WINE there are a lot of tutorials out there. Some of them recommend to install a mapper which will map controller keys to keyboard keys and many other solutions. For me the simpelst way was to simply add the following parameter to the xboxdrv command line:

sudo xboxdrv --detach-kernel-driver --silent --mimic-xpad

The „–mimic-xpad“ option says the xboxdrv driver that he should act and perform like a controller that is connected to your Linux box as an xpad Controller. Now you should be also able to use your controller under WINE games.
NOTE: I recently bought Dark Souls: Prepare to die edition from the Humble Bundle Sping Sale. This game does not come native to Linux but works well here with WINE. To get the correct mapping of your XBox 360 Wireless controller here you have to start xboxdrv like this:

sudo xboxdrv --detach-kernel-driver --silent --mimic-xpad --buttonmap 1=3,3=1,2=4,4=2,rt=start,lt=back,start=rt,back=lt --ui-buttonmap guide=KEY_LEFTSHIFT+KEY_TAB,rt=KEY_END,lt=KEY_G

If you want to play Dark Souls I with a controller on your Linux box with WINE, you have to add the „buttonmap“ section to your xboxdrv command. Otherwise the B-Button in game will be the X-Button on your wireless controller for e.g.
Of course, this „buttonmap“ section only works with Dark Souls I for now. Other games, other button mapping. You should consult the AppDB from WINE to find the right button mapping for your game.

bookmark_borderCrysis 2 under Linux with WINE

Hello Blog Readers,
at first, no it is not a April joke! Crysis 2 is really running under WINE and at all with acceptable framerate.
Before I will begin with the How To, I have to say, that there are some problems with the mouse in Game. I’m making this How To from a base of a adjusted WINE Version (patched WINE version).
Again, I’ve precompiled this Version for Linux Mint 10, Debian Testing and Ubuntu 10.10 64-Bit. I’ve posted it at my blog here: http://unixblogger.wordpress.com/2011/04/01/wine-1-3-16-with-the-xinput-patch-released/
So, if you want to use this tutorial, you have to use my additional version of WINE (this Version does not overrides any other installed WINE Versions on your system) or, you build it on your own. For everbody who want to do the last one, the patch I’ve used can be grabbed from here: http://bugs2.winehq.org/attachment.cgi?id=33574
Let us begin!!
Using winetricks for making the requirements of the game
Download winetricks at first. The best way to do that, is to use the terminal and the wget download command:

wget http://winetricks.org/winetricks

After a short download time, you should have this script on your hard drive. After that, make it executable:

chmod +x winetricks

Now, winetricks is ready to use. For the next steps, you can use a fresh WINEPREFIX (for e. g. WINEPREFIX=/home/USERNAME/.wine/Crysis\ 2/) or just use the standard PREFIX at all. Remember, that if you will use a fresh WINEPREFIX, you have to set this WINEPREFIX for every command, that has to do with Crysis 2 (Installation, Start the game and so on …). I recommend you to use a fresh WINEPREFIX.
Install now the requirements with the following command:

./winetricks vcrun2005sp1 vcrun2008 d3dx9 d3dx10 d3dxof

There are some installers, that are already known in Windows. So just click it on your way (Next–>Next–>Finish …).
Making some tweaks
To get a little bit more performance and lesser graphical issues in the game, we have to do some tweaks at the WINE registry. To do that, easily starte the WINE registry editor. If your have build WINE on your own, you have to enter

regedit

If you will use my version you have to enter the following command

/opt/winexinp/bin/regedit

Now, navigate to

\HKEY_CURRENT_USER\Software\Wine\Direct3D

If this directory (Key) does actually not exists, just create it. Now create the following values:

DirectDrawRenderer = opengl
OffscreenRenderingMode = fbo
UseGLSL = disabled
VideoMemorySize = RAM OF YOUR GRAPHIC CARD

That’s it! Now you can install Crysis 2 on the way you know. don’t forget to use /opt/winexinp/bin/wine for installing and playing, when you will use my read to go version.
Enjoy the game and give me feedback.
Greetings
ReCon
EDIT (2011.04.04): I have to add, that you have to start the Nanosuite Showroom under the Main menu „Extras“ before you start the game. You will have to do this every first start of the game before you play the campaign or multiplayer. Otherwise you will get extremly graphical glitches.

bookmark_borderWINE 1.3.16 with the xinput patch released

Download Usage Just easily use

/opt/winexinp/bin/wine
instead of the normal „wine“ command. Same go with winecfg
/opt/wineinxp/bin/winecfg
and so on … Known games which this version will help Actually I know, that this version will help by Crysis 2 and Medal of Honor 2010. Have fun 🙂 Greetings ReCon PS: Patch that I’ve used in this version from the WINE AppDB: http://bugs2.winehq.org/attachment.cgi?id=33574