"It was the best of times, it was the worst of times." The opening line to Charles Dickens's A Tale of Two Cities very aptly describes the state of gaming on Linux. It's better than it's ever been, but ultimately, this just highlights how much further Linux has to come to catch up with Windows, and Mac to a lesser degree.
I've owned most of the major consoles up until this generation, but for the past 20 years or so I've considered myself a primarily PC gamer. It's not so much a "PC master race" mindset as much as the types of genres I preferred (strategy, CRPGs and simulations) felt more natural playing on a keyboard and mouse than a gamepad. I also worked in computer shops in high school & for a few years after graduation, and got computer parts at a heavy discount, so I built a new gaming every year or so for about 10 years.
For the majority of my time as a PC gamer, I've used some version of Windows as my operating system, because that was the only realistic option. I started playing around with Linux way back when LInus Torvalds released the first version of the Linux kernel about 25 years go and in the early days, it was very rough around the edges. Driver support was pretty much non-existent and getting even the most basic hardware to work took a lot time, patience and trial and effort. I remember being thrilled when I got my sound card and modem working after a weekend of digging into the innards of the Linux kernel. Needless to say, this wasn't a platform that lent itself to gaming.
Nonetheless, there were ports of some major games to Linux, notably the original Doom, Quake, and SimCity. Most of these were ported by hobbyists working pro bono in their free time, but there were high profile commercial ports here and there. However, even as a Linux continued to mature into a more stable platform that supported a wide range of hardware, there were several things working against it becoming a mainstream gaming platform:
Driver Support - Probably the biggest roadblock, and one that continues to be an issue to varying degrees. To paint a very simplified picture, most Linux drivers are open source, meaning the source code is available for anyone to examine, compile, and modify to their hearts content. Some hardware manufacturers are very open to this idea, but the two biggest players in 3D graphics, AMD (formerly ATI) and NVIDIA aren't. They feel that releasing their driver source code would reveal a lot of the inner workings of their hardware which the competition could reverse engineer. This goes against the natural order of the Linux community, which was built on taking open source software and continuously making it better through the contributions of the community as a whole. To be fair, this has improved a lot in recent years, but the open source drivers for AMD & NVIDIA cards are still significantly behind their closed source Linux drivers in terms of features and performance, the closed source drivers are still far behind their Windows counterparts.
DirectX - Back in the early days of Linux, 3D gaming was just starting to become a thing. There were a handful of competing APIs - OpenGL, 3Dfx's GLide, and Microsoft's Direct3D, a subset of the DirectX API. Some games supported multiple APIs, but it was obvious the industry needed a standard. GLide went the way of the dinosaur fairly quickly, as it only worked on 3Dfx cards, and most developers didn't want to limit themselves to only working on a small subset of hardware, especially as 3Dfx started losing ground to NVIDIA. DirectX was horrifically bad and unstable in it's early releases, but it steadily improved in the late 90s to the point that it became the best performing graphics API, and the de facto industry standard. It also conveniently only ran on Windows operating systems. Over time, OpenGL became a less and less attractive API to developers, as it didn't perform as well as Direct3D, and was prone to more issues, as graphics card manufactures started treating OpenGL support as less of a priority. This meant that the main open source 3D API that worked in Linux was losing traction, and gaming in Linux took several steps backwards. While a handful of major studios still supported OpenGL, for the most part, commercial gaming on Linux would come to rely on the Wine project, a compatibility layer that allows Windows software to be installed and run with varying degrees of success on Linux. For 3D support, however, Wine has to translate Direct3D calls into OpenGL, which leads to hit on performance. On top of that, Wine has only gotten to the point that is relatively stable in the past few years, and it still lacks support for DirectX 10, 11 & 12. Though supposedly that is coming in 2016. Meanwhile, OpenGL is making a comeback to a degree, and the Vulkan project looks promising, but for the time being, Direct3D is still the leading 3D API.
Lack of Installed Base With Consistent Wants/Needs - The biggest problem facing Linux is lack of an installed base. We're a vocal minority, but we're still a minority. Not only that, but we're a fragmented base - there are hundreds of different Linux distributions, and users of one distribution don't necessarily have the same use cases and desires as another. And even among all those communities, there are further divides. Some users think Linux is serious business and don't have time for gaming, and don't think others should either. They want Linux to be taken seriously as server/workstation and could care less about playing games. Basically, there's a bunch of splinter groups of an already niche user base asking for games to be ported to Linux, and most developers/publishers don't see enough return on investment to put forth the effort, especially given the other hurdles Linux gaming faces.
For the longest time, if you were a Linux user and wanted to also play games, you pretty much had to dual booth some version of Windows. If you had the time, patience and perseverance, you could try getting it to run through Wine, but Wine can be a source of frustration as sometimes it takes running multiple versions of it because "fixes" in one version designed to address issues with one major Windows game release might break compatibility with another game that had been running perfectly fine in previous versions. Not only that, but even the best running software in Wine almost always has some issue that requires either some hack/work-around, or just living with it. Skyrim is regarded to run reasonably well in Wine at this point, but still has a laundry list of issues including freezing when the window loses focus, textures going all black, and water not being transparent.
But a few years ago, things started to change that gave Linux users a glimmer of hope. In 2012, Valve announced and released a port of the Source engine to LInux, along with finally releasing a Steam client for Linux. This made one of the largest digital distribution platforms available to Linux users, and support has been steadily growing. In addition, several popular middleware platforms such as Unreal Engine, Unity and CryEngine now support Linux natively, making a porting to Linux a relatively simple effort for developers, despite the smaller user base. In addition, Valve released their own Ubuntu based Linux distribution, SteamOS, and recently began selling "SteamMachines", basically branded gaming PC built around SteamOS designed to deliver a console like gaming experience.
Today, a vast majority of independent game studios support Linux, along with an increasing number of large commercial developers support Linux to varying degrees. In the past year, some major releases such as BioShock Infinite, Shadow of Mordor and Alien Isolation have seen Linux ports. WB has announced plans to port Batman: Arkham Knight to Linux, but given the sorry state of the PC version from initial release, to several patches later, I don't have a high hopes for that being a very good port, if it actually arrives at all.
Of course, getting a port is only part of the problem. Getting nit to run well is a whole other matter. Linux versions of games typically have higher system requirements than their Windows counterparts, in part due to the translation issues that occur from DirectX to OpenGL, or that the required version of OpenGL requires features in newer graphics card revisions. Alien Isolation, for example, only supports NVIDIA cards in Linux running version 355.11 or higher, and recommends a 9700, whereas the Windows version calls out a GTX6600 has being the high end graphics card for the recommended requirements.
In mid-2014, I dropped Windows and started running Linux as my only operating system. Only a small portion of the games in my Steam Library were supported in Linux, but I had a large backlog, and a significant portion of the Windows only games ran well enough in Wine that I decided the time was right. The era of Linux gaming was finally here.
Then my wife got me Fallout 4 for Christmas, which requires DirectX 11, and that's still months away from working in Wine. By "working", I mean "things will load and maybe sort of run somewhat". And knowing Bethesda, there's no way a Linux port of Fallout is coming any time soon/ever. On the day after Christmas, I gave up, wiped my system, went through the hassle of reloading the manufacturer's Windows 8.1 image and upgrading that to Windows 10, then reinstalling Fedora along side of it. I didn't even bother with loading Nvidia's official drivers in Fedora, because I don't have any intention of gaming on it this time. If I've got to run Windows to play one game, I might as well run it to play all games, and get access to my full Steam Library.
Things are getting better, but there's still a long way to go before Linux can be a mainstream gaming platform. I still have hope this will happen sooner or later. Maybe if Valve keeps pushing SteamOS, the Vulkan API catches on (and it actually releases), and graphics drivers catch up to their Windows versions, we'll see more support throughout the industry. But until the day comes I can play new releases with similar requirements as the Windows versions at launch, Linux just isn't a viable platform for someone who does the majority of their gaming on PC.