Skip to main content
  1. Posts/

Switching to Linux as a Game Developer

··2073 words·10 mins
Development
 Author
Space is the place. Professional game programmer and designer since 2013

Like most people, I’ve always used Windows on my computers. Like, what other choice is there? All the software I use day-to-day is made for that operating system first and foremost, and to Microsoft’s credit, it does just work most of the time no matter what your computer specs are. But also, when they add or change stuff in Windows that kinda pisses me off (it’s becoming more and more frequent these days), I start wondering if there will ever be a better alternative.

Copilot Preview taskbar button that appeared suddenly

And yes, I know, Linux has always been right there, free to download, with lots of options tailored for different tastes/workflows, but the fact that almost none of the software I use to actually be productive as a game programmer - on a remote team, at a professional game studio - is available on Linux has made it a non-starter. It’s always been a neat toy with some cool ideas that I simply can’t use as a daily driver.

But also it’s been like 10 years since I last looked at any of this, and I really don’t care for this hard pivot to pushing AI and advertising into Windows that Microsoft is rolling out, so I figured it was time to check in on the state of Linux.

Woah, it’s a viable alternative now??
#

I was really surprised to find that the Linux landscape is so much easier to use and more widely supported now than it was 10 years ago.

  • Both Nvidia and AMD support graphics drivers for Linux.
  • Many of the major game development tools have officially-supported Linux versions that work just as well as their Windows counterparts.
  • Thanks to Valve and the Wine developers, you can play your Windows games on Linux and rarely notice any issues.
  • There are a number of user interfaces available that are polished and beginner-friendly. The command line is rarely needed for daily tasks.
  • And to top it off, some of the interface design decisions made in different Linux desktop environments are way nicer than what I’m used to in Windows! Like, Windows feels like a step back every time I go back into it.

Screenshot of my desktop in Pop!_OS 22.04

After I stopped tinkering around in a few different desktop environments and operating systems, I settled down on one and got it all properly set up. I tried spending a weekend, then a few weeks working entirely in Linux on an Unreal 5 project with my coworkers, and except for a few minor issues, I was able to be just as productive and do everything I needed to do while not booting into Windows. It rocked. And I actually started to prefer it.

Some available game development software
#

None of this will work for you if the things you need to be productive aren’t available. It just so happens that all the software I need/am used to is available. I’ll give a brief overview of stuff I’ve used to give you an idea of what’s there. Obviously, there’s some stuff you might have to go back to Windows for, like console SDKs, testing Windows builds (since 90% of your audience will naturally still be using Windows) or other highly specialized software. But a lot of the main things I’m used to using is available and officially-supported.

Software Note
Unreal Engine 5.x Works just as well as the Windows version. Some nagging issues include PIE (play-in-editor) windows opening under the Editor window (you can set them to be Always On Top, which fixes this) and the editor crashing a little more frequently (but still feeling stable). But otherwise it’s virtually indistinguishable from in Windows.
Unity 2022.x Same deal, it’s Unity, and you can sometimes forget that you’re not in Windows as you work. But I’ve taking to developers who have found it much less stable than on Windows/macOS.
Godot 4.x I mean, obviously this one is the same as on Windows. And runs perfectly.
Blender I’ve already been doing all of my modeling in Blender for a while now, so this didn’t take any adjustment. But it is such a good modeler now in its own right at this point that I prefer it over Maya or even my beloved modo.
Krita I was looking around for a good alternative to Photoshop for making textures and UI elements, and as a former Photoshop user, Gimp is still just janky and unintuitive. I wrote off Krita at first for being a free take on illustration software like Clip Studio or Procreate, but actually the interface is very Photoshop-like, has keybinds to make it feel more like Photoshop, and has a lot of the Photoshop filters I care about.
TrenchBroom This is a level editor mostly intended for making Quake maps, but a lot of people have started using it as a general level design tool and its workflow is so, so nice.
Slack It’s Slack. It works just as well as on Windows, including (and I didn’t expect this) taking calls, using webcams, and screen sharing!
Discord Same with Discord. Looks and works exactly as it does on all other platforms. It sometimes has trouble screen sharing on some setups, but otherwise solid.
Helix P4V “Perforce” as the kids call it. Now this wasn’t intuitive to install. Like they just give you a zip file with the software, no obvious executable, and just assume you can figure it out. Took me a while to learn that you have to launch this from the Terminal (or make a shortcut that opens it in Terminal mode, which of course I’d do). The setup is janky and lazy, but once you got it running, it’s fine.
Steam Seriously! The Proton compatibility layer that Valve made for Steam Deck is included with the Steam client, and you can launch almost any game from your Steam library and it works flawlessly with no noticeable problems with performance. I don’t feel like I have to go into Windows to play a recent release!!
Windows Applications If you use something like Bottles to create little Windows runtime containers, you can run applications you can’t replace in Linux, to varying degrees of success.

Distributions/Editions
#

“Linux” is technically a whole category of operating systems that use a common low-level core (called Linux). There are lots of different “distros” offering different combinations of UIs, features, and workflows. There’s a lot of options out there, which can be a bit paralyzing. But the main things I really cared about when exploring these OSs were the interface (what I’d be using every day), software support, and how infrequently I had to think about the OS and just focus on game dev. This list isn’t super exhaustive, just stuff that I found to be good jumping-on points.

DE Screenshot Note Distro
KDE Plasma Screenshot This is one of the most mature and popular desktop environments. Think Windows but designed to support loads of customization, with theme and extension search and download built-in. You can also make it look pretty visually cool! Fedora / Kubuntu
Gnome Screenshot This is the other of the Big Two desktop environments, and it’s a little weird at first, but worth giving a spin. The screen is mostly free of stuff except your open windows, but when you hit the Windows (“Super”) key, it zooms out and you get access to your dock, an iOS-style application grid, and a glance at your workspaces. Besides that, there are tons of Extensions you can get to customize Gnome to be JUST the way you want it. Ubuntu / Fedora
Cinnamon Screenshot Developed as part of the Linux Mint project. Another Windows-esque interface, but you can super-customize your taskbar’s layout, add weather, system info, what music is playing, and so on to your taskbar, or make more taskbars. Or put info widgets on your desktop. It’s really easy to get into and you can spend a lot of time making it feel like your own if you want. Linux Mint
Cosmic Screenshot Gives you a macOS-style dock, a top-bar with info that’s always visible, and a really nice (optional) window tiling system that makes all of your windows take up all the available space on your screen. Pop! OS, which this interface is exclusive to, is also fine-tuned to be a really great OS for creative work and gaming. Pop! OS
Hyprland Screenshot I wouldn’t recommend this as a beginner, as this requires lots of time for customizing, configuring, and learning before you can fly with it. And I decided I didn’t have the time for this, either. I mention it to make a point that there are very different workflows available than what Windows and macOS have you used to. But also just look at it. It looks like the popular perception of Cybernetic Hacker Mode. Arch/Endeavor

Set your expectations
#

Basically, as a game developer, your ability to make a Linux system your daily driver is way more possible than it was 5-10 years ago by a metric mile. It feels really liberating that there’s a workable alternative to The Big Two. But it’s important to set expectations, based on my experience as a still-Linux-newbie, especially if you want to use it in a professional setting.

  • While Nvidia and AMD both have supported drivers for Linux systems, AMD chose to make their open-source, while Nvidia has mostly stayed proprietary. As a result, systems with AMD graphics chips sing on these OSs, while Nvidia-powered systems can sometimes have quirks or issues. But they’re improving every day. When you go distro shopping, keep in mind if Nvidia drivers aren’t included, you’ll likely be auto-set to a low monitor resolution until you install them, which is pretty easy.
  • The presence of choice at no cost will mean your first forays are likely to have you jumping around to different distributions in order to see which one you like most. You can run all of these off of a USB drive, but you won’t really know how one is working out for you until you do a full system install and can set up all of your software. I recommend having a dedicated Linux hard drive you’re willing to reformat a bunch. Or get a USB-C flash drive, as those are fast enough to work at full speed on.
  • There are still a lot of rough edges. You will find some bits of jank in any of the distributions you download. You’ll find yourself asking questions to things (how do I uninstall this pieces of software? How do I configure a specific piece of specialized hardware like unique buttons on my mouse?) that will send you into some rabbit holes online at random. Sometimes fixing an issue means diving into folders on your filesystem and changing text files. It’ll ease up as you do it more and more, but it can feel annoying at first.
  • More room for customization means that getting everything set up exactly the way you want may take more time than with Windows or macOS. But all the desktop environments and distributions listed above (except Hyprland) are beginner-friendly, and therefore you can get yourself setup and personalized without touching a command line.
  • I’ve encountered bugs in Unreal and Unity that I haven’t seen in Windows, but so far nothing show-stopping.

Hopefully this has been informative or given you ideas. I hope that more good, appealing choices come around for PC interfaces and that they become more accessible and less scary to people. Linux still requires a bit of tech savviness, but it’s the best it’s ever been, and the software you need to do most game development tasks are finally not only available, but super, super solid.

Updates
#

September 13, 2024
#

I’ve learned a lot more since I originally wrote this, realized some of my conclusions were wrong, and also got a lot of good feedback when I first posted this, so wanted to revise this guide. Some changes:

  • Added a blurb about KDE Plasma 6, another Windows-style desktop environment
  • Added blurb about how you can also run Windows applications with Wine or Bottles
  • Added a point in “Set your expectations” to note considerations when running on Nvidia graphics cards
  • Removed note that Unreal Engine games can’t play over a network with Windows clients. Super not true. Done it while at work, it’s just fine! Just make sure your game and whatever is handling your game connection can talk to each other