PC no more

Fri 28 May 2021

There are small acts that can seem insignificant at first but can snowball into something much bigger. In this case, that act was taking the graphics cards of both my main workstation and my living room PC and swap them. The less powerful GPU, a Radeon RX580 goes in my workstation and the better one, a Radeon RX5700XT goes into to the living room PC. The swap was motivated by wanting to play some demanding AAA games on my TV and somewhat conflicted with my desire to learn Blender. Of course, all of this would have been a non-issue if there wasn’t a worldwide shortage of GPUs. I would have simply ordered one of latest Geforces and used it in my workstation, giving me access to great performance in Blender and the added ability to test video games on Nvidia for Lutris. Without this option, I had to give up on playing games on my 1440p monitor, at least the most demanding titles. On the other hand, I would get good FPS on any title played on the TV.

The machine I use had always been built with Lutris in mind. I ordered the main components, including a Ryzen 5 2600 CPU with a small-ish form factor micro-ATX case and motherboard on Black Friday 2018, with the intention of bringing the machine to SCaLE 2019. The machine (and my living room TV) did go to the expo in 2019, and also in 2020. Sadly not in 2021. It just sat there in my living room, starting to live its real life… The neat thing with Linux and Unixes in general is that you can call your devices whatever they are meant to be. You don’t have to call your x86 box a PC. Apple (pre M1) called them called them Mac. Sony calls them PlayStation. The lines between software platforms and CPU architectures start to become very blurry and it’s not too far fetched to start calling your Linux devices whatever they are meant to achieve rather than some vague standard created by IBM and Microsoft in the eighties.

This “PC” I built, now with the graphical power to run pretty much anything, especially on my cheap 1080p TV, now had a single purpose: to run games. It’s now a game console. This wasn’t new. The first computer I used, an Amiga, was either something to work on or to play games depending on which floppy was inserted. It was often marketed as an hybrid between a console and a computer. I wasn’t a fan of the PC back then, something I would associate with EGA/CGA graphics, PC buzzer sound, MS DOS and boring office use. Meanwhile, I had drawing programs in 4096 colors, 4 track digital audio trackers, arcade games playable with a controller… The demise of Commodore eventually led me to switch to a PC but it didn’t take me long for me to want to break from the traditional Windows setup and try something different, like Linux. A quarter of a century later, technology has evolved enough and yet come back to a point where we can reclaim powerful domestic devices as more than “personal computers”.

The difference between a traditional “Linux PC” and something totally different, say a game console isn’t that big. It’s mostly a matter of how you treat the device. Now the device has once single purpose, and any changes to the device must fit this purpose, it is never grounds for testing new stuff. This is a common practice in the server space where production machines must run constantly and remain stable. The culture around the Linux desktop is a lot different and seems to revolve around the concept of testing a lot of different things, whether distributions, desktop environment, new releases. This seems to go well with the idea that Linux is “about choice”. While testing all the different open source software sure is a fun activity, it can also compromise the overall stability of your system. A machine with a purpose, whether its a server or a console is meant to remain stable.

With a mindset of building something durable, I felt like I could use Lutris for what I had intended it to be: a tool to help building a machine capable of running a lifetime of games. Linux as a gaming platform was grounds for experimentation, now it’s grounds for conservation. Not old school, retro-gaming preservation but preservation in general, from the roots of video game to the present day and beyond. This machine from 2018, with a RX5700XT GPU upgrade proves to be capable of running the current PlayStation 5 titles such as Godfall or Cyberpunk 2077 on their highest settings, considering I’m OK with a 1080p display. I’m confident this machine will be able to keep up with the future.

Not being able to update my GPU, I wanted to spend some of the donations from Lutris to build the best Linux gaming environment I could imagine… The Lutris console starts receiving all kinds of controllers. The 8 bit-do arcade stick, a DolphinBar with a Wiimote and Nunchunk, a Capcom arcade stick for SNES with an adapter… For the keyboard and mouse games, I went for something bigger… A spare half-desk, the 27” monitor from my workstation, a new gaming chair and keyboard and mouse combo are added to the console, hooked up to the console with long HDMI and USB cables. I also wanted the keyboard and mouse setup to be versatile and usable from both a desk and couch. The only real option I found for that purpose was the Corsair K63 wireless keyboard with the Corsair Lapboard. While I’m not a huge fan of Corsair keyboards, this has proven to be the most flexible setup with other lapboard integrating an nondetachable keyboard or just being a receptacle for traditional keyboards… While I do enjoy it, I find this setup a bit too expensive for what it offers to recommend it for a simple console. A similar setup, without the capability of playing keyboard and mouse games from the couch would be to have cheaper wired devices on the gaming desk and a simple wireless keyboard + mouse dedicated for TV use, just enough to launch games or enter your player name. The lapboard does offer a nice experience for games like Horizon Zero Dawn or Cyberpunk 2077 (switching between a controller and keyboard + mouse is a great way of enjoying the game!) or even RTS games like StarCraft. For high precision shooters or really competitive games, the stability of a desk will be of greater use. Both the K63 keyboard and the Harpoon mouse has the ability to be plugged in as wired USB devices which made them a good choice for this versatile setup.

The nice thing about having a game console running on Linux and standardized PC hardware is that it gives you enough power and flexibility to be SDK for any game you’d want to release on that console. Blender, Unreal Engine or Unity can be installed in a matter of minutes. Not being a game developer, I still want to use the machine to make the software that will run this console. The choice of Godot as the platform to built it upon was the most natural one, being a totally open source game engine and offering powerful features while remaining easy to use. Within the first few minutes, I felt very much at home, with a scripting language close to Python, paradigms similar to those I use with Gtk and a UI that felt like I was using a supercharged Glade that was capable of building a controller friendly Vulkan powered UI with a few clicks. One of the first programming languages I had ever experienced (after LOGO and Amiga BASIC) was AMOS, a variant of BASIC with integrated game development features like handling sprites or playing audio. Godot has the same feel to it, transposed to today’s hardware: a framework to access the creative capabilities of machines without having to go too deep in the low level implementation details.

The initiative of having a game console running Linux was met with a good amount of doubt. I don’t really understand why. The PlayStation 5 and Xbox Series X are both machines with a Zen CPU, a RDNA2 GPU and 16GB of RAM. My console has a Zen CPU, a RDNA1 GPU and 16GB of RAM. Is it because of the keyboard and mouse? Same thing, PlayStation and Xbox support those. Is it because of the OS? SteamOS had Steam Big Picture and Gnome, so does the Lutris console. It’s a machine plugged to a TV that plays video games. If it looks like a game console, if if acts like a game console… it’s a game console! While Linux was originally written for the PC, specifically the 386 CPU, it’s become hard to narrow it down to this single platform given the omnipresence of Linux on all kind of devices and architectures. Everyone gives Apple (pre M1), Sony or Microsoft a pass when they sell x86 machines as something other than a PC. Meanwhile, Valve had a lot of trouble marketing their Steam machines as consoles. But that has a lot to do with Valve trying to sell something that people already have at a pretty high price. Deciding that my living room PC was now a game console was entirely free. Adding a bunch of accessories to it sure wasn’t but after scoring a high end game console without having to pay anything, I felt it deserved some decent gear around it...

The end result never ceases to amaze me and is a great reward for all the time spent on Lutris. It’s a console capable of running games from the past 50 years. It has games from Steam, Humble Bundle, Itch.io, GOG, Epic, Origin, Ubisoft, Blizzard... Games that don’t run on this system are more the exception than the rule. Even in the Linux community, it’s frequent to see people abandon their favorite OS when it comes to playing video games and give up to Sony or Nintendo. While Vulkan, Proton and Lutris showed it was possible to use Linux to play modern games, I want to show its viability as a complete gaming system, one that is compatible with the past while remaining open to the future! It’s not a machine for ray tracing or for competitive online games, it’s a machine dedicated to the enjoyment of games, including all the games I played over the course my life. Those start to add up when the first games I experienced were in the eighties... I find it sad when I hear about games that are only a few years old talked about like they are relics of the past. We don’t hear the same discourse for games like chess or poker, or any of the “non video” games. We can have a book collection, a music collection, a movie collection but video games are somewhat perishable because they are tied to a particular hardware or software configuration. But the current hardware and software we have at our disposal are powerful enough to work around this barrier. Not only emulators bring old games to our current hardware, they often improve them with upscaling or shaders. In the best cases, old games receive a new breath when the engine is open sourced or reverse engineered, making them ready to stand the test of time but also receive continuous development (Quake 3, Morrowind, and Diablo are such games). There are lots of valid reasons to keep running games as faithfully as possible to the original experience on original hardware. But keeping a library of your digital entertainment throughout your life requires you to keep all your systems in working condition… or replace it sometimes at great cost. With this console, I have something able to play across the ages. It is not a 9th gen console, it’s a 1st to 9th gen console.

The immediate future of gaming is uncertain. Streaming platforms are becoming a viable option, at the expense of requiring huge amounts of network bandwidth and having access to limited titles. Current gen game consoles and GPUs are both nowhere to be found. Current improvements seem to focus on 4k resolutions and ray tracing support, neither of which are really necessary to offer a great visual experience. In all this chaos, it feels good to just sit back and enjoy a lifetime of video games. Huge thanks to all of those who have helped in any way get Linux where it is today, as the ultimate gaming platform, and also to all of those who have supported Lutris and helped this project be where it is today!