Gaming and Game Dev on Linux

Linux has become my operating system of choice. Not only for general computing, web surfing, and pet projects, but also high-end gaming and game development, including my work as lead game designer and programmer at Golden Drake Studios. I mean, look, I’ll admit it: I still boot up Microsoft Windows now and then since there’s a (rapidly shrinking) number of games I enjoy that work better, or more conveniently, in that environment. Also, credit where credit’s due: I really like the overall look and feel of Windows 10 and it’s nice that Microsoft now directly supports a Linux subsystem. Nonetheless, customization is limited and certain “features,” such as forced updates, provide regular reminders that Windows doesn’t fully respect user freedom. Similarly, though I’m grateful to Apple for facilitating my childhood exposure to computers and cannot deny their products are appealing in some ways, they represent an even more draconian environment: far from full freedom despite macOS being built on an open-source, Unix-like foundation named Darwin.

So, because I love the ideals of free software (with minor caveats) and want to promote them, I’d like to share a few simple observations and opinions about the current state of gaming and game development on Linux. For my fellow free software enthusiasts, I hope this will spark some interesting conversation and debate. For users of Windows and macOS, I hope this will increase awareness and consideration of Linux as a viable and potentially liberating alternative OS, even among those for whom gaming is a priority.

Gaming

Let’s get right to the big question: What can Linux offer hardcore gamers?

More than ever before, developers are creating native Linux (and macOS) builds of their PC games. This is also true of more general applications, such as Discord and Spotify. Windows is still the primary market, so not everyone ports to other systems, but that’s starting to seem like the exception rather than the rule. You can follow these links to browse extensive lists of Linux games available through a few popular portals: Steam, GOG.com, and the indie-focused itch.io. Oh, and for all you Minecraft addicts out there, there’s a Linux installer available as well as a free and open source clone called Minetest.

Now, what about those Windows-only games? Well, for starters, many Windows programs actually run extremely well on Linux with just a little help from a “compatibility layer” such as Wine. I recommend installing Lutris and/or PlayOnLinux as their communities have created install scripts to help set up Wine configurations for a wide array of games and other software. Now, I must admit, installing a Windows game this way doesn’t always go smoothly, and even if everything runs perfectly at first, if the game continues receiving updates there’s a small chance it could eventually break your Wine setup. However, in my experience it usually works beautifully, including installation of the Windows version of Steam followed by installation of multiple Steam games within that same PlayOnLinux setup.

Actually, that last example involving Steam is, I’m happy to say, now superfluous: on August 21, 2018, Valve—the company behind Steam and a strong supporter of Linux gaming—announced the release of their own Wine-based compatibility tool: Proton. With this tool enabled, the Linux version of Steam can now directly install a growing list of Windows games that are officially confirmed as Proton-compatible. You can also enable installation of unconfirmed games, many of which run wonderfully (though some will require a little tweaking). Many Linux gamers eagerly tested this new feature and started compiling their own unofficial lists of compatible and semi-compatible games as well as advice for how to get certain games to perform more effectively. Currently, the best source for this accumulated knowledge seems to be ProtonDB where you can search for any game of interest and see what people have reported (combined with details about their hardware, graphics drivers, etc.). I’m impressed that some folks are even having success with notoriously Linux-averse games like Fallout 4. In fact, as of this writing there’s at least one person who’s had moderate success running Fallout 4 VR on Linux! And yes, the outlook is even better for Skyrim and Skyrim VR.

Now that I’ve mentioned a couple of VR games, I have a confession to make: for now, virtual reality tends to be a smoother experience on Windows than on Linux. Well, I should qualify that: I’m speaking primarily of apps associated with SteamVR and the HTC Vive (I don’t know as much about other VR ecosystems). Given Valve’s apparent commitment to elevating Linux as a gaming platform, I expect SteamVR performance under Linux to improve greatly in the years ahead, but until that happens, as the proud owner of a (refurbished) HTC Vive, this will continue to be my primary reason for dual-booting Windows. In any case, if you’re interested in using SteamVR on Linux, either for fun or development, you’ll want to read the release notes and known issues.

Let’s shift gears and forget about high-end graphics for a minute. What if you just want a simple diversion now and then? Or perhaps, like me, you enjoy the retro aesthetics of older (and even downright ancient) games? If so, Linux is a treasure trove of options! Here’s a small sampling of the free and open source games directly available through Linux repositories:

In addition, Linux can obviously provide access to browser games as well as open source emulators of several nostalgia-inducing “classic” systems: DOS, Macintosh, Commodore 64, you name it. Going beyond mere emulation, porting, etc., there are also projects out there breathing new life and new possibilities into some of the best games of yesteryear. Here are a few I recommend checking out (assuming you have access to the original game data they utilize):

In everything I’ve discussed above and will discuss below, your mileage may vary depending on your hardware, your overall Linux environment (more on this later), and the specific software you’re trying to run. Just remember: if you hit a roadblock, you’ll likely find someone who can help you online (or offline if you’re into that whole “talking to people face-to-face” thing and happen to know me or another Linux advocate) and it might even turn out to be a valuable learning experience.

Game Development

Now then, how about game developers? What does Linux offer them?

As a Unity (a.k.a., Unity3D) enthusiast, I’m happy to say it’s now just as convenient to use and manage the Unity game development platform on Linux as on Windows or macOS thanks to the Unity Hub (Linux build direct link here). Through the hub, you can install any of the latest versions of the Unity Editor as well as tutorial projects and other resources. As for writing the C# code for Unity projects, the most popular option on Linux now appears to be Microsoft’s VS Code (yes, Microsoft has been directly and indirectly supporting Linux apps for a while now, and sure, if you buy me a beer I’ll be happy to listen to all your conspiracy theories on this topic). I’m quite impressed by VS Code and use it extensively, but I also occasionally go back to Atom (which is technically also a Microsoft product now that they’ve purchased GitHub, but oh well…long live the Octocat!) and, heck, you can use vim or whatever editor you prefer.

Because I grew up playing some of the best JRPGs of all time, I also enjoy tinkering with RPG Maker now and then. It wasn’t too difficult to get some of their earlier products running on Linux, but their latest product, RPG Maker MV, actually has a native Linux build available through Steam. So, if this suits your style, what are you waiting for? Go make that Final Fantasy clone you’ve been dreaming of all these years!

Oh, and yes, my friend, the Unreal Engine is also available on Linux. I haven’t worked with that engine yet, so I can’t offer any feedback or advice, but if you want to install and run this powerful beast, here’s your starting point.

There are also many excellent free and open source game engines, frameworks, and libraries out there, such as Godot, Torque3D, Armory3D, libGDX, Allegro, cocos2d-x, the early id Tech engines, gamecake, LÖVE, and so forth. Just want to play around with Python? Check out Pygame, Pyglet, or Panda3D. Feeling bold and want to build an Android game from scratch? There’s a Linux build of Android Studio waiting for you. A lot depends on how much programming you want to do as well as what type of game you want to make, for what purpose, and targeting which platform(s), but overall, if you want a versatile, full-featured game engine that’s truly free in both senses of the term, I recommend Godot. It could be the one you’ve been waiting for!

Here are some more free and open source programs I like that might come in handy:

Switching to Linux

So, if you’re a Windows or macOS user, but the idea of a free and open source OS interests you, should you make the switch? Maybe, under two conditions:

  1. You’ve test-driven a specific distribution (“distro” or “flavor”) of Linux long enough to be sure you like it and it fits well with your workflow.
  2. You accept the possibility of occasional—and perhaps time-consuming—frustrations early on as you learn the ins and outs of your new system, how to customize its appearance and behavior, and how to fix any issues that pop up.

The fact that Linux is available in many different flavors is part of what makes it fun and interesting and speaks to the profound level of freedom it enables. I recommend perusing the DistroWatch list of ten major distros, then picking two or three (or more) that catch your eye and trying them out as virtual machines via VirtualBox or VMware (preferably the latter if you want to test high-end games). I’ve test-driven a lot of distros over the years, along with several of the different desktop environments that tend to get packaged with them. They all have pros and cons, so I don’t want to go too far in sharing my own biases, but for gamers and developers considering a leap to Linux, it’s worth bearing in mind that Ubuntu and Ubuntu-based distros have the most widespread popularity and, for that reason, also tend to receive the most attention and troubleshooting when it comes to developing games for, or making games compatible with, Linux (if anyone can direct me to countervailing evidence on this or any other assertion I make, I would appreciate that). They also tend to be quite user- and newcomer-friendly and, as is the case for any major distro, there’s an abundance of information readily available online for any questions or issues that may arise. For these reasons, although I’m occasionally tempted by other distros—Manjaro, openSUSE, Fedora, and good ol’ Debian (on which Ubuntu is based)—I always use Ubuntu or an Ubuntu-based distro as my daily driver.

Having said all that, no distro is “perfect” and any major distro that appeals to you will probably be fine. Just be aware that some might ask a bit more of you in terms of time spent researching and problem-solving. I recommend making a list of games, development tools, and other software that are a priority for you and doing a little research: For current or recent builds of this specific distro and its accompanying desktop environment, have people encountered serious issues when trying to run this software (either as an actual Linux build of that software or with help from a compatibility layer as discussed above)? The answer may be yes, just as it can be for Windows or macOS, so the next question is: Were they able to resolve those issues in a timely manner, or at all? If you see evidence that an insurmountable or excessively time-consuming issue is likely, you may want to see if another distro (or desktop environment) would serve you better. Alternatively, if you’re currently using Windows or macOS and know that the software in question works well under that OS, you may want to set up a dual-boot situation. In many cases, running that OS as a virtual machine within Linux is a great solution as it allows you to run both operating systems at the same time. Again, thorough research (and backing-up of data) is recommended before making any commitments. Speaking of which, you’ll also want to investigate whether your specific laptop or desktop hardware is likely to “play well” with the distro you’re considering.

If you’re curious, yes, I have settled on a personal Ubuntu-based favorite: Linux Mint, with Cinnamon as the desktop environment. In early 2018 I tried going back to default Ubuntu, but though I can definitely see why some people love the GNOME 3 environment, I’m not a huge fan. I turned instead to Xubuntu for several months because I kinda-sorta like XFCE, but that desktop environment really is lagging behind in terms of quick and easy integration with all the features of modern hardware as well as the overall “feel” and functionality most users now expect. I mean, sure, it offers an impressive array of customization options, but those only go so far. You can, as I did, write your own shell scripts to make up for some of its limitations, but that takes time away from other things I’d rather focus on. I also noticed a slight uptick in software issues and, as these annoyances accumulated, I finally asked myself: “Why am I spending some of my precious time struggling and toying around with this semi-archaic system when I could be using a distro (and desktop environment) that’s already 95% the way I want it right after install, has a better software manager and other unique and useful apps and features built-in, and simply looks and feels fantastic?” These sentiments are highly subjective, of course, but in any case, I returned to Linux Mint a couple months ago and am extremely glad I did. It works well with any hardware I’ve ever thrown at it, is extremely user-friendly (and beginner-friendly, especially if you’re accustomed to a Windows-style GUI), and keeps getting better without ever changing “too much.” I highly recommend it.

That sums up everything I wanted to share for now. Please let me know what you think. Have I left out anything crucial? Do you feel I overstated (or understated) anything? I’d love to hear your feedback in the comments below, on Twitter, or elsewhere. In the meantime, Happy Holidays and happy gaming!

Originally posted on DavidCDrake.com