Following the previous podcast with Icculus, here’s now the second part of our conversation with him. In the previous part (that you ought to read/listen to before going through this article), we came back on what brought Ryan Gordon to Linux, and how he started doing game development and porting at Loki. We followed him through his experiences, helping Humble Bundle to release ports for all platforms including Linux and Mac, and finally the whole Steam for Linux initiative with Valve, where he was involved with the Left for Dead 2 port. The second part of the podcast is almost another hour long, but there was not much we edited out – as Ryan touches on a bunch of topics such as Vulkan, WINE, the future of porting for multiple platforms… all very relevant to our current and future preoccupations as Linux gamers.
[podcast_episode episode=“3721” content=“title,player”]
We have spent a large amount of time to transcribe most of the interview below, for those who prefer text over audio. Again, please consider supporting us on Patreon!
As you may remember from the last part of the podcast, Ryan used to be extremely busy when the Humble Bundle initiative rolled out, as they had to pump one port after the other in the fastest way possible. Since then, his life has settled down somewhat.
Ryan Gordon: I used to take it all on, and that was a terrible idea. I mean my life has changed drastically from when I first started doing this. It used to be like I would sleep all day, get up and you know work all night for 14 hours until I passed out on the keyboard. And then I would get up in the morning and do it again with keyboard marks on my face and I would still do that. I like that kind of lifestyle, not because I’m like hardcore, never taking breaks, “you got to work until you die”, but like I find that when I can focus on something for a long time I find that very comforting. Life is not like that when you have children. I work from home and so does my child and she’s my most demanding boss. I see most most of my friends who are not programmers, they put on a suit in the morning and they go to work and they punch out and at the end of the day, they come home and they tuck their child in. I made a conscious decision I didn’t want to miss my daughter’s life. I’m not gonna pretend that I’m the primary caregiver like my wife. But I want to be around, I want to be available and I wanted to be part of that, and that is in direct conflict with the idea of working all night.
I have no regrets about that at all, but it definitely slows down my productivity. So maybe when she will be going to kindergarten next year, when she gets older I’ll go back to it. I don’t know, we’ll see we’ll see how it goes, I am not entirely certain what the future will hold in that regard, but there was a time back then where whatever came I was gonna say “yes” to because that’s one more thing that makes Linux a more attractive platform. In many ways as much as I like that, it is very self-destructive, so it’s not a good way to work and you will burn yourself out. So I do that less but also the games take longer to port, when you’re working from scratch. Then on the other side of that coin, we’re coming into this Unity and Unreal Engine 4 world where maybe I won’t be needed at all, if I’m lucky. That’s a double-edged sword, it might be that people start doing these ports in house and I’ve always said that the most successful I could be in my career, is to be completely obsolete. I if I put myself out of business by making this so successful that everyone ports their own game, and there’s a thousand people that are working and doing the same thing as me, so that I’m fighting them to get any work at all, that is success. I can die happy.
For a long time the Linux gaming scene was facing an uncertain future, and Ryan was among the few to port games for our platform. But there are now a lot more porters and ways to port games than ever before.
Ryan Gordon: It’s at the point where it doesn’t need me to live. For a long time I felt like I couldn’t quit. Now I feel like this will live on without me. I used to feel like if I stopped there would be no games on Linux, and I don’t think that’s true anymore. It’s certainly not true anymore thanks to Humble Bundle, Valve, Epic, Ethan Lee, Timothee Besset, and Aaron Melchior and dozens of other people… and Feral, Aspyr and other people have all shown up now, and it doesn’t have to be just me. It hasn’t had to be just me for a long time and that makes me so happy. It also lets me do things, like I’m going to spend a year and make SDL better, and I don’t have to worry about how many games are getting pumped out.
Or here’s a game like Another World (Out of this World if you’re in America) that is an historical artifact, no one’s going to look at it as the hottest new game, but the opportunity came up to port it, and then I was like “I love this game, this is the first game I paid money for as a kid, like my own allowance money”. That game is amazing, in the same way Twin Peaks was 15 years ahead of its time in narration. No one told a story like that at the time, so that’s great, and I had the luxury to do that [this port] and because it wasn’t the next hot AAA title, I could take the time to do that game because I love it. I’m still porting games but I’m focusing on other things that are important too. Not just SDL and infrastructure, and things that pissed me off about Linux for 15 years, and I’m going to finally write a piece of software to fix it, and someone’s going to pay me $600 a month to do it (patreon). And focusing on things like being a good husband and being a good father. I’ve made it this far and I’m not rich, the money was always a struggle, but I don’t regret any of it and I feel like I don’t have to work until I collapse so that’s where I am.
QA is a tricky thing with Linux games. First there’s an abundance of distributions, and before the advent of Steam and its Steam runtime, things could work or not depending on what you had installed on your system. Then there’s the hardware differences, the drivers differences, and so on… we asked Ryan how he approaches testing when working on ports.
Ryan Gordon: It varies wildly from game to game. With Humble Bundle games they had a group of volunteers, and a little bug tracker for their group, and they would play every game. They would play it like hardcore. They would beat Super Meat Boy, and they would beat it fast like within a day or two. How did you do that ?? They were talented obviously, you can’t just stumble through Super Meat Boy, you have to be a hardcore gamer. They would find bugs and report them, and we would fix them. With Linux users it’s a very different environment than Windows users, because when those users are even in 2017 they’re the same as ever.
Chances are by default you’re probably a Windows user or maybe that’s not true maybe now, by default you’re a Mac user, but like you don’t assume they’re technical. But with Linux users I’ve always, even in this current time, been able to assume they are technical, and that if there’s a bug they will probably be willing to patch their OpenGL driver and try an experimental branch, and so there are lots of games we have shipped, they works on my machine, I think it’s correct, but I get bug report from people that are like “oh yeah I stepped through your game in a debugger”, and they notice that you set this flag wrong on the TCP socket, and if you change that it’ll stop doing this… “Oh well shit let me change this in one line of code, you’re right.” You’d be surprised, you can’t get that level of quality user on Windows or Mac OS where not only do they have the technical know-how, they are willing to roll their sleeves up and work on it. They are patient and they understand that these bugs will be fixed, and that they can contribute, these are just not things you expect from a video game customer.
If your Xbox game bricks the system you’re gonna get on a forum and be like “what a piece of shit”, but that’s as far as your interaction goes with that bug. In many ways we’ve been blessed in the Linux community with technical know-how and this can-do attitude, and It’s always been that way. I hope it always stays that way to some degree, even if Linux becomes wildly popular with the general population.
The tendency of Linux users to report bugs is kind of a double-edged sword. There are sometimes game developers complaining about the fact that they only have 1 or 2% of Linux gamers but they account for 50% of the bug reports… making it seem like things are broken on Linux and not worth the effort for such a small market.
Ryan Gordon: […] All developers hate bug reports, but I mean Linux is where the people that report bugs live, that’s how it works. I often pitch game ports to Linux to developers, and tell them […] if you don’t fix it someone will probably come along and patch the binary for you, or you know or they’ll find a workaround. If it doesn’t run on Ubuntu, I hate to be this guy, but it’s like a lot of my bug reports do not come from Linux users, they come from Arch users.
If you would ask me 10 years ago, they come from Gentoo users - because there are the ones on the bleeding edge, breaking the system. But they’re also the ones that come up with solutions as to why it’s broken. I don’t begrudge those people. You need these people, they’re the ones that are out there doing the hard work for you, but they also generate a lot of bugs where you’re like “I can’t, I’m sorry it doesn’t work for you on Arch, I don’t know how to fix that”. […] I don’t expect windows developers to understand that there’s a thousand distros […] and these people are on the bleeding edge, but most people do not have this problem.
You can look through the Github bug tracker for Valve’s games and there’s a million bugs open like that. We can take the time to fix this, but it’s going to fix it for one person, this is not a widespread problem, and there’s a lot of that. You do the best you can with that, but I would say if you are a Windows developer and you’re running into that, don’t get discouraged. Some of these bugs can stay open forever, some of those bugs will fix themselves when the bleeding-edge package gets updated again. […] I understand why they’d be like “oh my god all our bugs are coming from Linux” but it’s actually the data is skewed there, and that would be my argument.
When it comes to bringing a game on to another platform, there are multiple hurdles. But the main ones are almost always the same.
Ryan Gordon: The renderer every time, it’s the renderer, there’s nothing but the renderer almost all of it is just the fucking renderer. So basically trying to translate DirectX over to OpenGL. I’m hoping this is something that’s going to improve in the years to come as we’re moving to DirectX 12. These APIs all work much more similarly to each other and they all basically exposed the same functionality whereas even when you’re in like the DirectX 9 era, it’s like “we can get this done on OpenGL, but it’s actually an incredibly difficult path to stumble through”… and it’s not gonna be as efficient, and even stupid things like the coordinate system is flipped for direct 3D. It’s not just simply “do I translate this line by line to OpenGL”, it’s not that simple and a lot of that difficulty goes away with Vulkan. Because it’s mostly exposing the lowest level of hardware, the same way DirectX 12 is, in the same way that Metal is, so it becomes much easier to to deal with the renderer.
Now Vulkan is not an easy API to use, neither is DirectX, so it’s going to take time to do it but there you’re you’re less likely to run up to an obstacle where you literally just can’t climb over this mountain, “there’s no path between here and there that gets us where we want to go” like this has always been in Linux.
The two hard things is getting the thing to compile at all and getting the renderer rewritten to use OpenGL those were always always always the big tasks and there’s a million deaths by a thousand paper cuts in between those.
[…] Once you get to Linux or Mac OS, once you get to [port to] a second platform, the second platform is murderously hard. But the third platform is fucking easy. Once you get your thing ported, the next time is easier, and then after that it just gets easier and easier, because you’ve solved all the non portability problems.
But OpenGL is kind of on its way out. It will still be supported for the foreseeable future, but for games it’s unlikely to remain the main API in the near to mid future. And that causes a number of issues as OpenGL used to be truly cross-platform at heart.
Ryan Gordon: […] OpenGL is kind of gone out of the picture, and you don’t have anything that’s cross-platform anymore. Well first off, OpenGL is going to go away because everything not using Vulkan is going to be using OpenGL ES, and Android and iOS obviously are both moving towards these lower-level api’s. If you want to target a web browser, OpenGL yes, if you want to target some of the consoles that are out there, it’s OpenGL ES, right now OpenGL ES is the thing that will run on most platforms. You could probably assume it will be there in some form even on Windows, believe it or not, because you can just try to aim for the core OpenGL profiling which looks very much like OpenGL ES, not exactly, but it’s pretty close to it.
If everyone was hoping that we’re all going to go to Vulkan… we understand that Microsoft is a bad actor in general, so of course and they’re not just going to be like “I’m just gonna stop doing DirectX”. Apple is also not jumping in the train either. Because Apple is also in recent time become a bad actor. Apple used to be such a good citizen of the Internet… they were like “we’re open sourcing as much stuff as we can, and we’re trying to make sure that our processes are open, and we respond and we contribute to open source development”, and they do contribute to open source development: they pay for clang development and that’s still open, and they open source the Swift compiler and there are still pieces of open source… But they also looked at the GPL 3 and said all of that had to go, so they wrote their own SMB server, and took out Samba. They went to Clang instead of using GCC, because GCC moved to GPL 3. All the GPL3 pieces of software that were critical to Mac OS were all removed, there is no single piece of GPL 3 code in Mac OS. You have seen Apple act really badly in the way they deal with the App Store, there’s a definite chilling effect in these things.
So for AAA titles, things may get more difficult in the future, but the advent of low-level APIs introduces similarities that could keep cross-platform development still possible.
Ryan Gordon: Yes and no. First off, with the exception of people that are writing their own engines, which is becoming less-common, everyone’s going to be using Unity or Unreal, and both already have Metal and Vulkan and DirectX12, and other renderers, so if you’re targeting one of those, it’s no big deal, it’s already written, someone did the work for you. If you’re working from scratch, yes it’s going to be harder, but people in previous times of the DirectX 10 and below times, they already had to write a DirectX renderer, an OpenGL renderer, and if you want to add in Metal which came way before Vulkan. Let’s say there’s three platforms, but most people are not in that position and these APIs are not the same as OpenGL, where “here’s the texture, here’s some vertices, here’s some other basic information, and you go draw it!”. There’s a lot more steps to it, it’s very, very low-level and I believe the intention with all of these api’s is that engines will implement these and games will not. Games will talk to the engines, which will deal with this, because the learning curve on Vulkan is fucking murderous.
I would not hand this to someone and be like “you should learn 3d programming”. You are going to drown. You should not and this is true of DirectX 12 - I wanna say Metal is actually much easier to learn than OpenGL, why is that is it’s a slightly higher level and it took out a lot of the bullshit that’s in OpenGL. OpenGL has a lot of complexity that’s been bolted on to it over the years, and even in the core profile it’s not always clear what you should be doing because there’s extensions that do it better… but maybe that extension isn’t there, so you have to do it a different way, whereas Metal is very much like “we only support the following formats, we only support the three pieces of video hardware, and we do not care about portability, so we could take out a lot of assumptions”, all right and just… Objective-C is an awful API. But a lot of the things that they did in the objective C parts of of metal are very much higher level it’s like you get your work done you know “here give us the data we need and we’ll do it” you know. And it deals with garbage collection for you and shit like that. So in some ways if I had the hands on a modern next gen low level API and say learn how to be a 3-D programmer I wouldn’t hand them metal and I would apologize because there’s you know all the other trade-offs “Congratulations you’re now a Mac developer. Sucks to be you! Good luck with Xcode!”. But, as far as learning the basics you can take what you learn from Metal and then apply it to Vulkan because the same concepts apply but with less steps and with Vulkan you know it’s like I wrote a metal back end for a SDL renderer which really does very simple 2D stuff so it’s not complex in the first place but the metal version of that was like 700 lines object of C-code whereas like the Vulkan when I start on a thousand and it’s still I still can’t even clear the window.
There’s an enormous amount of set up involved in Vulkan to the point where it’s intimidating before you could even draw something on the screen and my understanding is that Vulkan gets easier once you get to the point where you can actually make easier compared to the initial parts of Vulkan. Once you actually get to the point where you’re trying to draw stuff on the screen but it’s it’s very very intimidating. It feels like there’s a lot of steps that I did not necessarily have to touch but you have to have to get it going and you have this risk of boilerplate - I’m pissing on Vulkan here - But Direct3D if you look at like the Microsoft recommended way to set up a direct 3-D rendering context, it’s like five pages of boilerplate code that no one understands - you just cut paste it. It’s like the ultimate Stack Overflow article. Metal gets rid of all that stuff. It is like three calls and you’re ready to draw. So you take it for what it’s worth. But Metal is not a bad API - the problem with Metal is that it’s not portable. It is the same problem as Direct3D: you can target Windows or the XBox. And now with Metal you can target iOS or MacOS and nothing else ever. And that’s problematic. It’s not where I want to go.
Metal does not seem to be catching much developer love so far, so we can wonder if that discussion about the role of Metal is actually relevant or not. But Ryan says things are anyway moving there sooner or later.
Ryan Gordon: Oh it’s early times. DirectX 12 isn’t catching up yet either. It will. All these things are going to move forward. That’s going to happen. But this is what I was saying about Apple being a bad actor. They’re like* “hey, we could lock people into a platform here”*. And the reason they went with OpenGL [before] is because John Carmack personally convinced Steve Jobs to go with it. Apple used to have an API called Rave. I don’t know if you remember that. They were talking about “Should we extend Rave? Should we license Direct3D from Microsoft?” and John Carmack came in and He’s like “No dude. You gotta use OpenGL, it’s a standard.” And it’s just John Carmack changing the industry one sentence at a time.
So they went with that and then OpenGL had its share of problems and you know the system has changed a great deal since GL was the thing we want everyone to use. And Vulkan wasn’t ready. Metal shipped like a good two years before Vulkan shipped. So they needed something. Will they move to Vulkan? I don’t think so because they have one way to lock people into a platform because fuck them. But also you know they have a lot of engineering and investment in Metal. And I think that they will act badly about it and I don’t think they’ll support Vulkan. That being said there is something called MoltenVK, it’s a commercial product you have to pay for it. That basically gives you the Vulkan API and calls Metal on the back.
So you’re not locked out of that platform. But as far as Apple goes, they’re going to go with Metal I think, they will just keep enhancing it and they don’t care about competing. It’s not like “Can we make this better than Vulkan?”, they’re like “Fuck you, you want a Mac version or not?”. As I have learned from the Apple retail stores, they think that you need them more than they need you. But you are just one Android phone away from proving them wrong. So we’ll see how it goes.
When it comes to OpenGL and Vulkan, Linux gamers have the luxury to choose between proprietary and open source drivers for nVidia and AMD. For nVidia, nouveau is unfortunately far from properly supporting modern cards, while for AMD recent developments on Mesa have made the Open source drivers very efficient. But things haven’t changed a lot yet, nVidia is still ahead in performance with its proprietary offering.
Ryan Gordon: […] The problem has always been, especially in early times, was “you can have Free Software or you can have functional software”, and that has changed a great deal in past years. But for a long time, it was “if it works on nVidia it’s probably your driver that’s wrong”. You could just assume that the software is correct and the driver was buggy. An enormous amount of progress has been made with open-source drivers to the point where I have installed Ubuntu on things, and it has installed Nouveau by default on my Nvidia based system and I didn’t even notice. “Oh, I forgot to install the closed drivers”. Obviously, they have closed that gap a great deal. But in terms of bad behavior, nVidia’s acting badly here - everyone else has come around.
It’s not just that we’re doing open source drivers, AMD dumps thousands of pages of hardware specifications on us, and Intel literally (and I am sure AMD too) is paying engineers working in their offices to do the Mesa drivers and to improve that. So the outlier here is Nvidia. They get away with this because they have really good software. The competitive advantage Nvidia is that they make good hardware but also their OpenGL driver and their Direct3D drivers are world class and nothing was even coming close to it.
But if it gets to the point where I can run the open source drivers and not think about it then I’m not going to install a closed source ones. […] Nvidia could open source and they choose not to. They think it’s their competitive advantage. But if it gets to the point where nobody needs them, because everyone just uses the open-source drivers, then maybe that would make a difference. Or if everyone starts buying AMD cards. The problem is it’s not just an advantage because they have it closed, it’s because it’s good. That’s something that the market’s going to have to change. That’s what Nvidia will respond to. It will probably happen at some point. But I don’t think it will happen soon. I’d love to be wrong about that. I was in a car on the way to WWDC when they announced the Intel Macs and I used to think* “they will never switch away from PowerPC*” so don’t trust anything I say, I can’t see the future!
As one of the historical lead porters on the world of Linux, as expected Ryan is not a fan of WINE, while he concedes it has some clear uses.
Ryan Gordon: My stance on this really hasn’t changed over the years. I don’t want to play a Windows emulated game. Despite the name WINE is an emulator. I mean it is not emulating the CPU, but it is absolutely crafting an alien system on to a different operating system that is nothing like it. That being said, I’m sitting here playing the original legend of Zelda on a Nintendo emulator on my Linux box, and I don’t feel bad about that. So I don’t think there’s something wrong with emulation. I think it’s actually crucial for historical purposes. You want to be able to say “look here’s a game that existed back in 2003 and it’s now 2050. Kid, let me show you how games used to be”. So I think that’s important. I was talking Emscripten earlier and hell, let’s get an emscripten port of WINE! That would be cool. But for the sake of archeology you absolutely need to build something like WINE.
I think it would be a terrible tragedy, if this is the way that we play games on Linux. I don’t think that would be acceptable to anyone including WINE developers. Obviously they want WINE to be able to play these games but I don’t think they want that to be the way we play games on Linux. But that does not mean that effort is useless. That effort is very important. Thank god I can run Microsoft Word.
Eventually we are going to look at this huge archive of human creation that we can’t play natively on Linux, because 20 years ago, it wasn’t ever ported. You have not lost access to it. And that is worth an enormous amount of human effort and engineering thrown into it to make that available. But no that is not how I want to play my games. It’s a false argument to suggest that you either have to have WINE or you have to have native games. They serve two different purposes. I think they’re both very good purposes to serve.
Some recent games unfortunately do not come to Linux for multiple reasons. In such cases Ryan can understand the usage of WINE or dual-booting – he’s no extremist – while he does not use such methods himself.
Ryan Gordon: I am not religious about it. I don’t do that but I think that if someone finds that dual booting or running WINE gets in the game they want to play. I think that’s I’m not going to be like “You fucking heretic”. You know I’m not interested so it kind of goes in the same direction of what we’re seeing in the beginning or for discussion to their liking.
At least WINE serves one purpose that is somewhat better than dual-booting: it keeps Linux users in their Linux environment and does not break their flow.
Ryan Gordon: Yeah I think that’s true. I don’t want to get to the point where we say “let’s not port our games because it runs on WINE”. But I also think that you can’t stop progress so if that happens it happens, but that’s not my interest in it. I’m a vegetarian and people are like “Do you mind if I’m having a hamburger in front of you?”. I don’t care if you eat meat! That’s your business. If you want to run WINE that’s fine. It’s not what I do, but help yourself. It’s not that important to me. I do not think that there’s been many games or people like “Oh it runs on WINE we’re not going to port it”. The people that say that were not going to port it anyway.
My argument is not “we should improve WINE so that we can run games on Linux”. You know I’m happy WINE is there but I don’t think that’s the system I want to be using to run Linux games. And I don’t think WINE is in a position to ruin that for us.
There are some devs who ship a Windows client of their game and notice it runs fine on WINE, and wonder if WINE is a good approach to release a quick port for Linux. It’s been done before and while it may work, it can lead to very adverse and vocal reactions from some Linux gamers.
Ryan Gordon: […] That’s a very good approach for people who have no interest in doing the porting by themselves. So Humble Bundle shipped a few WINE wrapped games as “Linux games” and people were pissed about it. And in fact we did need a Linux version of Limbo. We all enjoy that. I love that game. That shipped as a WINE wrapped game originally. And they got no end of grief about it from Linux users, so they’re like “fine we’ll give it to Ryan and he will do the port”. And I did, and it was great. We’re all happy with that. So I think that the other thing you’re going to be in for, if you if your attitude is “we’ll just ship it wrapped WINE”, you should expect blowback. Like there are people that don’t feel the way I do about this, that will absolutely let you know how they feel.
We were wondering what would be the better choice then, if WINE is no good and devs are not willing to do a full-fledged port… is having no port at all more desirable then?
Ryan Gordon: Let me preface this by saying that I think Richard Stallman is an asshole. But he said something that I heard when I was much younger and I thought it was very very important that someone had asked him about Free software “what if the only way you can get a piece of software is that they do a closed source port of it?”, he goes “then you don’t need that software”. And now we’re not talking about closed source here, I mean these games are closed source. Well what if my choices are not playing this game or playing under WINE? Did you need the game that badly? And it’s like - especially now in the modern times - there are lots of games to play.
There are more games and you can play before you die of old fucking age. Maybe play a different game? I think Richard Stallman is way too fundamentalist for me in general, but maybe he’s not wrong about that particular point. He was especially talking about software like Microsoft Word… everyone uses Microsoft Word, we don’t have a thing that will read docx format so “what do we do if everyone keeps telling us Microsoft Word files?” and I think everyone rolled their eyes when he was like “write them an email and tell him to convert to a different format and stop using that shitty software”. It’s like “OK I’m going to totally tell everyone that, Thanks Richard”.
But you know what… maybe he’s not wrong. And the thing is those are actually important things. There’s money and business and personal affairs on the line with things like Word documents. There isn’t anything on the line with video-games. If you don’t get to play Half-Life 12, you’re going to live to see tomorrow, it’s going to be OK. The world is not going to end. I don’t use WINE. I think it’s fine. I think it’s good because it serves a purpose. But if it came down to either not playing the game or playing it under WINE, I’m probably just not going to play the game. I don’t think that’s a particularly fundamentalist attitude to have, I don’t think that’s a radical idea. So but that’s just me. If you want to do it be my guest. You know if you’re if the choice is between someone wrapping the game and shipping it as their official product, I’m going to say “no thanks”. And I think a lot of people feel that way too. That being said if they ship a Windows version it’s like* “Hey! I got to leap along in WINE”*, well that’s your personal achievement. That’s great, you should do that. So… it’s complicated!
The Linux gaming market is nothing “new” anymore at this stage. We have seen more and more games coming out, while there is still some gaps versus what would be an ideal situation. Ryan feels like this is normal and that things should grow progressively anyway.
Ryan Gordon: I feel pretty good about it. I think that we probably hit this really you know this really over active stage with the original Humble Bundle and SteamOS like that are and I think we’ve probably slowed down a little bit since then. But I feel like these things go in waves.
Unreal Engine 4 is starting to get solid on Linux and Unity is solid on Linux and you know with those things is people start shipping games. I’ve seen more than one game that was shipped on Unity for Windows, where they are like “we did a Linux version but we hit the export button we don’t know anything about Linux”. We can ride that wave for a while. We have all calmed down a little bit since Linux for Steam came out. I think that’s good, instead of having like the hysteria or the way it feels when like a tech stock does an IPO where everyone goes crazy about it. I don’t want to be crazy. I just want it to be like a stable steady trickle of decent games coming through. Then from there we can build and build, build, but I feel like it has calmed down a little bit. That’s good.
There’s an ongoing litany on websites like Phoronix,* “Linux gaming share on Steam is only x% now”*, which makes it sound like it’s a losing battle (even though many of us are well aware absolute numbers are most likely growing, and the share is a very different thing altogether). Ryan does not expect major migrations – and he goes further by saying Linux does not care about market share.
Ryan Gordon: I don’t think people jump operating systems like “oh cool Half-Life 2 runs on Linux so I can go there” but I mean I have gotten a lot of e-mails from people saying “if you port this game, I could totally delete my Windows partition. Because that is the one thing I’m still using Windows for.” And like I said, I do think there are migrations. There will be tiny little shifts especially if you get a really big popular game like whatever today’s Counter-Strike, or whatever today’s Word of Warcraft or whatever - you can tell I’m not cool or hip, I don’t know anymore. For the most part people use the operating system they want to use. […] I don’t think most people move.
You could absolutely install Linux on your Windows machine and with some effort you could install Linux on a Mac. But if you went out and bought a Mac book you probably want Mac OS or you were handed a Mac book and so you’re getting Mac OS whether you like it or not. Or you got a Dell from work and of course it has Windows, and sorry you better not change this because all our stuff runs on Windows. But I just don’t think there’s big migratory shifts like that. I think they trickle in one at a time and they trickle back out, they try Linux for a week and it wasn’t quite what they wanted, they go back or whatever. I think such things are fine and I want you to be able to play these games on the OS you like or the OS you’re forced to use if it’s not the one you like. I’m not interested in capturing a market. Linux is cool, Linux doesn’t have to capture a market because it doesn’t have market share. If everyone stops using Windows, Microsoft eventually goes out of business. Or they would at least have to change what they do. So Joel Spolsky once said they could just lose a billion dollars years for 40 years and not even notice.
But they have an interest in people to continue to buy Windows. If you don’t switch to Linux. OK, we’re still going to work on it. It does not matter. Apple would care if you stop buying iPhones. But if you don’t run Linux it doesn’t change how much work we put into it or what we use it for. It doesn’t have to be a market success it just has to be something we like using. And then if it’s something we like using other people will like using it too. If you were BeOS or if you were OS2 if you couldn’t get that critical mass you are going to stop making those operating system. That might be the real genius of Richard Stallman, the real genius of the GPL is that “it just lives on baby!” we don’t have to make money off of this.
In the Linux community we do not hear so often about how actual game developers see and consider Linux. Is it even in the top of their minds at all?
Ryan Gordon: Well the ones that like Linux have gravitated to companies that are working on Linux. I don’t think it’s an accident that the Linux ports of things from Valve, of things from Epic, of things from Unity, of all these things are NOT coming from people that were assigned the Linux port as a job to do while they were there. Rather, it’s coming from Linux users saying “I want to use this on Linux, so I found a way to make this part of my job and I did it!”. The average game developer doesn’t give a great deal of thought to Linux, in my experience. Even the ones who are doing ports, it’s usually the Linux guy there pushed for it or you know we have a business opportunity here so we’re going to find someone to do a Linux part of it.
I would say that if you see a softening of developers towards non-Windows operating systems, they’re probably moving to Apple. But you don’t even see that a lot because Apple’s not really a very good gaming platform right now. I’ve been saying for years the competition to Linux is not Windows and hasn’t been for years. It’s been MacOS, where people are more likely to jump ship than go somewhere else. In terms of game developers, I think a lot of them are like “I’ve been using Windows my whole life and I’m comfortable with it” or they’re moving to another system like MacOS but I don’t I don’t think a lot of them are moving to Linux so much.
In the FOSS/Linux community, we find a lot of folks who tend to be very sensitive about standards, about protecting open platforms and encouraging the non-dependence on a single platform. It would be a mistake, however, to consider that game developers share the same kind of preoccupations.
Ryan Gordon: Most game developers love the fact there’s a single platform because seriously that’s less work for them. I mean otherwise they have to deal with portability and they have to deal with bugs that only happen on one platform. There used to be a dominant game console, Nintendo, Super Nintendo. But it’s gotten to the point where Sony and Nintendo and Microsoft all compete and all have a large customer base. And I think they hate that, to be honest with you. I think they would really like to able to ship a Win32 binary and be done with it.
But the market changes over time and that’s just how it is. I would say that most game developers are not sensitive to the idea of there being a dominant platform is a bad thing. They see that as a good thing. Makes their life easier. The ones that I’ve seen that pushed like Linux forward at Valve, they were like “I do not like that there is a dominant platform” and they were concerned about that dominant platform crushing them, locking them out. But I don’t think that’s common. That is a remarkable insight for a game developer to see that and act on it. Most do not.
So we are in a situation where we do get many indie ports, but still lack quite a lot of high profile AAA titles from the largest publishers. Valve has been active in that sense to try to bring some bigger titles on Linux, without being directly involved in the port. Rocket League is the fruit of such actions.
Ryan Gordon: [For Rocket League, Valve] worked mostly as a middleman. They’re just making sure that the right people talk to the right people. […] It was just handed off to me, and I got it running and then they handed it off to Timothee to finish it up. As anyone will tell you, getting it running is step one. There’s always an enormous amount of work beyond showing pictures on the screen, to actually make it a good product. But no, I don’t think Valve had the source code or anything like that.
With Rocket League they were looking for specifically something with the Steam Controller, so they can make a deal there and certainly at the beginning of Steam for Linux, they were evangelizing to people to try and get people to boost up the platform and get started. But for the most part, they’re pretty hands-off about things. They’re happy with what it’s doing right now and they don’t feel a need to push harder to make it more dominant. If you’re on PC, you’re probably installing Steam, whether you are on Windows or Linux.
Valve’s Linux push came at a time when they felt Windows was on the brink of becoming a more closed platform that could endanger their business and revenues. But since then the situation has changed and such concerns were alleviated… temporarily.
Ryan Gordon: […] Valve saw that as an urgent issue and it has become less urgent because they stared down at Microsoft and… Microsoft blinked, if you want my honest opinion. Maybe I’m wrong. That’s how it looks like to me from where I’m standing. I don’t have any insight on that. So I think in terms of future proofing, yes it’s absolutely true. But I mean you can only do so much. Everyone thinks of Valve as this behemoths, but they’re actually not that big of a company. They have a lot of money but there’s not that many warm bodies there, so they can’t chase down every single port and make sure it happens. They’re always happy to talk to anyone about it, but I don’t think they spend a lot of time evangelizing it right now.
[…] I don’t think they were ever concerned about whether SteamOS was going to be successful or not. Or Steam Machines, to be honest with you. That was something they were trying, but I don’t think they were particularly wildly successful - but they’re still working on it. They just shipped a SteamOS update, and they’re comfortable with where it is. It doesn’t have to be wildly successful right now, because what Steam cares about is selling games, and they don’t care what platform you buy them on, as long as you buy them. So they don’t have to change the world with SteamOS right now or ever maybe.
Overall, it does seem unlikely that anything would change drastically in the near future, considering the relatively hands-off involvement of Valve and the lack of proactive involvement from larger publishers. Yet Ryan sees the fact that Linux is still alive as a gaming platform as an good sign.
Ryan Gordon: […] I think things are moving in the right direction, so nobody’s trying to push really hard on it. Like I said, with the introduction of Steam Linux, there was a concern that this was going to be a bubble and it would burst. Now, we have a steady stream of games, but it’s not like every game in the universe is flooding over here. I don’t want to see a lot of blog posts from developers be like “look we did this, it was fucking awful. You shouldn’t do it either.” So I would rather it to be slow, steady and done well, instead of being a big bubble that bursts that nobody wants to be part of it. I think it’s on schedule I think it’s doing OK right now. It will improve in the future.
Sometimes it feels like we take a step forward and two step backs. For example we get a port for one episode in a series but the next one is canceled for our platform. This has happened for several games, for example like the Banner Saga.
Ryan Gordon: It could be a number of factors, and probably the most likely one is they just didn’t have a good experience with it. Like they probably put in a lot of time and money and did not get it back. Or it could be that there was a guy at the company […] that was totally onboard with doing this, and did it, and then he left the company and now nobody knows how to do it there, and they’re not that interested in that guy’s personal project. I don’t know what is their story. It’s more likely that they just didn’t get the money they expected from it. My experience with Linux ports is that they don’t make you rich, but you can usually get a least a small positive return on investment. [The reason] why Activision isn’t there, why Bethesda isn’t there, is that they don’t want a small positive return on investment. They want a big pay out, or no deal. That’s how the big companies work. That’s how they always worked. So it goes.
The usual chicken and egg problem (at least one of them) to make ports more profitable is to have them done and released for Linux on day 1. Unfortunately, it’s unlikely going to be the case for most titles, based on Ryan’s experience.
Ryan Gordon: I think that would be hard to achieve with external porting people, and that goes for Feral, that goes for me and for everyone else too. There have been very few things I’ve worked on that shipped on the same day, and for almost every one of those, I was in their offices working for months ahead of time in parallel with them, out of the same revision control, just to make it work. That’s a fairly unusual situation.
The only way you’re going to get those to be released on the same day is if they’re doing the port by themselves, and possibly if they’re using something that you can just hit the export to Linux button. Other than that, you will always always have several months delay, because it takes time to do these things. Feral does some very impressive work, very quickly, but even there you can’t change the laws of physics. These things take time, it’s just how it works. […] If the porter is starting from square zero, of course it takes months and you won’t have anything near the time you expect. This was the problem we had with Loki. We would get the game after it shipped, and we would take months and months to port it and then it would land on the shelves, and people would say they bought this game six months ago. “what? I have to buy this again? or hey… can I have the binary for free? I already paid for this on Windows.” […] That is reducing the return on investment for the ports as well. That was actually one of the great innovations of Steam, is that you buy it once and it works on all the platforms. You might get new sales but that’s how it goes.
And this is it! We had a great time with Ryan doing this podcast. We will be back within december (2017) with a new podcast, so you won’t have to wait too long to hear from us again. If you have any questions, comments or feedback, please don’t hesitate to leave us a message below! Thanks for reading/listening.