My Journey To Finally Ditching Windows For Good

By

I was a young teenager in the late 90s, browsing the aisles of the local Babbage’s (before it became GameStop), having somehow convinced my dad, not a lover of games, that we needed something to test the new CD-ROM drive. I knew nothing except that the Starcraft box (remember those?) looked the coolest and that’s what we got. On a birthday around that year I eagerly ripped into the wrapping of a present to reveal…Baldur’s Gate. I had never seen an RPG before or known anything about Dungeons & Dragons (D&D), but clearly the kid at the local game store knew exactly what to recommend to my mom for a kid like me.

Sometimes you get lucky: the right games at the right time and a lifelong hobby is born. Other times you work hard: software RAID and fiery, wobbly windows, Gentoo, full disk encryption… but you love the work of tinkering and a love of Linux is born. The blending of those worlds is often like oil and water, but with the magic of open-source and indie game developers I’ve been living in the best of both worlds. This is my journey to a Linux only life, while still gaming. Thinking back, some of my memories are more hazy than I would like, but I’ll blame all the different computers, hardware, distros, and constant trying of new things, rather than age.

My fondest memories of computer gaming are from childhood summers with my brother and an empty house. We’d take turns playing Starcraft and hoping it would work on this reboot of the finicky, old 486 and taking breaks by the pool to pour over the lore in the manual (and remember those?). When it did run, it ran very slowly. I realized years later: a 30-minute survive mission wasn’t supposed to take all afternoon. The Terrans, Zerg, and Protoss were our companions and enemies for an engrossing summer. Another Blizzard game, Diablo, opened the world of action RPGs, balanced by the D&D classic Baldur’s Gate (with it’s tomb of a manual). The Butcher haunted us with his yells of “FRESH MEAT!” and I learned how to dupe spellbooks with clicking in the right spot. Meanwhile, 2nd and 3rd edition D&D games gave us the esoteric THAC0, spell sequencers, and killing a red dragon with a monk’s Quivering Palm. These were the games that quickly consumed me and inspired me as I learned to program, starting in QBasic, Java, and C, often with an eye towards making a game.

While games were an early connection to computers, it was not what drew me to them at first. For that I have to go back to something like 5 years old and the TRS-80 (as seen in the header image): I would pound away at its half-broken keyboard trying to replicate my babysitter’s BASIC program that printed “Hi podiki!” more times than my young self could count. I’d ask to see it over and over again.

There was a certain magic to computers, these machines that seemed to do anything if you just knew how to tell it the right way. I’m still chasing that feeling I had as a kid sitting in the closet with the leftover computer, be it yak shaving my Emacs configuration or making a game engine in Common Lisp.

I haven’t yet mentioned Linux explicitly, and that’s because I’m not really sure when I first heard of it. Both of my parents worked in computers (programming, system administration) and so hearing Unix, tales of punch cards, debugging, and lots more was just part of the background. While my first time with a computer was in DOS and then Windows 3.1, along with Apples of the time in school, I certainly knew there was more out there.

I do know I was exposed to Linux as a physics undergraduate during internships at a national laboratory. While some areas in science and engineering get tied to Windows for proprietary software and hardware interfaces, in high energy or particle physics, it is all custom built (for better or worse, as physicists are not computer scientists) and Linux is much more common. I would come to see why when learning LaTeX as it was not pleasant in Windows, to put it mildly. I think Linux and open-source just naturally fits with scientist types: experimenting, learning, and control. What good is a program if you can’t see its guts, break it, fix it, and make it your own? Not that it came easily to me at first; who knows how many zombie ssh sessions with vi running I left in my wake. I think I only remembered how to quit vi 15 years later (I chose Emacs in the editor holy wars, obviously).

Looking back, it seems the seeds were planted early for me and gaming on Linux, but it would take many years to bring them fully together.

Like any red-blooded college kid, I experimented. Naturally that meant building a shoebox-sized (small form factor) computer based on a Soltek Qbic EQ3801 that ran Windows, but later (about 2005) Debian, then Gentoo with software RAID, complete with those Compiz window effects. If I couldn’t make it look cool, what was the point? While I was learning my way around Linux as part useful (life as a physics gradstudent) and part natural curiosity, I mostly just found it empowering and fun. As that computer aged I repurposed it as a media server (still on Gentoo) that recorded TV with a Hauppauge TV tuner/capture card. Around then I also dipped my toes into the Mac world with converting an old Dell laptop into a Hackintosh. This became another gateway to the joy of *nix systems, the ease of using terminals and package managers to make things the way I wanted them.

As much as I enjoyed playing with Mac and Linux, there was one thing that still kept me on a Windows desktop: games. (Photography software, namely Adobe Lightroom, would keep me on at least a Mac for a long time as well.) I still enjoyed the AAA titles — though indie gaming was taking off by this point — and the latest and greatest with their fancy graphics demanded Windows.

Not that I didn’t try: Wine, virtual machines, and eventually hardware passthrough with virtual function input/output (VFIO). While I had sometimes okay results with older games and software with Wine, I didn’t game much on Linux. I would occasionally search online to see what was possible with Wine or support for games in Linux, as I wanted to do everything in Linux, one day. Then, about 2015, I found out about VFIO. Even better, that I happened to have a motherboard and hardware configuration that should support it. VFIO was a revelation. For those not familiar, this virtualization technology allows you to use a piece of hardware, like a GPU, in a virtual machine directly with nearly no overhead. This meant native performance, especially with multi-core CPUs and plenty of RAM that you could reserve for the VM. Like anything in this realm, the needed hardware details (motherboard manufacturers often weren’t clear if they supported the virtualization tech needed, or on what hardware slots) as well as software configuration was often as much art and luck as anything. Soon enough, however, I was no longer booting into Windows but spinning up that partition through Linux in a virtual machine to play Windows games natively.

It was amazing. I essentially had the best of both worlds, as I could live daily in Linux and switch over to Windows on a VM as needed, without even logging out of my session and no noticeable performance impact! Just run the VM and switch the monitor’s input, as Windows used the graphics card rather than the integrated graphics I used for Linux (so different hardware connection to the monitor). Doom (2016), Grand Theft Auto V, and whatever else I wanted was there to play. I realized how little I needed or used Windows for anything else, and my next laptop was not a Mac either as I (happily) moved to a fully open-source photography software ecosystem, centered on darktable, as well. I finally could stop running into barriers imposed by proprietary software and make things the way I wanted, or at least try to.

As most of my time was now spent fully in Linux, I began to appreciate the moral and ethical side of Free and Open Source Software (FOSS). Not only did I like being able to fix problems (often of my own making, but that’s part of the fun) by diving into the code, but I saw it as an integral value and goal of software to be open and accessible. While I don’t work on development of any big project, I have been trying to be more proactive on bug reports or fixing things in smaller packages like org-msg (HTML email writing in Emacs) or cl-tcod (Common Lisp support for the roguelike library libtcod). While the motivation is to fix a problem I’m having, it is gratifying to feel that I am giving back in some small way as well. I’ve certainly benefited immensely from the work and knowledge shared on the Internet, from GitHub to random blogs and Reddit.

Nearly all of my time is spent in open-source programs, chiefly Firefox, Emacs, and Termite, the only big exception being games themselves. While I don’t see that changing any time soon, I try to support the programs that make this possible, and am always happy to see a game with a native Linux version. It is astounding to think how far we have come with Wine, Proton, and DXVK from how things were even just a few years ago. Proton and DXVK were another huge step forward that let me finally cut the last virtual ties. I haven’t even booted up the Windows VM with VFIO in a couple of years — it’s just not needed for me. The original Windows partition on my laptop from 2016 was never used, and I recently deleted it to reclaim the space. It always seemed like this was still further down the road, until suddenly it was here.

That brings me to today and joining Boiling Steam. I’m not sure when I first came across the site some years ago, but being one of the few Linux focused gaming sites, it has been one I check up on regularly. When the call for contributors went out, I jumped at the chance. I’ve been wanting to do more public writing; my day job is teaching (more academic or professional) writing seminars for undergrads, so I have no excuse. I find writing helps me gather my thoughts and figure things out, and writing about Linux and games is a fun way to be more involved with the community.

My first article, a review for the excellent Monster Train, is something you will see more of, probably for my favorite genres of (A)RPGs, deckbuilders, almost anything roguelike/lite, and the random indie. Some recent favorite games have been:

  • Rocket League (alas, I have given it up)
  • Divinity: Original Sin 2
  • Disco Elysium
  • NieR: Automata
  • Slay the Spire
  • Grim Dawn
  • Stardew Valley
  • SUPERHOT
  • Hades
  • Dead Cells
  • Katana ZERO

Besides the ones I’ve already mentioned, some early influential games also include:

  • Myst
  • Street Fighter II (on floppy disks!)
  • Diablo II
  • Baldur’s Gate II
  • Sacrifice
  • The Elder Scrolls III: Morrowind
  • Star Wars: Knights of the Old Republic
  • Unreal Tournament (I preferred this over Quake 3 but played both)
  • Nethack (FOSS, a true roguelike, and nearly as old as me)
  • QBasic Gorillas (FOSS, one of the earliest I remember playing, and you can play it online)

Nowadays I run Arch on both a laptop and desktop, as a bit of a compromise from more control and compiling of Gentoo. I don’t distro hop as what I really want is a minimal start and access to the latest and greatest packages, so Arch has been working well for me. Keeping with that theme, since 2016 I’ve been using tiling window managers rather than a desktop environment (keeping it light and customized) with i3 and now StumpWM (though just starting to learn Haskell and xmonad). I also bought a Raspberry Pi 4 recently to run a home server and start replacing some services with self-hosted FOSS options (Syncthing, Matrix, and Pi-hole so far). It runs Arch Linux ARM.

As I’m always playing with new software and tweaking configs, I hope to make some useful guides or share any tips I find helpful. My desktop (GeForce 970, Intel i5-4690k, and 24 gigs of RAM as a holdover from my VFIO days) is still capable but getting a bit long in the tooth, so some hardware upgrades and maybe VR is in the future, too. Finally, as I wrote about recently, I want to help bring out other voices to be heard and continue exploring the very real issues that games and open-source can be a part of, or better yet, fight.

Other times I may just want to share thoughts about the latest weird game or cool program. As I have learned over these years, you really can have it all, at least with some hard work and help. There’s never been a better time to be a Linux user and gamer.

But I really do miss proper game boxes and thick manuals.

My cat is about 20 years too late if he’s interested in that $150,000 “Make Something Unreal Contest,” but the box is still shiny.