Proton and Linux ports and 'no Tux no Bux'
Note: When I refer to “native Linux gaming” in this post I mean officially supported Linux ports.
I am a very staunch supporter of native Linux gaming and have been for years now. Like other people, in the earlier days of my Linux gaming experiences I too relied on Wine and even bought some games to play in Wine, but since the explosion of new releases that arrived to the platform with the launch of Steam for Linux, I grew to rely on Wine less and less and eventually stopped buying games to play on Wine, since I noticed that people like Feral Interactive, one of the biggest porting houses that make native ports for our platform, are negatively affected when people buy games before their ports are released.
Native reigned quite strong for a decent while and Wine kind of stepped into the background for a time, since we seemed to have new interesting games releasing every other day. However, with the introduction of Proton, a fancy-pants Wine fork integrated into Steam, masses of Linux gamers have been flocking to buy and play all sorts of new and old Windows titles.
I have been looking at this movement with a certain degree of contempt and have on numerous occasions spoken on the social media or article comments or Discord servers about why I don’t think flocking to Proton as a solution for Linux gaming is a good idea. And since I seem to have to do that multiple times, I figured I might as well write down my thoughts into a blog post so that I can link back to it to save up on previous bytes of bandwidth.
Proton, what is it and what it aims to be
Proton itself isn’t much different from Wine, in fact it is a fork of Wine with some out-of-tree extensions added. Probably the biggest internal feature it boasts is DXVK, the DirectX-over-Vulkan compatibility layer that provides support for DirectX 10 and 11. Vanilla Wine has been limited to DirectX 9 support over OpenGL for a good while, which not only allows only older titles to be played but also performs relatively poorly in many circumstances due to the difficulty of mapping DirectX 9 over OpenGL.
Valve also integrated Proton into Steam directly, allowing a number of “officially supported” games to be launched with it through a feature called Steam Play. These are basically just Windows titles on Steam that Valve has deemed to be sufficiently compatible with Steam Play to let people run them as if they were native games. They also allow users to optionally attempt running any Windows games with Steam Play, just without the small guarantee of compatibility offered by the whitelist.
By itself this isn’t a bad thing and I have on multiple occasions stated that I am not against Proton as a technology. On the contrary, I think it’s very important to have a tool that assists people in their migration from Windows to Linux, and letting them take at least some of their Windows titles with them is a fantastic feature. However, the devil is in the details or, more specifically, how Proton is being used.
Porting house profits
Porting houses like Feral Interactive and Aspyr Media (and to the smaller degree Virtual Programming) are currently the biggest source of modern AAA titles on Linux. While I personally don’t hold much respect for what the AAA is trying to do these days, there is no arguing that the demand for these games is big and they are mostly made with a level of detail that cannot be expected from individual indie game studios. What companies like Feral do is they make deals with the AAA publishers to port their games to platforms like Mac and Linux and they make their profits based on counting Linux and Mac sales of those games. We don’t really know what goes on in those deals and what exactly the AAA publishers get out of the deal, but the important thing for us Linux gamers is that the porting house is paid for the purchases that specifically are counted as Linux purchases.
So, if you then decide to purchase a Windows game that eventually gets a Linux port, can you guess how much money the porting house got from you? Zero, zilch, none, null. On an individual purchase this hardly makes a dent, but when you consider that even the mass market is just a large collection of individual purchases, it eventually adds up. This leads to decreased profits for these porting houses, which means that when that game eventually releases that just refuses to work in Proton that could have been ported to Linux, you won’t be getting the port. Many people have complained that some of the ports made by the porting houses aren’t necessarily as great or that Proton runs the games just as well, but they forget that when you buy a Linux port you actually have some guarantee that the game actually works. It might come with caveats, maybe cross-platform multiplayer doesn’t work or that the port carries a 20% performance penalty. But you will know that while the company that made the port is still in business and they haven’t dropped the support for that port, there is someone holding some responsibility for that port. Someone you can say “hey, this doesn’t work on my machine” and they can respond with something other than “you aren’t using our supported platform”.
“But Valve said Proton counts as Linux!”
When Proton released Valve, in their infinite wisdom, said that playing a game in Proton counts as playing the game on Linux. This lead to a number of people thinking that if they play Windows games through Steam Play they will be supporting Linux gaming since they are showing game developers that Linux gamers are interested in their products and that therefore a viable Linux market exists.
I question the validity of that stance.
To me you playing a Windows game on Steam Play does not show that a viable market is interested in the game. Instead what it says to me is that said market does not need a Linux port to buy the product. You are basically setting them up for a win-win situation and then hoping they settle for the less optimal option. When you play their game on Steam Play, it shows that you are willing to buy a product with no official support, which means that the company can completely avoid spending any support costs on you. If you have an issue they can just sweep it under the rug of “unsupported platform” and get on with their day. Meanwhile you have no guarantee that the next update of the game will even work on the game and still you have paid the same price for the game as everyone else.
To put it in other words, if I made a Linux application (that was a paid product) and I saw a bunch of Windows users using the application through WSL (Windows Subsystem for Linux), would I have a real incentive to spend my own money on porting the application to Windows to appease the users that clearly already bought the application but are having to run it through a compatibility layer? For this thought experiment to be a bit more equivalent, let’s also assume that the Windows users would only represent a maximum of 1% of the customer base. I repeat, they already paid for the application, so I don’t even have any guarantees that I would be getting any more profit out of them.
That to me is what playing on Proton to hope senpai notices you sounds like. I think it’s just unquestionably better to hold onto my money and reward the developers who decide to support me. And I know some of you will argue that I am only one tiny person and that my money doesn’t make a difference. But if you apply that principle ad nauseam you end up in a situation where nothing you personally do makes a difference, so you may as well go outside and let those of us who want to make a difference at least try.
The ecosystem AKA the long game
Individual games and are individual games. Important in the moment, but eventually forgotten. To me the most important aspect of Linux gaming is the continued existence of Linux gaming. To have that we need to make sure that the ecosystem Linux gaming is built around remains in good shape. This means stuff like APIs, drivers and tools that make both playing and developing Linux games possible. And this is where I believe supporting native Linux games is of particular interest.
If we take Feral Interactive as an example again, they have not only made a number of native ports but while doing so they have made numerous contributions to the GPU drivers and written tools like GameMode which can be used to extract additional power out of our Linux systems while gaming. These contributions are important and were Feral not in the business of developing Linux ports we wouldn’t have these things. In a similar sense other game developers help strengthen our platform’s ecosystem by using Linux compatible middleware and APIs, reporting bugs in them creating tools along the way that at first help their lives and then help the lives of those that came after them. The SDL (Simple DirectMedia Layer) project came into being from the porting efforts of Loki Software in 1998. Now it powers a vast chunk of the Linux games out there and has served as the foundation for countless gaming projects, both professional and amateur.
So, when I support developers making Linux ports I am also indirectly making them make the ecosystem better. Any bug report the developers file against an API or a middleware is a small step forward for ther ecosystem. Any tool or a driver improvement makes our platform better for those next in line. This is the long game, and it always makes sense to play for the long game rather than aim for fleeting short-term benefits that come to bite us in the long-term.
Do you feel bad yet?
Some people who have read this post might feel quite defensive if they have gotten this far. And I feel like I should probably reassure you that I don’t actually think you are a bad person if some of the things I’ve mentioned in this blog posts have in some way described you. Even I occasionally start up some games in Wine, although I don’t buy new Windows games for that purpose and I have yet to use Proton in the slightest. I wrote this blog post to get people to consider their purchasing decisions and the possible consequences of those decisions when it comes to the future of Linux gaming. I also don’t think that you playing Windows games you already own is a bad thing at all. You already paid for the game so there isn’t any additional harm you could even be doing by playing it in Proton or Wine.
So on that front, go nuts. Clear that backlog of Windows games you accumulated over the years and have fun. Just try to keep in mind when considering buying new games that some of us have long lists of reasons to prefer the games that have official support over those that just happen to run through a compatibility layer.
And maybe you too should care about those reasons.