Gaming on Linux: How Proton Works and What Actually Runs

Gaming on Linux: How Proton Works and What Actually Runs

For twenty years the answer to “can I game on Linux” was a list of caveats. That changed when Valve shipped Proton in 2018 and changed again when they put it in a handheld that sold in millions. The Steam Deck forced developers to care about Linux compatibility because it was a platform with customers, not a rounding error.

What Proton actually is

Proton is Valve’s distribution of Wine plus several other pieces, integrated into Steam so that a Windows game runs by pressing Play.

Wine is not an emulator, which is what the name originally stood for. An emulator simulates hardware and pays a performance cost for it. Wine reimplements the Windows API on Linux: when a game asks Windows to open a file or draw a triangle, Wine catches the call and does the equivalent thing with Linux and your real GPU.

The graphics translation is where most of the engineering is:

  • DXVK translates Direct3D 9, 10, and 11 into Vulkan
  • vkd3d-proton translates Direct3D 12 into Vulkan

Both are doing real work at runtime, and both are good enough that many games perform within a few percent of Windows. A minority run faster, usually where the Linux graphics stack has less overhead than the Windows equivalent.

Proton also brings a filesystem layer that presents a fake C: drive, registry emulation, and controller handling through Steam Input.

Turning it on

Steam on Linux enables Proton for verified titles by default. For everything else:

Steam → Settings → Compatibility → Enable Steam Play for all other titles

Pick the newest stable Proton in the dropdown. Windows-only games in your library become installable.

Per game, right-click, Properties, Compatibility, and force a specific version. This matters more than it sounds: a game working on Proton 9 and broken on Proton 11 is a normal occurrence, and pinning a known-good version per title is a standard and underused technique.

Checking before you buy

ProtonDB collects user reports per game with ratings from Platinum, meaning it works perfectly out of the box, down to Borked. Reports usually include the launch options and Proton version that worked, which is often all you need.

Valve’s own Deck Verified ratings are stricter and are about the handheld specifically, so a game marked Unsupported may run fine on a desktop with a keyboard.

What still does not work

The honest list is short and specific.

Kernel-level anti-cheat is the real barrier. Some systems load a Windows kernel driver, and there is no Linux equivalent. Both EasyAntiCheat and BattlEye ship Linux support that a developer can enable with a checkbox, and many have. Others have not, and a few have said they will not. That decision is the difference between a competitive shooter working and not, and it has nothing to do with technical capability.

Some launcher and DRM combinations create problems, though most are solved.

Very new releases occasionally need a Proton update or a fix in DXVK. Proton 11.0-2 shipped specifically to repair games that broke after their own updates, which is the normal rhythm.

Single-player games, older titles, and indie games are overwhelmingly fine.

Proton GE

GloriousEggroll’s build adds media codecs, patches from upstream Wine that have not reached official Proton, and fixes for specific games.

Install it through ProtonUp-Qt, which handles downloading and placing builds where Steam finds them. Use official Proton by default and reach for GE when a specific game needs it, since official builds get Valve’s testing.

Games outside Steam

Lutris manages Wine prefixes with community install scripts for GOG, Epic, Battle.net, and standalone titles.

Heroic Games Launcher is a native client for Epic, GOG, and Amazon, and can use Proton or Wine per game.

Bottles provides a general Wine prefix manager with sensible defaults for non-game applications too.

All three keep each game in its own prefix, which is the correct model: a fix or a dependency for one title does not disturb another.

Getting more out of it

MangoHud overlays framerate, frametimes, CPU and GPU load. Launch option:

mangohud %command%

GameMode temporarily applies performance-oriented settings while a game runs:

gamemoderun %command%

Combined, which is what most people end up with:

gamemoderun mangohud %command%

Shader pre-caching in Steam settings downloads compiled shaders ahead of time. Leave it on; it removes most of the stutter people notice in the first hour of a new game.

Hardware

AMD is the path of least resistance. The driver is in the kernel and Mesa, so it works on a fresh install with nothing to install, and Mesa updates frequently fix game-specific rendering problems.

NVIDIA works well with current proprietary drivers. There is more setup, and the historical friction around Wayland is only recently resolved.

Intel discrete graphics work and the driver situation improves steadily.

Distributions built for it

Bazzite is an immutable Fedora-based distribution aimed squarely at gaming, with the drivers, Steam, and handheld support preconfigured. It supports the Steam Deck, ROG Ally, Legion Go, and Claw as well as desktops.

CachyOS tunes its kernel and builds packages for newer CPU baselines, and Garuda ships a gaming-oriented Arch derivative.

None of this is required. Steam and Proton work on Ubuntu, Fedora, and everything else. These distributions save setup time rather than enabling anything otherwise impossible.

Realistic expectations

If you play single-player games, Linux gaming works, and you will spend most of your time not thinking about it.

If you play competitive multiplayer titles with kernel anti-cheat, check each one before switching. This is the category where the answer is still sometimes no, and no amount of configuration changes that.

Between those, the experience is now close enough to Windows that the remaining differences are mostly a matter of which launcher you open.

Frequently Asked Questions

Is Proton an emulator?

No. An emulator simulates different hardware, which costs performance. Proton translates Windows API calls into Linux equivalents and passes graphics work to your real GPU, so games often run at close to native speed and occasionally faster than on Windows.

What stops a game from working on Linux?

Kernel-level anti-cheat, almost always. Some anti-cheat systems load a Windows kernel driver that has no Linux equivalent, and where developers have not enabled the existing Linux support in EasyAntiCheat or BattlEye the game will not launch. Single-player titles very rarely have problems.

Do I need a Steam Deck to use Proton?

No. Proton is part of desktop Steam on any Linux distribution. Enable Steam Play for all titles in settings and Windows-only games become installable. The Deck simply ships it preconfigured.

What is Proton GE and should I use it?

A community build with extra media codecs and patches that have not reached official Proton yet. It fixes some games that stock Proton cannot run. Try official Proton first, since it is what Valve tests against, and keep GE for specific titles that need it.

How do I run games I did not buy on Steam?

Add them to Steam as a non-Steam game and pick a Proton version in the compatibility settings, or use Lutris, Heroic, or Bottles, which manage separate Wine prefixes per game and integrate with GOG and Epic.

Does AMD or NVIDIA work better for Linux gaming?

AMD, largely because its driver is in the kernel and Mesa, so it works immediately with no extra installation and Wayland support has been solid far longer. NVIDIA works well now with current proprietary drivers, but there is more setup and historically more friction.