Looking to test the waters with Linux gaming and don't want to lose access to your favourite Windows games? Here's a simple no-nonsense guide to actually using Steam Play.
First of all, what is Steam Play?
In simple terms: it's a feature that allows you to run compatibility layers in the Linux version of the Steam client announced by Valve (here) back in August 2018. Proton is one such compatibility layer, allowing Windows games to be played on Linux. Proton bundles together other projects like Wine, DXVK and more under one roof so there's no fussing around. So we're clear: Steam Play is the feature, Proton is the software you run.
Some games are flawless, some have major issues. Thousands of games are currently reported to work!
How can I check compatibility with my Windows games?
Take a look on ProtonDB. Enter the game you wish to see and it will give it a rating from Platinum down to Gold, Silver, Bronze and Borked. If a game is rated Platinum from the user reports, you're good to go. If it's rated Gold, a lot of the time it will still work without issues but it may need some tweaks. Anything below Gold, is likely to require some manual effort.
For the Steam Deck specifically, Valve has their own rating system with Deck Verified. Currently you can see what titles are Verified on SteamDB or on Steam Store pages like this when you scroll down on the right side of the store page:
There's also the Augmented Steam plugin, which supports Firefox and Chrome (a continuation of Enhanced Steam, no longer maintained) which adds a ProtonDB link to store pages and tons of other things. Doesn't show the rating though yet.
How do I enable Steam Play?
If you're on Steam Deck, it's enabled out of the box. If you're on Linux desktop: go into your Settings by clicking Steam in the top left of the Steam client, hitting Settings and then find Steam Play at the bottom of the list as seen below:
What does each checkbox actually do?
- The first tickbox originally enabled Steam Play only for those titles that Valve have added to their whitelist (see the whitelist on SteamDB here). This is a list of titles picked by Valve, that should "just work" with a version of Steam Play Valve picks for you. Valve don't actually do this any more, so now it's just to turn Steam Play on.
- The second tickbox, enables Steam Play to be used on all of your games in your Steam library.
However, you can actually force a specific version of Proton (the name of the Steam Play tool) on any item in your Steam library. By doing this:
This is handy for two reasons:
- If you don't tick the second box in the Steam Play settings, your Linux supported games and Windows games remain in separated lists. This allows you to pick individual games to try.
- If a game on the whitelist runs better in a newer version of Proton, you can pick it yourself.
What else do I need?
Up to date graphics drivers are essential! If you're on Ubuntu or an Ubuntu-based distribution like Linux Mint, elementary OS and others Valve's own guide is your best bet.
How to check if Proton installed?
It should be done automatically by Steam. If you search for "proton" in your Steam Library, it should show a list of the currently available official versions of Proton.
You should also check you have the "Steam Linux Runtime" and "Steam Linux Runtime - Soldier" installed. Search for them in your Steam Library and ensure they are installed.
It's automatic like other games and applications on Steam. It will show up in your Steam Downloads.
Sounds good, what are the drawbacks?
For a number of online-only competitive games, anti-cheat systems often prevent the Windows game working with Proton. Easy Anti-Cheat and BattlEye enabled games are ones to especially avoid right now. Easy Anti-Cheat has announced it now works with Proton (and later it became even easier) but developers need to enable it. BattlEye also announced support but again developers need to enable it. It may be a long time before developers do it.
Those are just two very well-known examples, there's a lot of different systems out there. As always, check first on ProtonDB like mentioned above. However, games that use Denuvo should be fine.
Don't use the NTFS (Windows default) file system for your Windows games, using a Linux filesystem like Ext4 will prevent some odd issues. It's always best to have a normal Linux filesystem for storing games that are run on Linux. Sharing a drive with Windows is messy.
Additionally, you're likely to get less performance than you would on Windows. Although, there are cases where the game will perform just as well. If you see Steam saying it's compiling shaders when trying to launch a game, let it do it, otherwise performance will be lower and you'll see lots more stuttering.
What are DXVK and VKD3D-Proton?
- DXVK - this translates Direct3D 9, 10 and 11 into Vulkan.
- VKD3D-Proton - this translates Direct3D 12 into Vulkan.
Why does Direct3D / DirectX need to be translated? They're proprietary tech from Microsoft and only available on Microsoft platforms like Windows. While Vulkan is cross-platform open standard available across many platforms.
What do I do if I have issues?
Do Windows games purchased and played in Steam Play Proton count as Linux sales?
Yes they do. Providing the majority of your time playing it was on Linux. More info on our Steam Tracker.
Can Steam Play be forced onto native Linux games?
Yes! Simply follow the same method above to force it.
Why would you want to do that? The Linux version might be outdated, perform badly, broken on a brand new distribution or any number of reasons. Steam Play at least gives you a possible backup option when things like that happen.
Yes! On Steam, you can add non-Steam games and also force Steam Play on them using the same method as shown above. Be sure you actually have Proton and "Steam Linux Runtime - Soldier" installed, otherwise you may have issues (bug report) with external games as they don't pull them in automatically like Steam games do.
Simply add a game installed outside of Steam (let's say a Windows game from itch.io or GOG), add it to your Steam library. In this example, I am using Syberia II. Do note the extra step that's often required, as Steam likes to cut off the path name to a Windows executable if there's a space in a folder name. It's easy enough to fix, as the rest of it is usually hidden in the "Set launch options..." button so you can copy and paste it. Here's how to do it all:
What is Proton Experimental, Proton Hotfix, Proton Next?
There's a few version of the official Proton now so here's a brief explanation:
- Proton Experimental - Gets regular updates, with features and fixes not ready for everyone and can include some breaking changes that need new driver versions.
- Proton Next - The upcoming new stable version of Proton that needs testing (not always available).
- Proton Hotfix - A few extra fixes for specific games.
- Proton 7.0-x - The current stable series of Proton used for most Windows games on Linux / Steam Deck.
- There's also the Proton 6.3 series, Proton 5.0 series, Proton 4.2 and so on - these are all older stable versions left up in case specific games need them.
GE-Proton (formerly Proton-GE) is a community-built version of Proton. Since it's open source, anyone can build their own version. GE-Proton is an effort to bring in specific fixes and enhancements as quickly as possible. Although it sees less testing and can come with other issues, sometimes it's needed to get the latest Windows games running on Linux before Valve has time to fix them in the official Proton releases.
What about Proton outside of Steam?
Proton (the software) is open source and available on GitHub. However, using it outside of Steam is not recommended and can cause issues, especially as newer versions of Proton are built against the latest Steam Linux Runtime. Instead, you can go for Wine directly (remember, Proton is Wine + extras). To ease the process the game launcher Lutris can make it a lot friendlier, you can also try the Bottles app and even the Heroic Games Launcher.
How do you force Steam to download a Native Linux game?
If, for whatever reason, you wish to ensure Steam downloads a Native Linux build of a game (if one exists), there is a way to force that. In the Properties -> Compatibility menu, simply select "Steam Linux Runtime", which is a container system for Linux Native builds and so it makes it download that. If that option doesn't appear, it likely doesn't have a Linux build.
Finally here's a video quickly going over some points: