Native Linux ports - One perspective

I spent 5 years working on AAA native Linux ports. That’s not a long stint by some standards, but nothing to shake a stick at either, so it’s not unexpected that I’ve had a bunch of people come to me wanting a hot take on Valve’s position on the future of that effort now that the Steam Deck is on the horizon.

I don’t want to ignore the nuance, and now that I’m out of the business I’m not sure how much value my opinion holds on it anyway, so instead of offering up a juicy hot take I instead want to explain a part of where my head was at 3 years ago when I left porting behind. It’s a perspective I’ve shared a little of before, but it feels more and more relevant especially today.

Working on native AAA Linux ports was… hell. It burned me out to the point my mental health took a pretty big dive. It’s fair to say this was in part due to unrelated issues with company management, but the work itself was also hard, often very tiresome, and most of all it was horrifically inefficient. Each game took a gargantuan amount of effort - they often needed a year or more of concentrated development, and that’s with a huge codebase making the process easier. Every game challenged us in new ways we didn’t expect and that new knowledge would only benefit a handful of future games.

We had Linux platform experts, incredible graphics engineers, as well as a team of excellent QA who were developing a real expertise in testing on Linux - all things that are distinctly hard to come by in this industry. Each game needed a ton of time, effort, and expertise and while we did provide that, we barely ported a handful of games each year. It was never a sustainable number and it likely never made any money. Yes, we were the darlings of the Linux gaming community, but to what end?

To be taken seriously, the platform needed games I knew we’d never touch. So sure, let’s just have more porting studios and talent, right? Capitalism optimises profitability fairly well for stuff like this, and it settled on 2 big studios and about 5 freelancers. Not enough. Not enough by a couple orders of magnitude.

That was the problem that was always in the back of my mind. Was delivering only a trickle of native ports, with infrequent compatibility, often years late, doing damage to the ecosystem? Was there a better way to do this? With that question came an clear answer - there is another solution. I’d sit there and imagine, instead, if all that effort had been contributed to a tool anyone could use, rather than being bottlenecked with bespoke ports.

The trouble is that even if we shared our closer source tools, a port would still require source access to the game, and love it or hate it games are only ever closed source, access to which meant running into the fangs of capitalism, which had already judged us unworthy. Native porting requires source access, and source access is truly expensive.

There’s many other great routes to a similar goal of more native ports - SDL, Vulkan, Unity, all offloading a majority of the porting “work” to a select few experts, but these still require bespoke QA knowledge, they still require infrastructure and focus and time and money. And, they still require bespoke effort and individual access to the source.

So being honest with myself at the time, a better solution needed to be something that requires minimal manual intervention, minimal capital to bootstrap and extensively solved shared problems. It needed to work on the end product, not source, and above all it needed to be free. The only thing I could see that ticked these boxes was Wine, but it just wasn’t good enough at the time. It worked for old games, but it fell apart when fed modern titles. It needed some backing, and something better than OpenGL to handle the rendering.

That was, amazingly and scarily, only two key issues that needed solving - Wine needed more investment to improve some key aspects like anti-cheat, and it needed a route to a much more powerful rendering engine. For the latter, by happenstance or entirely on schedule, we’d just demonstrated the sheer freeing power of Vulkan compared to OpenGL for translation layers. I expected an open source equivalent to show up at any moment and I was not left waiting. For the former, well, go research where Valve has been spending money, hell do the same for the latter too.

The writing was on the wall, and I left Feral and porting behind soon after. It’s been a little over three years and I don’t believe much has changed. If that counts as a hot take then so be it.

Linux Gaming’s Ticking Clock

(Originally posted to Gaming On Linux)

Years ago, when we could still meet in the hundreds in small enclosed spaces, I was speaking to a Valve employee and brought up the topic of integrating Wine into Steam. I was met with something that I assume is taught to all of their employees during orientation - a sly, precise and knowing smile. When performed correctly it’s a smile that offers up no information other than a confidence that there are good things to come. Back then Proton was very clearly something to be held close to the chest, not to be shouted about, at least not for a while.

Now, Proton is all anyone wants to talk about when Linux gaming is brought up. It comes with an argument just waiting to spring out at you - are you for or against? Are you perilously blind to the devastation caused by opening pandora’s box, or are you a stifling traditionalist unwilling to let the platform evolve towards a bright future? I don’t think either of those is a hill worth dying on, but I’ve heard these exchanges enough now that I can tell they’re coming by the hairs on the back of my neck. It’s not that these aren’t important debates to have, it’s just that the angles people take are so often unable to give the pragmatist room to breath, let alone space to get down and dirty with the real issues at hand and how to solve them.

I think I now understand why the Proton cards were kept so hidden, sometimes it’s not worth inciting an angry debate without letting something speak for itself first.

Today there’s an undeniable truth that in a short window of time we’ve gained a wealth of games to play on Linux, but instead of the current dialogue focusing on finding common actions - how to capitalize on that potential, how to generate growth or even how to prevent too much damage being done, it too often ends up distracted in arguments that only focus on the past. These are fruitless. There’s nothing to be gained but the ego boost of a hollow personal victory. “Is Proton good or bad for Linux gaming?” is a tired old question, that was thrown around in slightly different forms long before Proton even existed. There’s a far more interesting topic: “Proton is here, so what next?”. Finding answers to this, collectively, should be our urgent priority, because there’s one thing seldom brought up in all these discussions: Proton’s current success is the child of impeccable timing, and it may not last.

There are many factors to this, the first being the currently extended console generation. In 2019 almost all Windows games were still rendering with DirectX 11, a technology released 10 years prior. DirectX 12 was launched five years ago but we’re only now seeing games start to truly use it. Part of Proton’s success is founded on the fact that Vulkan is a generational leap above the tech current games are built on. It’s not even simply DirectX 12, which is a mostly solved problem on Linux, the incoming generation is going to leapfrog that directly into entirely new technologies like Ray Tracing, DLSS and Nanite. You can see hints at the impact of the generational jump that’s about to happen in NVIDIAs recent DLSS video, Epic’s Unreal Engine 5 Reveal or the jaw-dropping Marbles RTX demo.

These new technologies may well have great compatibility with Vulkan and Proton, but not if Vulkan can’t keep up - it may be that games start requiring them sooner as a baseline, and there could be significant unavoidable performance hits in a translation layer just like in the old days of DirectX to OpenGL. Because of this, Vulkan adoption and wide-spread use are vital to keeping Linux capable of cutting edge graphics tech. Supporting the use of Vulkan not only massively helps Proton, but it also helps Khronos stay at the cutting edge, making future native ports a much simpler prospect.

The potential success of Stadia could be a key factor in this - the more Google looks to push the boundaries of graphics hardware, the stronger Vulkan will need to be when put up against DirectX. Desktop usage of Vulkan is growing, with Vulkan renderers being added to games like Red Dead Redemption 2 and Rainbow Six Siege while Android use is on the rise as well, the success of both of these will be another factor in keeping Vulkan at the forefront. There was some doubt only a few years ago about whether Vulkan would end up as another OpenGL, an unwieldy, rarely-used-on-desktop API with dodgy driver support and lacking widespread expert knowledge, but I’m hearing those doubts less often these days. One situation that might play into all this is if Microsoft brought DirectX to Linux which, while farfetched, doesn’t seem so insane anymore as it’s coming to WSL, though the implications of a move like that are beyond anyone’s fortune-telling abilities.

Another view on Proton’s impeccable timing would be that Steam’s strong market share on Windows for the last decade is only now hitting some serious competition. The Epic Games Store is the big challenger in the public eye, and while there’s more to be done there (Epic integrating Proton would be special) the fact running it on Linux is a mostly solved problem, for now, has taken it out of focus a little. - we shouldn’t get complacent. The second challenger that may be a far greater threat is the dirt-cheap and expansive Xbox Game Pass, which encourages a lack of game ownership that completely breaks the option of gamers taking their games with them when moving Linux (short of buying an Xbox). It also has the potential to finally transition more games to UWP, a format incompatible with Wine, and we recently heard that Microsoft is working on unifying their executable formats into something new, potentially causing even more problems.

For one flavour of pragmatist Stadia and other streaming services offer up a tangible step towards mitigating those issues by making your OS of choice irrelevant to the games you play. These services will give many Linux users direct access to the best AAA titles on their launch, and in Stadia’s case, they’re delivered using Linux virtually end-to-end. Xbox Game Streaming and Playstation Now may also unlock a huge library of console games without the need to invest in the set-top box. Streaming might not be your cup of tea or could be inaccessible due to your location, but it can’t be ignored as part of the wider picture - a strong way to play games on PC without the need for a specific OS has clear benefits for Linux users.

Another simple counter is that it’s becoming more and more obvious that Proton has far better historical compatibility with games than Windows does, and particularly better than Mac. This situation is likely to continue to improve, and it’s a massive stealthy benefit for many gamers. Game preservation is a worthy shared goal to get behind, and we could look to establish Linux as the platform of choice for nostalgia seekers, tinkerers and modders for the digital age, in the same vein to that cabinet with a well preserved Nintendo 64 and a bunch of old games that some of us keep.

One last piece of the Proton timing puzzle is Anti-Cheat. We’re nearing the end of a relatively long grace period where game developers shy away from going too invasive with protecting their IP. Most DRM and anti-tamper solutions are solvable in Wine, but Windows kernel-level anti-cheat has been around for years and is a much tougher challenge, bringing to a halt the hope of a quite a few games working on Linux. This level of invasive security isn’t just a problem for Wine, it should be seen as a dangerous obstacle for all gamers, but it’s a difficulty that’s unlikely to go away in the short term as we see more AAA developers begin to rely on it, even though other methods have proven viable and are used in world-class esports. The problem is that invasive anti-cheat is now seeping outside of competitive multiplayer games - the latest victim is Doom Eternal, a game who’s single-player campaign while writing this article became inaccessible on Proton due to the addition of Denuvo’s new Anti Cheat.

However, it isn’t all doom and gloom - broader campaigns against invasive anti-cheat are making small steps, Microsoft is granting users the ability to disable anti-cheat for single-player in the MCC, and most recently Denuvo Anti-Cheat is being removed again from Doom Eternal. In other good news, Valve is working with the developers of Easy Anti-Cheat, and Denuvo is working on out-of-the-box Proton support, but standing united with Windows gamers in setting a safer precedent for how companies handle these tools, regardless of Proton compatibility, is something we all should aim to do.

Proton’s timing was its strength, but native ports are another story. It’s probably fair to say that the number of ports has reduced over the last year, and you can’t blame developers for taking the easy route when they find their game works flawlessly under Proton. However, the story in terms of native development is more positive. In the open-source world, Godot has a significant fresh round of funding with its 2020 showreel showing a notable upward trend in quality and quantity, while Blender made a huge leap with 2.80 last year. For the big-name engines, both Unity and Unreal’s support for native game development is improving at a solid pace. Combining these with great progress in the Linux Distribution world for ease of use, installation and compatibility, as well as the multiple manufacturers now providing more high-quality OEM Linux laptops means that native development has never been easier, and keeping it strong helps to counter any damage Proton may do.

It would be easy to have been pessimistic here, but I hope I’ve shown there’s a fair amount optimism just waiting to be had once everything is weighed up. Proton may have come with a strong tailwind, but there are a plethora of other factors at play to help keep Linux gaming fresh. If there’s one action to be taken here it’s not to stick all of our eggs in one basket - we have to stop acting like Proton is the only choice on the table, that’s a massive distraction pulling us away from coming together and solving this puzzle collectively and co-operatively. If we do that right, then next time someone brings up Proton and Linux gaming we can offer them up that same knowing smile, knowing that the future should speak for itself.

Tomorrow was going to be our wedding

I’m taking a mental health day off work today. I think we all need every once in a while. But in the interests of solidarity and as a form of light therapy, I want to vent a little here on paper.

Tomorrow was going to be our wedding.

Weddings are ridiculous events when treated the wrong way. When you invite people to be a pawn in some attempt to create that “perfect” day. When you make the whole thing about just you, and forget about your guests. That’s my nightmare. We didn’t want that. We wanted to throw a great party for our friends and family, to see them all happy and to collectively put a bookmark in our lives to say “this is now, the future is yet to come”. So, we booked our favourite restaurant and invited a great group of people from the UK and beyond.

We all saw how quickly the pandemic progressed, but the kicker was the stress built from the uncertainty as it happened. Day-on-day someone reputable said things would still be OK for a few weeks, but day-on-day that time-frame shortened. It was impossible to know what was next. One day flights were cancelled from the US but not to the UK. My family was out in the US, so that was a scary moment. The next day the UK was amended to that list, and my parents just managed to get back on the absolute last flight home that Monday night. Phew, we thought.

Another issue was that my extended family is all abroad, and more had to drop out daily. Every day was news of another important cancellation, and following that, a discussion on if we should cancel, and if we could cancel, how on earth we’d even do that. Weddings have so many expensive moving parts. Neither option was good, and we were glued to the news. The question also came upon the morality of hosting a party like this on the brink of a pandemic, so we sent out an email saying we’d like everyone to try and follow best practices and self-isolate themselves before and after, at least then we might not make things worse, at least then we could all have a good time before the worst came.

Finally last week our venue closed shop, and then the registrars cancelled. This was a good finality. A hard decision made by someone else is much easier to deal with. Knowing the state of things now it’s funny to think that we had any hope we could go ahead anyway. For what it’s worth, in the UK this means that the whole thing is off - even the legal bit. You register to get married at a location and cannot change that location. In the US there are folks in our situation getting married at home, but over here there’s no such option. We’ve now scrambled to get a solid new date to do the whole thing proper, with everyone aligned again. We’ve chosen to delay a year to try and steer clear of the worst, and we’ll see how that goes.

This is to say that even with the best intent at not aiming for a stressfully planned “perfect” wedding, unravelling and replanning even a relatively small party and ceremony you’ve organized is a nightmare. I don’t wish it on anyone else. The wake left behind in its absence is bad as well, preparing for so long for nothing leaves such a huge space in your mind - as if someone paused the song just as the drop hit.

To add to the stress we moved into our new flat two weeks ago, perhaps just in time, but we still don’t have a viable internet connection to work from home (some OpenReach problem) and all the important crap that inevitably needs fixing is now impossible to arrange. We’ve also had to move in months late, primarily because of a dispute about a parking space that we require, for a disability, that wasn’t on the first draft of the lease, leaving us sofa surfing since January. We’d only packed bags to stay with family for a few weeks.

This is all heightened because my fiancé is in one of the at-risk groups, so every outside interaction either of us takes comes with a pragmatic assessment to try and minimize risk. My parents are much older than average for my age too, putting them at high risk as well. Even a couple of my pet rats are currently ill, and the UK Gov forgot, at first, to put vets on the whitelist for stuff that should stay open. I managed to take them yesterday, but one still has a downward prognosis and I may need to brave the outside world again.

So this all just adds up, till eventually you’re trying to work from home and stay focused but you find a whole day just go by without anything constructive happening and you don’t even remember what you did to take up all that time.

But let’s be real here, I’m one of the lucky ones. I have a job that’s still stable enough to let me take a day off, in an industry that won’t want to admit it but is going to profit off of this. That’s a privilege. It’s not one to take lightly. I’m also still well, and my family is too. That may not last but at this moment it’s better off than so many out there. We’re also all relatively able to self-isolate and work from home, keeping our risk factors low. Many don’t have that privilege either. Many right now are seriously struggling, losing their jobs, unsure how to feed their families. They might be ill in hospital, compounding the risk for their loved ones, or even now having to organize a funeral and deal with loss in the middle of all this.

And in all of this, I’m stressed and disappointed and mourning having to cancel a big ol’ party. I don’t know how to reconcile that, or how to properly help those who have it worse, but I think it’s a perspective that shows that humans are ridiculous creatures and we need to introspect from time to time, to understand where these feelings come from but also to hope to get a handle on them so we can go back to focusing on helping others.

So there are two things I want to end with here.

Firstly, that the shit we’re all going through is real, but some folks have it much worse. They need our support more than ever. Even if it’s only by properly isolating, not spreading this thing, and helping it blow over ASAP.

And secondly, if you’re a police officer tomorrow out on patrol, looking for isolation violations, and you find a couple in the middle of a park, reading their vows to each other, exchanging rings and pretending for a second that life is normal, just leave them be.

Linux Gaming at the Dawn of the 20s

2019 was a fantastic year for Linux gamers. At the end of the decade we had almost two thirds of the top one thousand steam games rated gold and above in terms of Linux compatibility. By contrast, just one year earlier, that number would have been sitting at the native game proportion of only a quarter. In plain numbers that’s 400 out of the top 1000 steam games unlocked for Linux in a single year. From one angle that’s a slight exaggeration — a number of these games were playable with older versions of Wine — but arguably the performance, stability, and ease of use at the time just didn’t hold up to what we have today. Linux gaming has, for all intents and purposes, evolved into something new.

ProtonDB stats

ProtonDB compatibility ratings as of 8th Jan 2020

Behind the scenes there’s still a feeling of unease. It’s a renaissance of sorts where the benefits are so real and tangible they’re impossible to ignore, but they come at the cost of less native ports and more developers passively relying on Proton without offering official support. It’s also worth speaking directly to those of my native Linux porting friends who have in the last year or so moved on to other endeavours, myself included. Working with you on this platform was an absolute pleasure, I believe we did valuable work at the right time and place, and while I’m sad to see it now overshadowed, I don’t think it’ll be forgotten. We have been given a real and tangible opportunity to bring more folks to our platform and to morph the public perception of Linux, and if we grab that by the horns then I have no doubt our work will be needed again in the future. Here’s to teaming up on great things when the wind changes.

So where are we at the dawn of the 20s? Well, there’s some bumps in the road, but we’re speeding ahead. Recently, a game I’d assumed we’d never be able to play, came to steam for PC in the form of Halo: MCC and is perfectly playable in single player on Linux. It’s a stark reminder of one of the elephants in the room though — anti-cheat. For Halo, Bungie have done us all a favour by providing an anti-cheat free single player, but for other games, developers aren’t so nice. The lifetime bans you may have heard about aren’t typically the mean spirited “because you’re on Linux” some will have you think, they’re almost always automated bans triggered by anti-cheat paired with developers with single-strike mentalities. Valve are working on anti-cheat, so I’d expect some small steps on this front soon. That’s not the only problem though — many games, particularly always-online games, update frequently enough that their risk of hitting Proton bugs or quirks rises significantly. This one I feel at least has a more pragmatic solution — the fixes found get integrated and usually won’t happen again, building up the compatibility layer’s resistances just like a human immune system, but it’s unlikely to ever be “perfect” enough for some folks.

These issues with Proton validate the scepticism we see in the community — if they can’t be improved, then the likely hood of pushing away gamers who expect the latest online and updated games to work flawlessly will keep itself high, and developers will stay wary of giving the Proton version their support or approval. There are developers who are happy to let folks use Proton by way of Valve’s official whitelist, which I’d expect to grow again this year, and many out there who have shown themselves non-hostile — I personally haven’t been aggressively shut down on my support tickets sent to Frontier about Elite Dangerous, or by Ghost Ship when contacted about early access game Deep Rock Galactic, so I believe a healthy relationship is possible, but we need be make visible and not fund developers shun Proton, perhaps with another column or entry in ProtonDB.

A view of the Milky Way

The Milky Way, from all the way out

What seems like aeons ago, in 2018, I made a small video as an honest and heartfelt attempt to highlight the amount of great native Linux games. You can read much more about that in the story I posted at the time. It may seem like a swansong now, but I think it’s more relevant than ever. It shows that even without Proton’s impact, Linux gaming was thriving in it’s own niche, and it’s well worth a watch.

./Games - A Native Linux Gaming Celebration

./Games - A Native Linux Gaming Celebration

Some time in 2019 I decided to put myself out there and create something again, I sent the word out that I wanted to make a video that showed off Linux gaming as it is today — highly compatible with thousands of games we never had access before. Just like before, I asked for help in gathering footage, this time using a Github repo and wiki, and the response was amazing. 250 clips were contributed coming out at 10GB of data. To all those that helped, thank you so, so much. I’m in your debt. Come to a LUG or Linux event in London sometime, I’ll by you a beverage or three.

My native video was mostly just a celebration montage, not targetted to any particular audience besides myself, and only marketing Linux gaming itself on a surface level. It was an inward-aimed war-cry against misrepresenting Linux gaming in the media, and I preferred it that way, but in the spirit of a new decade and a fresh start I had to make something “bigger”. It’s a shorter video, but one that tries to have a much wider impact, and I’ll be sharing it soon once I’ve ironed out the details about how to make a proper splash.

kdenlive timeline

The kdenlive timeline for video 2: electric boogaloo

Every time I devote myself to this kind of creative endeavour, I’m endlessly appreciative of the kind of stress involved for the artists and creators who constantly put themselves out there. This one took me months longer than I expected, and has gone through 15 draft iterations, each with their own problems, refactors and re-writes. Just like the last one, is far from perfect, it’s still not professional (though I’ve definitely made some real headway), but I absolutely love it. It’s a rallying cry aimed outside of our little bubble, begging to be seen and heard by folks who don’t know an alternative exists, or weren’t aware of what it’s now capable of. It aims to rouse questions, challenge expectations and share our pride, and if it does just one of those for you, then I’ll consider it a success.

It will also be very important to get one aspect of this video right — there’s a real risk when we show people Linux gaming that we give them the wrong impression about the games they may want to play. A measured approach is clearly better — show games that work well and direct people to or for anything else. To ensure I stuck to that, I set clear rules: for a non-native game to be featured it had to be at least qualify for a Silver rating on ProtonDB or equivalent. Silver is defined as “Runs with minor issues, but generally is playable”. I think it’s paramount we all have similar high standards when we talk about Proton to folks for the first time, so I hope others follow suite. Most of the games in my video are Gold or above, and I’ve carefully ensured the few silver games only have very minor problems.

Alongside my work and others, a movement to make a convincing attempt at pervasive Linux marketing is bubbling up with the aim to show off Linux in ways we’ve not really seen since IBM’s 2003 “The Future Is Open” advertisement. If we’re going to weather this Proton storm I strongly suspect we need to capitalise on the momentum we’ve gained as soon as we can, and rally behind a common goal of raising awareness of Linux as a viable and sensible alternative to Windows and Mac, for the obvious advantages of security and privacy, for it’s superior personalisation and control, but even for gaming. Expect significant headway to be made on that front in near future, get in touch if you want to help.

Linux gaming has never been better, so let’s share that message.

(Story originally posted on Medium)

UPDATE 08/03/2020: Since posting, I finally released the video under the Make It Linux umbrella. Enjoy!

./Games - A Native Linux Gaming Celebration

Going where no Steam Play has gone before with Elite Dangerous

What’s the one game keeping you a dual booter? Maybe it’s PUBG, or Rainbow Six: Siege? Maybe it used to be Overwatch? For me, that game was Elite Dangerous, and one year on from Proton’s release, I have a story to tell.

There’s a certain “je ne sais quoi” about Elite Dangerous that I’ve never been able to put my finger on. It’s a game set in a scientifically modelled, full-scale replica of the whole Milky Way galaxy, and as with that setting, the game is truly vast, remarkably cold, and frequently incomprehensible. Yet, when playing Elite, I get the same feeling as when looking up at the stars on a dark and moonless night — my hungry soul is fed. Or it could just be space madness. Regardless, it’s a feeling that I like to dip into every once in a while, immerse myself in, and try not to drown.

Back in February of 2018 I signed up for Distant Worlds 2, an expedition to cross the whole of our galaxy and meet up with thousands of others on the other side, at a star system known colloquially as Beagle Point. The system is named as a memorial to the late dog of the first commander to reach it, but is also a location that holds a special place in many other Elite Dangerous players hearts, partially because it’s very much no mean feat to reach it, but also because in one direction it offers a jaw dropping view of our galaxy, and in the other, the sheer black and empty abyss of what lies beyond. In a game so frequently set to a backdrop similar to a mottled night sky, those views, and the immense pilgrimage taken to get there, act as an unparalleled reminder of the scale of the universe and our place in it. It’s the kind of experience that stands proud as the best of what video-games have to offer. I’d never been out that far before, and it would take months to get there, but I just couldn’t pass up that kind of opportunity.

View across the Milky Way

There was one problem though. Elite Dangerous doesn’t have a Linux version, and still had significant issues with Wine. I’ve never been a “No Tux No Bux” kind of person, so I’d been playing the game on Xbox One first, and then on my Windows install, but this was slowly becoming the last game I needed that partition for. Even as a “dirty dual booter” I cringed at the thought of effectively changing my daily driver for a few months, but the expedition was also setting off in 2019, so I’d have to keep my gaming Windows setup alive and well at the very least for another year and a half. I wasn’t too happy with that prospect, but it was the hand I had chosen to reluctantly deal myself.

In summer, while preparing my ship for the trials ahead, Proton was launched and a ray of hope was lit. By winter, Elite was playable, but with lingering issues, and it still required a custom build with various patches and hacks. In testing, it still crashed or disconnected frequently for me, and had painful performance dips when on planets. It wasn’t enough, and I accepted my fate.

On January 13th we set off. I flew on Windows. The game servers crashed from the sheer thousands of spaceships all hyperspace jumping synchronously into the black. At least those crashed servers were probably on Linux.

Video of final jumps

I arrived at Beagle Point late after almost 5 months out there, on the 8th of May, and it was everything I’d hoped — a humbling journey and a pensive rest at the edge of our galaxy. I met with some folks on the surface of a world as far from home as we could imagine, and recounted tales of near deaths, earth-like worlds and black hole sunsets. Meanwhile, on the way, something amazing happened. Those custom patches had made their way into mainline Proton, DXVK had improved, and suddenly, with one small tweak (installing dotnet40, needed for the launcher), I could fly my ship on Linux.

Not only that, but the issues I’d always had with the drivers for my HOTAS, a Saitek x52 Pro, were all gone, including installers that aren’t even fully compatible with Windows 10, default clutch modes that just don’t go away, and weird bugs picking up some buttons as a 2nd mouse. On Linux, a perfectly usable driver for the joystick and throttle is right there in the kernel! The game fully picked up my Ultra-Wide monitor, when on Windows the OS would fight and move my other windows around failing to compensate. “ED Market Connector”, an external app I use for journey tracking, trade data sharing, and more, has a fully working Linux version. Lastly, and this blows my mind, it all works in VR — Sheer magic.

HOTAS setup on Linux

I made my way back to Sol on Linux, faster this time, enjoying every minute of an experience I’d wanted for years. I docked my limping but mostly intact Beluga cruise liner at a starport in the tiny human occupied bubble of space two months later on the 29th of July. I felt like I’d achieved something, and most importantly I’d been able to finally do it on home turf. I set off on Windows, but I came back changed, and these days, my Windows install is kept around almost entirely for work.

I wouldn’t claim that it’s a game for everyone, but there are a huge number of us who enjoy it’s take on the space genre. The fantastic blend of difficulty, control, subtlety, agency, scale, individuality and community all make Elite Dangerous a powerful experience. Those factors all make Linux great too, it’s impossible not to see the clear parallels. They’re both difficult at first, but a joy once you get going, full of wonderful nerds with their own stories and reasons to be, sharing their customisations, doing the hard stuff for its own sake, and creating something much greater than the sum of its parts. A year after Proton released, it’s a match made in the stars.

Command deck of my Beluga Liner

If you do see me out there in the black, don’t be afraid to say hi and share your stories too. Maybe we can start a squadron of penguin commanders.

This article was originally published on

So I was making a montage full of native Linux games

So I was making a montage full of native Linux games and then Valve dropped their Proton bomb

I think it’s fair to say that a rather large spanner was thrown into the works on the 21st of August ‘18, and I couldn’t just leave that heinous crime un-mentioned. I mean, for real, couldn’t Valve have waited until I was done? I kid, I kid, Proton has much larger and far-reaching consequences outside of just my small crowdsourced video, and I’d like to talk with you about them if you’ll let me.

A quick backstory first: earlier this summer Linus Tech Tips teamed up with Level1Techs and published a video about Linux gaming. The video, however, focused almost entirely on non-native gaming- emulated, virtual, or otherwise. It even showed off Deus Ex: Mankind Divided in a VM without even mentioning it had a native version, a version I’d worked on with my colleagues at the time. Given me and many people who I’d consider friends had spent years working on making native Linux gaming viable, I wasn’t too happy and vented on the interweb, possibly a little too much. Linus has since released a new video that accepts the failures of the first video and even shows off Deus Ex natively, so I can’t be too disappointed anymore.

Once in a blue moon, a little bit of anger leads to something good, and I found myself making a video absolutely chock full of native Linux games, crowdsourced with the help of a bunch of amazing people. The culmination of that work is below, and I’d strongly encourage you to watch it before continuing on if only to sit back and appreciate the sheer amount of awesome work that’s gone into shipping these games on Linux.

./Games - A Native Linux Gaming Celebration

It’s not perfect, or professional, but I love this video, it’s my attempt to shout big and loud about a gaming platform that so often gets overlooked, or bogged down in technical arguments when it finally does get a mention. It’s my war cry against long and misleading videos telling you how to configure GPU pass-through on a Windows VM, just to play games you already had access to on Linux. This medium is hugely vibrant and powerful, and so much of that can be experienced on Linux these days - What a wonderful thing to celebrate I say.

I also want to say a big thank you to all the people who helped me with this, from gathering footage, to giving feedback on early drafts. Special shout outs in particular to Beko, HardPenguin, Flibitijibibo and Patola for providing tons of footage, and valuable input and criticism. Beko in particular provided clips of 56 different games!

I’m genuinely touched that you all felt I deserved so much of your free time. Thank you. In the end, maybe the video is simply a parting gift to the universe, a swan-song of the heyday of Native Linux gaming, or a quiet squeak into the void. It’s certainly a tribute to all the great work done for us, but maybe it’s also a sacrifice to the gods of Linux gaming, to help us weather the coming storm.

“What storm?” I hear you saying. A Proton storm, my friend.

While I was making the above video, Valve made a very big, bold, and blunt move. To put it simply, Steam now lets you install Windows games on Linux, and runs them through a modified version of Wine, with DXVK, among other technologies. Of course, these technologies were largely available before in various forms, but Valve has made targeted improvements, and integrated them directly into the largest desktop gaming marketplace. It’s a game changer, and begs so many questions.

One thing that’s always struck me as curious in this community is that big-old Wine debate. Many of us are willing to throw Wine gaming under the bus, or embrace it outright, and duel with word-swords on the internet about whether to use Wine or not, but I’ve rarely seen someone get to the real meat of it - the question few seem willing to ask:

“What are you willing to sacrifice to get more games, and more people, on Linux?”

Would you sacrifice the overall quality of your games? Would you sacrifice your rights as a consumer for direct customer support on your platform? Would you sacrifice the safety of not getting banned by anti-cheat? Would you sacrifice the number of native Linux games and developers?

The way I see it, that’s been the truth of the matter for a while now. Something was always going to be sacrificed, it was simple physics, Newton’s first law. I think Valve has now brought us to that sacrificial altar and made the choices for us, but to be honest, that was always going to happen one way or another. To me, however, it seems that Proton is the lesser of a bunch of evils we could have faced. It’s minimised those sacrifices, and that’s all we could have hoped for, really.

To be frank, if you came here hoping to find a bunch of solid answers about where Linux gaming is heading then I’m sorry to disappoint. If you do want more solid thoughts, I’d suggest reading Cheese’s long-form article, it’s fantastic, insightful, and well worth the read. The truth is, part of me is worried for the livelihoods of my porting friends, worried that pushing for further direct competition with Windows is asking for a fight with a beast backed by so much money it’s naive to think we’ll come out unscathed, and worried that by embracing Wine we’ll risk losing a side of Linux gaming that made it what it is today.

Hear me out though, I do have a brighter vision of the future - one where Proton achieves its goals, and virtually all of desktop gaming works seamlessly on Linux, where Valve makes a console move and against all odds it somehow gets traction, where Linux gaming has its second renaissance. I fully intend to do what I can to help all of that happen, but I worry that it might come at a price no-one really understands.

I am excited, terrified, hopeful, worried, and virtually the rest of the emotional lexicon. When the dust settles, maybe you’ll find me making another montage video - and Valve, next time, could you delay whatever spanner you’ve got primed until I’ve at least finished my first draft?

(Story originally posted on Medium)

How to be a great advocate for a niche gaming platform

Directly helping to bring games to Linux can be super complicated - I’m talking low-level, real-time, writing-a-GUI-in-Visual-Basic-to-hack-the-Gibson complicated. What if there was a way to support the platform you love with just your regular old self? After years of stringent Meditation, Study and Calculations™ I’ve come to a miraculous conclusion: without even getting close to finding yourself stuck in vim, you can actually make a difference! Hear me out, friend.

This here is a collection of advice, rules, and reminders that I’d like to think if followed by a vocal minority, have the power to grow, nurture and reinforce our already strong community, without us even getting out of our seats.

You’re a fan of more than just the platform

First thing’s first, if you’re advocating for a platform, it goes without saying you’re a fan of that platform, but sometimes it’s easy to forget that you’re also a fan of the games you want to play. Be an avid fan of those games! Let developers know how much you like their creation, how hyped you are to play it, or how much you’ve enjoyed it’s previous incarnations. Messages and posts like these add up, and as a developer, I’ve seen the positive effect they can have on colleagues after a long day. As a fan, I’ve also seen games brought to Linux simply because users who were huge fans showed that joy and asked nicely. If you’re a fan of the game, why not tell all your friends too? Even the console peasant and windows nerds as well. Getting a developer more sales, even on another platform, will get Linux noticed!

Oh wow, I friggin love @CoolShootyGame on Linux! Hey @friendowindows1 and @XxPS4Friendo2xX, you should get it too!

You can have tangible value

If there’s one thing Linux users are good at, it’s bug reports. If you’re not good at bug reports yet, then there are plenty of simple guides online! Well documented bugs with clear and simple reproduction steps, video evidence, and a friendly attitude go a monumental way towards helping get that bug fixed. When you provide a great bug report you’ve made fixing the issue way easier, saving the developer time, and therefore money, and have been genuinely valuable. Report those bugs, and report them well, friend!

Hey Ms. Developer, I found an issue on level 2, here’s a video. I’m running Gentoo, but it happens on Ubuntu 18.04 as well, with driver 478.28 on my GTX 1180 that I transported in from the future. Let me know if you need more information!

You likely have a superpower

Sometimes it’s easy to forget the most significant power you have — the power to vote with your wallet. This superpower isn’t granted to everyone, we don’t all have disposable income, but for those of us that do, I say spend it wisely and well.

Here’s a general guide on how to do this:

  • Always buy on Linux, but only once a Linux version is announced
  • Buy direct from the developer if possible
  • Never use grey-market key sites, there’s no guarantee the purchase will be tagged correctly or that the developer will get the money
  • Play on Linux and soon after purchasing

Following these Four Simple Steps™ (scientists hate them) should guarantee that you show up as a Linux user and that the developer gets a bigger and visibly penguin shaped paycheck. Of course, in some instances, maybe you want Valve or GOG to get a bigger cut. If so, then go for it, I’m not your Mom, jeez.

You have a mighty fine voice

There’s a time and place for strong and powerful support, but when it’s misplaced it can come across like zealotry and be very damaging. At times things can get heated, and anger can get vented without realizing who might be reading, or the damage being done to the community. It’s especially hard to for a bigger company to defend themselves, so extra help from the community can be a real boon. A simple down-vote or equivalent can help a little, but what about an overt expression of friendliness? This can work wonders. Spread the love, it’s one of the most powerful ways to disarm and counter negativity.

A: You idiot, it’s easy to get game X onto Linux, it’s only 2D!

B: Hey friendo, I know where you’re coming from, I wish it were easy too, but I think we just disagree. Have you tried game Y on Linux though? It’s 2D too, and I really like it! You might too! 

Your time, and money, are more valuable than you think

This one is a simple numbers game. In a smaller community, a single user has far more value than they would have had among a larger crowd. Perhaps only 100 Linux sales of an indie game are enough to make that version worthwhile financially, compared to the 10 thousand or so Windows purchases needed. Your purchase is a full 100 times more important to that developer than any of those Windows bozos! The same applies to time spent on reporting bugs or helping in beta. Flex those 100-fold bigger muscles!

Uh oh, my muscles are too big and I’m trapped in this room. HULK STUCK. HELP!

You can practice respect and reciprocation

These are both things worth living by anyway, but it’s key to remember when to apply them. As a developer, I have so much respect for the work put into creating any game, however tiny, but especially for what it might have taken to bring the game on Linux, and to fix all the issues that will have been found doing so. I’ve spent weeks on single graphics bugs in the driver, or memory corruptions caused by tiny differences in the compilers between platforms. I have immeasurable respect for the others who delve to help bring games to Linux, and because of this, I don’t think too hard of those who have failed or have given up. I reciprocate those efforts, successful or otherwise, with love, direct messages, donations, Patreon subscriptions, advocating for the developer or simply buying their games. I think we can all do more of those, one way or another.

Whoa, Nelly! This Beta is a good start @GameDevDerp, but it’s a little buggy. Much appreciated though! Can I help to polish it?

Always remember, it’s complicated…

In the programmer community we have a shared wisdom — first estimate how long you think something might take, then times that by three. If you don’t know how many problems you might face, have a guess, then times it by 3, and estimate how long each of those might take by using the first rule again. As an outsider, I think it’s safe to say that even 3 is too small a number. Things that are simple in our minds can be orders of magnitude more complicated in practice, and it’s especially true when talking about the hydra that is game development. Solve one issue, 5 more can appear! It can be a wild ride. Bear this in mind when thinking about the work being done and you’ll go a long way.

Wait so that’s 3 times more issues, and 3 times longer, so 9 times the original, but each fix makes 5 more appear? Is that 45 or 14 times more? How does math work?

And lastly, everything you just read is wrong

Well, it’s not all completely wrong, but no tidbit of wisdom applies in all contexts. Sometimes it’s simply best to take a nice big step back, and let things happen. HexDSL recently had a wonderful small rant about this here. And besides, being an enthusiastic advocate can be hard work, we penguins have a tough time typing with flippers, and don’t even have vocal chords. Take a breather, preen those feathers, throw up some fish, and let fate handle the ways of this mysterious world.

LinuxPerson24601: *silence*

Well done! If you’ve read this far then it’s likely you’re now a Linux gaming zen master. Go out and spread that genius, you’ve earned it. Maybe next time I’ll be writing a new article with tips on how to be humble about your popular platform!


This article was originally published on

It’s Mother’s Day, and I recently binge watched Sword Art Online

It’s Mother’s Day, and I recently binge watched Sword Art Online. These two don’t exactly fit together, but bear with me. Near the end of the second series of SAO there is a scene involving a mother and her teenage kid that hit particularly close to home to me, and in the spirit of Mother’s Day, I felt the need to write up why. Minor spoilers for SAO ahead.

For context, SAO is a Japanese anime that explores the implications of “full-dive” technology, effectively Star Trek’s holodeck, or, more accurately, a much more consensual form of the Matrix. I think what drew me to SAO was that in the wake of Ready Player One and it’s inevitably dodgy movie adaptation, I was in need of a different look at some facets of the future aren’t that far off these days, issues like “Where does The Real exist when the lines have been blurred”, or “Does the validity of our relationships depend on physical interaction, or is it just a compliment”.

Honestly these questions aren’t even near-future, they are questions that need to be asked right now, and strongly I believe they are some of the most prominent and important social issues of my generation. What’s fascinating then, is to explore them through different eyes and different perspectives. This was where SAO came in. A disclaimer is in ORDER however, SAO does suffer from all the well-worn pitfalls of much of modern Japanese anime — flagrant inappropriate fan-service, absurd boy power fantasies, over the top plot stakes, and macguffins up the wazoo — but it would be a mistake to dismiss a work just on culturally different grounds, especially when the cultural difference is part of the curiosity.

So, at a basic level, SAO is primarily a story about what could happen if players were trapped inside a “VRMMO” where they’re informed that in-game death would mean real world death as well. The goal of leaving the game is also a lofty one — it clearly could take years. It’s an interesting preposition, and I believe effectively manages to demonstrate how those two facts can play together to force those above questions to be answered. In SAO season 2, the PTSD of the characters that managed to escape the game is compared to a sufferer of PTSD from a much more real-life and grounded scenario, that of killing in self defense. Both of these plot lines are fascinating, and the anime explores those key questions through exaggeration, theater, and a flare for the dramatic. All that tickled my sci-fi brain in all the right places, and if it peaks your curiosity it’s worth a watch, but it isn’t what hit me in the feels.

In the later episodes of SAO season 2 a more subtle plot-line emerges, one of a mother striving to ensure the best for her daughter, but while failing to see how the passions and experiences of her child played into that. The mother wants a school transfer, from the state run school designed to treat these PTSD suffering kids, to a well respected private school. She wants to fast-track her daughter to university even though she had missed two years of school while in the game. Lastly, she wants to take away the one thing that is still connecting her daughter to the experiences she had and the friends she made, her VR headset. You might think, since I talked about this hitting home, that I had similarly pushy parenting, maybe that I was forced to swap schools, but I wasn’t. I am hugely thankful that my parents did not treat me like this.

The key segment of SAO that hit me hard was when the daughter, after learning a valuable lesson in standing up for herself, made a final attempt to convince her mother to let her recover and discover her passions. She gave her mother a headset and asked for just 5 minutes — a chance for her daughter to show off her world, on her terms. The mother sees her daughter’s place in the world and comes to an understanding, I think, of what it means to be young and unsure, but full of ambitious energy waiting for the right target. In the end the Mother sternly makes a deal — better grades, and University, but she can stay as is.

VR wasn’t around when I was that young, but I remember a similar feeling as a teenager, of ambitions being projected onto me, of teachers and parents looking down on my fascination with games and their systems, and of a fundamental misunderstanding — that the experiences I’d had in games, online, and the friends I’d made, weren’t “real”. One memory, at the age of maybe 13 or 14, that stands out above all others, is of my mother eagerly letting me explain my world, on my terms — the guild of players I led, the forums I moderated, the game systems I’d been fascinated by and the video game economics I’d abused to make riches. That dynamic grew, and fundamentally changed how my hobbies were viewed from then on. I very much doubt I’d be thriving in what I do today if it wasn’t for that compassion and willingness to understand shown to me by my mother. For that memory, and countless others, I am forever in her debt.

Happy Mothers day, Mum.

What’s the deal with AMD’s new Linux Vulkan driver?

Hi, I’m a developer who works primarily on Linux games. I’d like to quickly cover the basics of what AMD’s new driver is, how it functions, and speculate on how it may fit into Linux gaming as a whole. If you’re technically minded then you’ll find a large, detailed, and up to date explanation of some of these aspects over at the AMDVLK GitHub repository.

What’s this thing’s name?

AMD’s official name for the driver is the “AMD Open Source Driver For Vulkan®”. From this point on, to avoid a big bag of confusion, I’ll be calling it by the development name AMDVLK. It’ll probably be best if as a community we try and do the same, otherwise we’re going to enter a world of pain when talking about RADV, the other AMD open-source driver for Vulkan, which is part of a broader collection of open source drivers built on a shared tool-set called Mesa.

What‘s the support like?

Pretty extensive - you can see the list of supported AMD GPUs here, but in general all the modern discrete GPUs are supported. The initial version (2.0.0) does not support geometry and tessellation on RX Vega, so a few games may have issues.

In terms of operating systems, AMD only lists support for Ubuntu 16.04.03 and RHEL 7.4, but as AMDVLK is open source it can be built and installed on pretty much any major distro. There is already an AUR package, for example, and we should expect mainline packages to filter through to all major distros soon enough.

So what is AMDVLK?

AMDVLK is an open source version of AMDGPU-PRO’s Vulkan component, with a few parts removed and swapped out to allow for it to be fully open source. To get into the nuts and bolts - AMDVLK’s components include the main bulk of the PRO driver code called PAL, and a slightly modified LLVM back-end for shaders, the same back-end that RADV uses, rather than the proprietary shader back-end found in AMD’s windows driver and AMDGPU-PRO. AMDVLK currently uses the same open-source amdgpu kernel module as RADV.

Wait, what happened to AMDGPU-PRO?

The PRO driver is still about, but don’t expect this to be relevant to Linux gaming anymore. For example, the latest version (17.50) is compiled targeting Ubuntu 16.04 or RHEL 6.8/7.2 and is nigh on impossible to install easily on other distributions due to various kernel incompatibilities. While compatibility may change in the future, the current impression from AMD is that AMDVLK is intended to supersede AMDGPU-PRO for Vulkan gaming on Linux. AMDGPU-PRO is dead, long live AMDVLK.

And what about RADV?

RADV is not going anywhere, and can even be installed alongside AMDVLK (yup, that’s right, driver cohabiting!). Both RADV and AMDVLK are already very performant, so expect close competition in the future, and also shared ideas for optimisation, features, and tools. RADV is also conveniently installed in the same packages as radeonsi (the AMD Mesa GL driver), and shares code with it.

In general, we could expect RADV to provide faster updates with bug fixes, and more legacy compatibility, while AMDVLK could provide faster performance and better support for the newest GPUs. To say any of those is a sure thing would be a mistake, as currently RADV provides better support for RX Vega than AMDVLK does, which isn’t as expected.

So, what’s the deal?

If all goes well we’re in for a fun ride here - two great open source drivers in direct competition can be a wonderful thing for AMD graphics on Linux. However, this does come with some pillars that must hold true:

Both drivers stay (relatively) bug-free

For developers, testing and fixing issues on multiple drivers in Linux games risks not being cost effective. This was a major issue only a few years ago when radeonsi and AMDGPU-PRO were both relatively buggy GL drivers. The open-source nature of both of these drivers should make this goal far easier.

AMDVLK and RADV stay easy to swap between

Nobody likes reinstalling different drivers to play a different game, especially not to do a simple comparison of the experience. Preserving this functionality would be a great boon to AMD gamers on Linux.

Without these pillars, we risk returning to the dark days of the old radeonsi and AMDGPU-PRO, where game support was sparse, and AMD couldn’t be recommended for Linux gaming.

There’s no hints of that yet, and the current outlook appears hopeful. It’s also great that AMD have made this move. Personally I had already planned on buying AMD for my next GPU, and this new status quo makes that even more promising. If only those bitcoin miners would stop buying them all…

This article was originally posted on Medium