Carmack The Wise

By

As the new Steam Play initiative rolls out, it is really the perfect time to re-publish the words of John Carmack from a reddit comment, back on a certain day of Feb 5th, 2013. He chose to elaborate more on a short tweet where he first declared:

Improving Wine for Linux gaming seems like a better plan than lobbying individual game developers for native ports. Why the hate?

…at the time when Steam for Linux was just launching. His post on reddit said the following:

John Carmack: I wish Linux well, but the reality is that it barely makes it into my top ten priorities (Burn the heretic!); I use Linux for the flight computers at Armadillo Aerospace, but not for any regular desktop work. I was happy to hear that Rage ran in Wine, but no special effort was made to support it. I do get tempted to port to Linux for technical reasons – I would like to use Valgrind again, and Nvidia has told me that some experimental GPU features I would like to use for R&D would be easier to prove out on Linux. Working on open source Linux OpenGL drivers again would also be fun if I ever had the time. However, I don’t think that a good business case can be made for officially supporting Linux for mainstream games today, and Zenimax doesn’t have any policy of “unofficial binaries” like Id used to have. I have argued for their value (mostly in the context of experimental Windows features, but Linux would also benefit), but my forceful internal pushes have been for the continuation of Id Software’s open source code releases, which I feel have broader benefits than unsupported Linux binaries.
I can’t speak for the executives at Zenimax, but they don’t even publish Mac titles (they partner with Aspyr), so I would be stunned if they showed an interest in officially publishing and supporting a Linux title. A port could be up and running in a week or two, but there is so much work to do beyond that for official support. The conventional wisdom is that native Linux games are not a good market. Id Software tested the conventional wisdom twice, with Quake Arena and Quake Live. The conventional wisdom proved correct. Arguments can be made that neither one was an optimal test case, but they were honest tries. If you fervently believe that there is an actual business case to be made for Linux ports, you can make a business offer to a publisher – offer a guarantee and be willing to do the work and support. This is what Aspyr does for the Mac, and what Loki did for Linux.
However, you probably can’t even get an email returned if you are offering less than six figures to a top ten publisher. This may sound ridiculous – “Who would turn away $20,000?” but the reality is that many of the same legal, financial, executive, and support resources need to be brought to bear on every single deal, regardless of size, and taking time away from something that is in the tens of millions of dollars range is often not justifiable.
I truly do feel that emulation of some sort is a proper technical direction for gaming on Linux. It is obviously pragmatic in the range of possible support, but it shouldn’t have the technical stigma that it does. There really isn’t much of anything special that a native port does – we still make OpenGL calls, winsock is just BSD sockets, windows threads become pthreads, and the translation of input and audio interfaces don’t make much difference (XInput and Xaudio2 are good APIs!).
A good shim layer should have far less impact on performance than the variability in driver quality. Translating from D3D to OpenGL would involve more inefficiencies, but figuring out exactly what the difficulties are and making some form of “D3D interop” extension for OpenGL to smooth it out is a lot easier than making dozens of completely refactored, high performance native ports. Ideally, following a set of best practice guidelines could allow developers to get Linux versions with little more effort than supporting, say, Windows XP. Properly evangelized, with Steam as a monetized distribution platform, this is a plausible path forward.”

I would like to elaborate on one of the points he makes about Zenimax. I have myself only worked in very large corporations, and I assume what is true for large industries is true regardless of the business they operate in. Large corporations don’t care about small returns.

Think of them as elephants, sleeping on the ground. They are comfortable. You can try attracting them with something that they like, just a little too far from them to catch it lying down. Do you expect the mammoth to get up, walk several dozens of meters to grab a small treat? Probably not. It’s because they have so much inertia that every little move is very costly in energy.

Large companies are alike. They act like large, heavy bureaucracies. They have tons of processes, most of them ranging between not-so-efficient to relatively-efficient - but at the end of the day, the slowest not-so-efficient process becomes the bottleneck for any kind of new initiative. The extra step they need to get up and do something.

If you make physical products then supply chain and manufacturing will register high in terms of bottlenecks. If you create services, production, testing, validation, quality insurance and all the management layers that go with it will probably eat most of your time before it hits the market.

So yeah, I can totally relate with his story of nobody wanting to touch a market unless there’s a 6 figures profit at the end of the tunnel. It’s just not going to be worth it. Sure, they could turn a small profit, but everything is about choice: large companies have more ideas than they have resources to work on, and everything gets through the 80/20 grinder: what is going to be more likely to generate more revenue is going to come first, and a Linux port will lose every single time vs another platform with higher market share, or even upgrades on a current, profitable platform.

That is why Valve’s made the right move, finally, by including Proton/WINE as part of the Steam for Linux experience. There is no hack around a tiny market share. Even Mac levels of share are largely insufficient to secure many ports. With no other solution in sight, a technical one is a better fix at this point in time.

Even it does nothing to bring more people to Linux, at least the current Linux users will be better served than ever.

Now excuse me, I have to go back to Doom 2016.