Gaming on Linux is fragmented April 8, 2025 on Kenneth Dodrill's blog

Linux is fragmented by design. The open-source nature of Linux begs various copies or versions. We have this through various distros like Fedora, Ubuntu, Arch, etc. I don’t think this is necessarily a bad thing, although it can be confusing to end-users. When I say that gaming on Linux is fragmented, I don’t mean it in the same way.

Game developers don’t understand Linux

Because Linux is fragmented, shipping your game to Linux could be difficult, especially if you don’t know how Linux works. Instead of providing a .dll, you need to provide .so files for libraries that you ship your game with. You need to compile the game on a Linux computer and ensure that the ELF binary that is produced has dependency paths and names set correctly. Thus, we arrive at the first problem.

Dependencies

If you don’t provide the dependencies to the user, Linux will attempt to load them from elsewhere. More than likely, names will conflict. For example, clang ended up setting raylib as libraylib.so.500 when I compiled my raylib projects. The file was actually named libraylib.so.5.0.0, and the path needed to be relative because I needed to provide the file. I used patchelf to remove the dependency and add my own. Most game developers would probably not get this far, as Windows users are their prime audience on any PC gaming platform.

Steam

Here is where things start to get more confusing for developers. Steam starts providing Linux libraries themselves. Now if you launch a game through Steam, it will try and look for the libraries that Steam provides rather than the system libraries. This…kind of helps? It’s an attempt at making things less confusing to be sure, but I think overall it increases the complexity. What if I want to ship my game on GOG, too? Oh, well…no Linux version there.

WINE

What if, instead of messing with libraries and all of that, we just accept that game developers won’t take the time to learn Linux and try to run the Windows version directly on Linux instead? This comes with it’s own problems. First, anything developed for the WINE project may not work, or may not work very well. The developers of WINE attempt to reverse-engineer various Windows APIs to avoid copyright issues, which can only partially be successful. Things are bound to not work, or if they do work, sometimes not work very well.

WINE also provides WineLib, which developers can compile against to help run games on Linux. This also increases the complexity of trying to get a game run on Linux, although I can see why the WINE developers thought it to be beneficial.

The version of WINE you’re running can also be a problem, depending on the game. Updates to WINE can impact a game so much that the game no longer runs.

Proton

Proton is Valve’s patched version of WINE that is focused on gaming. It suffers from the same things as WINE, but now is controlled by Valve. At first, I thought that Proton was a good thing. But now, I see it as adding more complexity for developers.

As many game developers have mentioned, providing a game for Linux is often a bad experience because of the points listed above. Valve attempts to solve this using Proton, but at the cost of further burying the thought of native Linux games. You might argue that the developer who relies on Proton would otherwise not provide a Linux port. I think that is true, and I think if you are arguing that, you would be better off on Windows.

The main problem Proton has is that games are vetted by Steam, and the developer doesn’t have full control over this process. A “Steam Deck Verified” game doesn’t mean that the game will always work on your Steam Deck. It just means that the game works, right now. An update to the game, it’s dependencies, WINE, Proton, or Steam could make it not work anymore. And that is what I mean by fragmentation.

There are too many variables that ultimately make up your ability to play the game you bought. There is also the possibility of Valve abandoning the Proton project, and / or not vetting games anymore.

Conclusion

I don’t think this kind of fragmentation is a good thing. Unfortunately, most people don’t see the problems that this causes. Frustration is the likely problem. You would likely be frustrated that your game doesn’t launch anymore after spending $40, $50, $80 (!!) on it. Perhaps the developer (who has no interest in Proton) updated the game which was otherwise “Steam Deck Verified”. We all know we don’t actually own the games we buy on Steam. But the control Steam has over Linux gaming is ridiculous.

With one small thing out of place, your game no longer launches. You probably won’t know why, unless you like to dig through GitHub issues. At this point, are you entitled to be frustrated, or have you put yourself in a place where frustration is easy?