It was not so long ago. If you were browsing Reddit for news related to Linux Gaming, while holding a beer after a long day’s work, you were bound to find them. These recurrent posts harvesting lots of upvotes, where the main message was No Tux No Bucks or some other unimaginative word pun.
The posts would always follow the same pattern: some Linux user losing their mind over developers or porters who relied on alternative technologies like WINE or Proton to port their games to Linux. The infamy! The heresy! How Dare They? (Greta TM) Gravediggers will probably be able to excavate quite a few threads about the port of the one who shall not be named (all right I’ll save you some time, it was Witcher 2 by Virtual Programming). Sure, their port sucked in the beginning, but the outrage and unrelenting harassment that followed, said a lot more about the mental health of their critics than anything else.
Witcher 2 was not the only one to be vilified. The Humble Bundle relied on several WINE ports in the early days (LIMBO, anyone?) and received similar treatment. No matter the irony that most of the native ports in the first few Humble Bundles barely launched (issues with missing libraries) and LIMBO actually kind of worked. You can’t expect fanatics to be consistent and fair, after all.
Things seem so peaceful now in comparison. It’s 2023, and in the vast ocean of excrement you find on Reddit, you rarely stumble upon such posts anymore. So boring!
What happened? Where did the Spanish Inquisitors and their give me native or death moral purity go? Nobody knows the real answer, but I will venture in a few suppositions.
One potential explanation is that the religious inquisitors are still among us and still hold the same opinions… but their voices have been drowned in an ocean of more positive and pragmatic voices towards WINE / Proton and related tech to run games. Even more so since the Steam Deck reached the market in 2022. There’s rarely any day that passes by without anyone glorifying the state of Linux Gaming and praising the massive feat that the Steam Deck represents. Most of that is linked to the efforts funded by Valve in the past few years and the switch of gears from Linux native clients to running Windows binaries though a very complex set of compatibility layers known stitched together under the name of Proton. It’s nothing short of a miracle, really.
If you were to make a No Tux No Bucks post these days, my guess is that much less people would take it seriously and it would not make it to the top of the reddit links anymore.
A Monstrous Clash with Reality
I’d also wager that some of them have come to their senses as well - one by one, the arguments for the No Tux No Bux hallucination have fallen apart. It’s like a castle of cards.
- Translation layers would incur a huge impact on performance? Just because… no reason? Processors can run hundreds of thousands to millions of instructions per second, and converting calls from one API to another have no bearing on how fast these APIs will perform in the end through all the other tubes: the OS, the drivers, the display stack, the compositor, and whatever the middleware does in the background and more. We know that it’s patently false that such loss of performance would be systematic. There are many examples of games running on Proton that track very closely to their Windows equivalent in performance, thanks to the ongoing improvements in Vulkan drivers, shader caching, WINE, DXVK, VKD3D and more… It’s also not very rare to find games running better through Proton than on Windows on the very same machine. That one must have hurt bad, because it completely crushed any technical argument they thought they had. Flat earthers tend to suffer some cognitive dissonance too when they see the actual curvature of the Earth.
- The Linux market won’t grow until there’s more native clients? Another assumption that is falling apart day after day, as the Steam Deck is leading the march of Linux Gaming, and the desktop share of Linux is apparently tracking to 3% according to several indicators nowadays. Oh, and Linux has surpassed MacOS for the first time on the Steam hardware survey in 2023. Another one bites the dust.
And the general assumption that we were in a better place with native ports is not without problems.
Linux Native Ports Still Have Issues
Truth is, the situation with Linux Native ports has never been completely satisfactory. Native Linux builds have issues that have never been fully resolved: because of the small market share, very few devs actually ever try to install Linux on their own and test their builds. I know for this as a fact, because I reach indie devs on a regular basis and many of them who provide Linux binaries admit having done no testing by themselves. So we end up currently with, give or take, about 10% of new games having a Linux native client, while Proton gets to about 60~70% compatibility of all Windows games released. A world of difference.
Most games use either Unity, and Unity’s performance across platforms is far from equivalent - export your game to Linux and Windows on the same machine and lament the fact that it is likely to run worse, by default, on Linux. In-house engines (which have become a rarity) may however help: Patola is keen to remind me that X4: Foundations’s Linux client (Using a Vulkan based engine developed for X Rebirth VR) performs much better than when using Proton, with about 30% jump in frame rates.
Another problem is that when native Linux builds are available, they may or may not work properly - I remember trying Neodash when it was released precisely because it had a Linux port, and the Linux binary did not even launch - the developer whom I contacted knew about it and was still working on fixing it, and launched it as is anyway. Proton made the problem go away on day 1 by making the Windows version run perfectly on Linux anyway. And that’s just one of numerous examples.
There are even people who say that the only stable ABI on Linux is Win32 and this is also a sound argument as changes in key Linux components like glibc cause breakages in compatibility over time. Which is why Valve maintains the Steam Runtime which is a collection of older, stable libraries, to ensure that Linux clients work roughly the same across multiple configurations.
Making native clients happen has been tried for a while. Since the Steam Machines in 2014, until the release of Proton, there was a gap of several years when many people in the Linux gaming world tried to convince developers and publishers to care about making specific clients for Linux, time and time again. Petitions, begging, voting… Despite some momentary successes, these efforts failed to gain any meaningful traction. The market and developers’ interest was just never there. When native clients exist, they sometimes end up being abandoned by their developers too (not a priority, no time to support it) which makes the situation grow worse over time.
So there was a lot of demand, and very little supply. What next?
The Mainstream Demand for Native Clients is Mostly Gone
The demand for native ports has since them completely disappeared into oblivion from the mainstream Linux gamers. Remember when we used to be super excited, as a community, about the upcoming new titles from Feral Interactive? Can you picture again their infamous upcoming games radar? In what now looks like Prehistory, we would get one or two AAA ports per year if we were massively lucky. And if the port performed just 30% worse than the Windows build, we’d be celebrating, opening Champagne bottles and feasting for the next three days because Linux could actually run (albeit not very well) a trickle of AAA games. That’s how bad the situation was. And don’t get me started on the fact that Feral also used some kind of translation layer to facilitate the porting of their games. But hey, the Spanish Inquisition was easily fooled as long as it looked like a Linux client with a proper launcher. They could not care less about what happened under the hood.
Now Feral has completely moved away from the Linux market to focus on iOS, Android and Nintendo Switch ports - they know there’s no money to be made in a world where Proton is the better swiss army knife to do the job, much faster and better than they ever could. I don’t blame them and I am really happy they were there for us when nobody else was.
They carried us throughout the years, making us believe that the situation would improve, until it eventually did in an unexpected turn of events. Now, their move to mobile platforms was probably the right one. They made a totally rational business decision, and I hope that they can manage to thrive on mobile platforms and find the support of a strong community there as well.
So… should we come to the conclusion that Linux Native clients are just… dead?
Yet Linux Native Builds Have Survived
While Proton has clearly won no matter which metric you use, the native Linux clients have not completely disappeared. In fact, they have been rather stable even after Proton took over. That’s why we dedicate a post on Boiling Steam every week to showcase the developers who go the extra mile and release their games on day 1 with Linux in mind. I have been very much enjoying dotAge recently, for example.
If anything, that trend should continue: more Steam Decks in the wild means more people exposed to the Linux environment as a whole. And developers who wonder about building proper targets for their games will eventually, at a reliable rate (1 out of 10?), create Linux builds. The toolsets to create native clients has also never been better, with Godot 4 becoming one of the greatest FOSS options out there to help game devs with that, and Unity still holding its place as a the default engine for most Indies, despite the recent trouble with the change of fees.
One of the key actors behind Proton, James Ramey, now CEO of Codeweavers, used to say that eventually the number of native Linux ports would increase over time once the platform would reach a larger market share. His rationale was that it would start to become worth investing more time in the platform after a certain threshold, and Proton would eventually become less necessary.
I’m not sure I see it yet. The argument is compelling, but we are probably so far from a critical mass that I don’t expect the situation to change soon. And even with critical mass, doing “no work” is always going to win vs doing any kind of work at all to support a platform. Proton is a weapon of mass convenience.
Only the End Goal Matters
I’m happy to play games on my Linux environments no matter what tech stack they leverage. Native engine, Native client exported from cross-platform middleware, complete real-time translation of the Windows build… whatever works. At the end of the day, Valve decided to put their money where their mouth is, and went full-Proton and bet on it with the Steam Deck that’s mostly running games through that compatibility layer (while it will also run Linux clients when available).
That’s a huge statement to the reliability and the advancement of that technology: it’s working so well that most people would have no idea it’s not running some kind of Windows under the hood.
Pragmatism won. Being principled can be useful, but WINE and all other projects bundled with it proved to be THE most efficient way to solve the problem of not having many games working on Linux.
Native zealots have lost. But we have won as Linux gamers. We can now play more games than ever on our favorite platform(s). Our market is progressively growing. Some more mainstream audiences are now aware that Linux is a viable gaming platform. And all of is powered by one of the most FOSS-friendly set of software out there, which also brings benefits to many other projects. FOSS developers got actual jobs instead of spending some of their free time on side projects. And game devs don’t really have to care about the in-and-outs. They can proactively showcase that their game runs on the Steam Deck, and ensure that one real, tangible Linux target works as part of their workflow.
The shortcut was well worth it.