The Definitive Guide to Steam Play Tools

What is Proton and how is it different from GE-Proton? And what about Luxtorpeda? How do they work and how do you use them?

The Definitive Guide to Steam Play Tools
There are a lot of options when it comes to Proton. I'm here to help.

You’ve probably heard of Steam Play. It’s how Valve makes Windows games playable on Linux/Steam OS. But if you’ve ever taken a deeper look into it, you might have seen mentions of "Proton 9.0-4e," "Proton Experimental," or even "GE-Proton."

You might have questions like:

Well, these are excellent questions and in this post I’m going to explain exactly what each version is and what makes them different from the other versions.

But first, let’s discuss exactly why we need compatibility layers.

💡
In this article, I'm going to refer to compatibility layers as “compats” for the sake of brevity. Do note, however, that nobody actually calls them compats.

Why We Need Compats

Each Operating System has its own architecture which solve common issues that most programs need order to function. Things like loading and saving data to disk, multitasking, accessing hardware features, and more.

Without an OS, each program would need to have built-in support for specific pieces of hardware. You might remember back in the MS-DOS days when games would only support a handful of audio cards, for example.

Nobody misses this.

There are two key ways that Operating Systems handle this abstraction. The first is known as a syscall and the other is an API or ABI (which I’ll refer to as an AxI call).

The difference between the two can be subtle but, to simplify things, an AxI call is generally stable and is guaranteed to provide the same results across multiple versions of the OS. Meanwhile a syscall may provide different results when called across different OS versions. At least, this is how things work in the Linux world.

Importantly, though, syscalls on Linux, Mac, and Windows are all vastly different from each other. Some OSs also support proprietary and non-standard AxIs. Think DirectX on Windows and and Metal macOS/iOS. There are also standard APIs. Things like OpenGL and Vulkan. We'll talk about those more in a minute.

Here's a simplified example of how a game uses Windows APIs to talk with hardware.

This is why we need compatibility layers. Because an open() command on Linux is a ReadFile() on Windows. Many Windows games also use DirectX which is an API that’s exclusive to Windows. So if you run a Windows game on Linux without a compat layer, the game will try to call ReadFile() or a DirectX method—where it doesn't exists—and it will crash.

Proton (and WINE) implement these all these Windows syscalls and AxIs on Linux. For the most part this is extremely performant and transparent to an application.

Here you can see that Proton is providing the DirectX and other API calls and redirecting them to the Linux equivalent APIs.

I can already hear some folks asking, "but wait, if we're adding another layer of translation into the mix, won't that cause performance loss/add bloat to my system?"

The short answer is "eh."

The long answer is "it depends."

Generally speaking, if a game is compiled for your computer then it's compiled for an x86_64 CPU. The binary code is running natively on the CPU so this isn't like emulation where there's software emulating another CPU's instruction set. In many instances, we're literally only talking about software shims that listen for Windows syscalls/AxI calls and translating them to Linux calls.

There definitely can be slowdown when translating complex graphical operations. Things like DirectX, for example. But given the complexity and suboptimal design of DirectX and the speedy, low-level architecture of Vulkan... it's often the case that the delta between native Dx vs. Dx->Vulkan translation is negligible.

But here's the cool thing: if a Windows game has a Vulkan rendering pipeline instead of DirectX, then it doesn't need to be translated. And that's how Vulkan games running under Proton will meet (and sometimes exceed) their Windows benchmarks on the same hardware!

So now that we're up-to-speed on the design of things, let's talk about the various compatibility tools that are out there.

WINE is the grandfather of all compats. As far as I’m aware, it was the first attempt at building a compat layer and it stays true to its original vision: supporting Windows applications. So let's talk about it.

WINE

WINE (which stands for WINE Is Not an Emulator) is a compatibility layer for Windows applications on Linux. Windows applications take many forms. There are office and productivity suites, there are creative tools like Photoshop and FL Studio, there are video editors like DaVinci Resolve, web browsers like Firefox, and, yes, games.

WINE is developed to support all of them.

So, what’s unique about WINE?

  • WINE is a general purpose tool which is developed for the broadest support.
  • It's cross-platform, targeting both Linux and macOS.
  • We get a major release of WINE once a year with fixes and smaller features added in the interim.
  • WINE focuses on user-space libraries and AxIs. This means that it doesn’t use speed-boosting utilities like ESYNC or FSYNC which are non-standard and focused on gaming. This can lead to certain games running slower through WINE than they do through Proton.

Proton

Proton is Valve’s gaming-focused fork of WINE. It’s open source—just like WINE. Proton is a collaboration between Valve, their contractors, and CodeWeavers (the developers of WINE).

What’s unique about Proton?

  • Proton is focused on gaming. This means that it’s optimized for performance.
  • This also means that Valve will often introduce patches for Proton built for specific games.
  • It uses speed-boosting techniques and libraries like ESYNC and FSYNC to get the most performance out of games
  • New versions of Proton are issued at a much faster clip than WINE. Sometimes weekly and often alongside (or following) the release of a major game.
  • Finally, Proton is distributed with the Linux Steam client.

Proton Experimental

Proton Experimental is—as the name might imply—experimental. It’s a branch of Proton that Valve uses to roll out and test upcoming Proton features and fixes. This is great as it allows them to ensure compatibility and stability!

Experimental follows the (highly unstable) Bleeding Edge branch. Bleeding Edge is the beta branch that is not recommended for anyone other than developers.

What is a Hotfix?

Finally, you might have seen the mention of Hotfixes. This is generally a one-off update for a specific title. You’ll often see these around the time of a new game’s release. In Valve's own words:

It's a special version of Proton that contains targeted fixes for new, important games. It's used when there's no time to do a proper Stable or Experimental release. It's intended to be short lived and be phased out once the fix matures and is released as a part of one of the other flavors.

What about version numbers?

There are currently many numbered versions of Proton. The latest (as of writing) is Proton 10.0-1. This new version was released on May 2nd 2025. We usually see numbered versions on an annual basis.

Previous versions of these compats are also supported, though. Some games are built against these older versions and other titles just work better with them.

What about GE-Proton?

As I mentioned earlier, WINE and Proton are free and open source software. This lets anyone read, study, modify, or redistribute the code for their own purposes.

That’s exactly what our friend Thomas Crider (aka “GloriousEgroll”) does. He makes his own spin of Proton—called GE-Proton—that include features Valve won’t (or legally can’t) include.

GE-Proton includes fixes like better video playback support, built-in FSR hacks, NVIDIA CUDA support for PhysX and NVAPI, raw mouse input, backported WINE patches, and more.

There are other community spins of Proton and each has its own purpose.

How to use these tools?

For Proton/Proton Experimental/Proton Hotfixes you simply find the game in your library and click the gear icon:

Select the "Properties..." menu option:

Then, go to the Steam Play tab and check the "Force the use of a specific Steam Play compatibility tool" box:

C

In the select box that appears, choose the compat you want:

For third party tools like GE-Proton, Luxtorpeda and others, you’ll need to install them first using ProtonUp-Qt.

If you don’t already have it installed you can use your app store (on the Steam Deck, you should go to Desktop mode and open the Discover Store):

Install ProtonUp-Qt if you don’t have it already:

Then, in ProtonUp-Qt select the "Add version" button:

And install the tool you want:

Once you’ve installed all the compat tools you need, you can go back into Steam and change the game’s compat tool as shown above.

How do I know which compat to use?

That’s a great question! There are excellent resources out there if you need help. My preferred option is protondb.com.

Search for the game you want to play and then read the notes that other people have left. You’ll see people giving their reviews, their hardware configurations, and (crucially) on the right hand side of the review, you’ll see which version of Proton they used.

I tend to scroll through and find a consensus Proton versions over the last yea and try that version first. For example, INSIDE is rated as ProtonDB Platinum and the majority of recent reviews say that Proton 9.0-2 is the build they’re using.

Unsurprisingly, that’s actually the build that Valve recommends and automatically sets the game to use.

But what about for a game like Burnout Paradise Remastered? It’s got a Silver rating (which is actually fairly low). According to the latest posts, version 9.0-4 of Proton has no issues with the game launching if you set the -skipvideos launch option.

Now, your mileage may vary. Especially if you're referencing older ProtonDB reviews, using an obscure Linux distro, or exotic or obsolete hardware. But if you're a Steam Deck player, you're gonna have a great time!

What else can Steam Play do?

Generally speaking, when people are talking about Steam Play, they mean Proton. However, there are other utilities out there that build upon the Linux Steam Client’s support for compatibility layers. They deserve a mention here, because they do cool things.

There are two that I want to highlight. The first is Luxtorpeda. I wrote an article about it a few years ago. To sum it up, though, Luxtorpeda is a tool that allows you to substitute the Windows executables of games on Steam for native, fan-made Linux binaries!

I can't understate how much I love this. You can launch a game like Star Wars: Jedi Knight - Jedi Academy using the native Linux port OpenJK!

Gratuitous lightsaber noise

Or maybe play your Steam copy of Roller Coaster Tycoon 2 using the latest build of OpenRCT2!

Hello, Marcel Vos.

There's a whole list of games that are supported by Luxtorpeda which I recommend you consult. Especially if you're a as big a fan of retro PC games as I am.

My favorite thing about Luxtorpeda, though, is that you just set it as the Steam Play tool for your game and it handles ALL the setup for these free clients!

Another awesome compat that I've barely scratched the surface of is SteamTinkerLaunch. Its interface is a little esoteric, but you can use it to configure ReShade as well as modding tools like ModOrganizer 2 and Vortex Mod Manager. It's an incredibly welcome utility on Linux!


Well, hopefully this guide to Steam Play Compatibility Tools has been helpful!

I also hope you learned at least one new thing! If you did, I’d love it if you could share this article or become a subscriber. Subscribers get these articles delivered straight to their inbox!

If you see a link with the đŸ’” emoji next to it, it's an affiliate link. I get a small kickback if you make a purchase using my link.