30 January 2020

What’s the best shooter to play in 2020? Where can gamers find the coolest weapons, the hardest enemies, and the most thrilling challenges? There’s a lot of cool games on the horizon such as Cyberpunk 2077, Doom Eternal, Halo: Infinite, and Rainbow Six Quarantine. But – don’t laugh – the best first person shooter you can play this year is already out and has been out for over 20 years. That’s right. Doom. The 1993 version. And this post is about how you can make the most out of it today – as a modern FPS gamer with no patience for floppy disks and MS-DOS. Let’s start off with the obvious part. Why would I want to play Doom in 2020? What is so great about Doom that still is relevant 27 years after it was first released? Isn’t it just a museum piece? In this post, I will tell you – at least from my parochial perspective – why Doom is a compelling and even dominant experience 20+ years after its initial release, how the actual experience of playing Doom can vary immensely depending on your preference, and how to play Doom on your computer (though in theory you could play Doom using a piano or a toaster if you wanted).

I cannot add much to this classic JP LeBreton essay about Doom, so I recommend you read it in full. But I do have some comments to offer on top of it. Doom is the closest thing you will be to a pure instrument of destruction whose sole function is to search and destroy. There is no pretense of making a “realistic” tactical FPS experience. Why would you want that? Realism is moving at human speed, experiencing fatigue, reloading and hiding behind cover, and guns that recoil when you fire them. Well, pseudo-realism anyway – you really don’t want the “real” in gaming. Pseudo-realism is also linear levels with mostly scripted events, “ripped from the headlines” storylines with Hollywood actors, and formulaic gameplay that mostly serves to justify exorbitant GPU prices for incremental graphical optimizations. These can be fun, addicting, and sometimes sublime, but on the whole you are really not getting much for your time and money. I especially see no reason to fork over 175 GB of storage space(!) for the new Modern Warfare title.

All of this only gets in the way of what many gamers want when they play FPS games. Doom’s “2.5D” graphics, though primitive by modern standards, help it pull off things that are far more difficult to do with today’s software tooling. You experience the game as 3D, but the game’s level design and movement patterns are more or less reflective of 2D arcade shooters like Robotron, Geometry Wars, Commando, or Smash TV. You move incredibly fast (50 scale miles per hour!) through non-linear explorable levels that are designed to optimize play rather than look realistic. You fight diverse hordes of slow-moving enemies (compared to you at least!) that are individually weak but collectively quite dangerous. At the higher difficulty levels (Ultraviolence is really the best way to play), your only hope of survival is raw speed and cunning. The stylized abstraction of the game makes it feel like a strange, nightmarish vision you are hallucinating, which gets progressively more terrifying as the early infested techbase levels transition into hell itself.

But that is just the base game, its immediate sequels (Doom II, Final Doom, Master Levels), and the add-on episodes officially/semi-officially released (Thy Flesh Consumed, No Rest For the Living, Sigil). Far, far more content has been released by fans, much of it of far higher quality than one would expect from third party levels and campaigns. I should mention here that fan-made level design and campaign design has become so competitive that even Sigil – made by original Doom designer John Romero – only placed in the Runner’s Up spotlight of the 2019 Cacowards (Doom fan equivalents of the Oscars/Emmmys).

[S]ince 1994, Doom mapping has grown into a specialty craft. The well of knowledge about how to paint a gorgeous scene, or how to wire up combat that pleases spoiled players, has been filled and deepened and refilled many times over. One needn’t bring up the Sunlusts or Counterattacks of the world to cast SIGIL’s faults in relief. Smaller-scale auteur masterworks by @mouldy, @yakfak, and @years, and well-crafted id Software ghost-echoes by @Alfonzo, @Pavera, and @Marcaek, show that SIGIL’s pure craft is a cut or two below what would win it a Cacoward this season, even with throwback appeal in mind. Implementation can lag behind concept. In the heat of battle, Romero relies for danger above all on the environment and resource balance—on paper, a fine and fitting choice. But too often, when the environment relents, when armament is restricted, the action lapses into the static grind of the Ultimate Doom’s roughest patches: chewing through harmless pinkies and cacodemons, cleaning narrow hallways. This is where Romero’s task was toughest, and how SIGIL is most apparently retrograde; finessing tension from restriction so steadily, without a lapse, requires a finger on the modern player’s pulse. The closer also disappoints, dumping spider and cyber unceremoniously in a glorified tunnel. The original game’s final encounters lacked in difficulty, as judged by future generations, but not in theatrics.

Tough crowd, even if they did have high praise for it in the other parts of the review I didn’t quote. Try it yourself, and then sample some of the other mapsets they mention and make up your own mind. Personally, I think much of what gives Doom longevity is modding that goes beyond simply just releasing new levels and campaigns. Doom is perhaps now a meta-game in the way that Gentoo Linux and Arch Linux are meta-distributions of Linux. Because the source code of the game engine is freely available (you need the proprietary game files to play it), Doom can be modded and customized to fit almost every imaginable taste and niche. Want all of the weapons from Call of Duty? Got it here. Want Fortnite/PUBG style Battle Royale multiplayer? That’s there too. There is even a graphically intensive total conversion mod that hardly looks recognizable anymore (looks a lot like Resident Evil and Silent Hill) and transforms Doom into a survival horror game. Those just looking for an optimized graphics/sfx experience can get Beautiful Doom, Smooth Doom, or Faithful Doom.

Almost everything can be customized and tweaked. Even very trivial changes can immensely improve the game experience. I am not particularly attached to the original MIDI music from the game, so I play with heavy metal covers of the music. For the original Doom, I always play with Andrew Hulshult’s IDKFA total music conversion album. For Doom II and Final Doom, I play with the Doom Metal Volume 5 anthology. There are far too many mods – especially things like weapons reskins, monster randomizers, or the entire collection of multiplayer updates to the original IPX-based deathmatch system – to discuss. I will briefly discuss some of my favorite gameplay modernizations, which substantially change the base gameplay to cater to gaming developments after 1993. Besides being fun to play, I find the contrasts between them interesting as a case study in the balancing of tradition and innovation in legacy socio-technical systems.

Brutal Doom and its forks embrace many features that the original game deliberately eschewed. There is reloading, aiming down sights, far more weapons – including things more characteristic of modern shooters like frag grenades, SMGs, automatic shotguns, and assault rifles - than the original, more tactically demanding enemies, and almost comically intense levels of aggression. Ali’s Brutal Doom is a speedfreak version of Brutal Doom with lightning fast enemies that deal more damage and make you feel far less of a badass. Project Brutality is the exact opposite, with bigger guns, bigger baddies, and bigger guts. I tend to play BD with third party weapons and monster add-ons that add even more weapons and enemies and randomize their spawn patterns and abilities. PB has built-ins that can be tweaked to do the same thing. At its best (especially on higher difficulty levels), the BD style of Doom mods can be played as a hybrid of Doom and modern FPS games, perhaps an alternative timeline in which id Games anticipated the CoD/Battlefield wave of shooters and pre-empted it in the 1990s.

Former human enemies that once were the weakest combatants in the monster bestiary become far deadlier opponents. Additionally, you have to reload and manage a far more complicated tactical system than the original game, forcing you to have to merge tactical styles you learned playing modern FPS titles with the older and divergent 1990s FPS style Doom pioneered. That being said, it is not CoD/Battlefield lite. The non-human monsters are far more intimidating, angry, and powerful. Especially with BD’s monster mods and PB’s defaults, the monsters are far more diverse than the original Doom’s bestiary and force you to still have to be lightning-quick and constantly think on your feet. All of this is controversial among Doom fans. As LeBreton noted, the original Doom was highly optimized for balance. Not just balanced weapons and monsters, but a balanced experience first and foremost. Complex Doom – in particular with the Legendary Complex Addon or Clusterfuck – is a modernization that also increases the intensity of the game and randomizes monsters and their abilities but is far more conservative in preserving the balanced experience of the “vanilla” Doom.

The Zorasoft line of games presents a different philosophy for modernizing Doom play. The original Doom Bible design document envisioned a class-based system where you could select characters with different weapons loadouts and attributes. Doom Delta is an interesting re-imagining of what that could have been. The Zorasoft line of mods take a class-based system as the starting point and add in many elements from other 1990s shooters such as Quake, Duke Nukem, Half-Life, and Unreal. My personal favorites in these are Doomzone, QuakeStyle Unbound, and Zagemod. Doomzone and QuakeStyle Unbound allow you to select from at least 10-13 different character classes with variable loadouts and attributes. Zagemod allows you to play as one of the different protagonists from across the Doom series (Doom, Doom 3, Doom 64, Doom 2016, etc), each of which also has variable characteristics. Given the diversity of play options its hard to uniformly characterize the experience. Finally, an alternative modernization strategy is to simply emphasize the diversity within the Doom series itself, as Zagemod does but Slayer’s Rampage and MetaDoom explicitly optimize for. What kind of diversity? I’ve spoken mostly about the Doom I-II line but there’s also Doom 64, Doom 3, and the post-2016 line of Doom reboot titles.

Moreover, console ports of Doom like PSX Doom have a subtly different feel than the PC original, to say nothing of how vastly different Doom 64 is from any of the early 90s PC or console versions. The series internally varies in many respects but the simplest way to describe the differences is to look at the original science fiction, fantasy, and horror influences on the Doom series, often acknowledged subtly or directly in the Doom Bible. Doom owes a significant debt to the atmospheric horror of the Alien series, the swords and sorcery elements of Dungeons and Dragons, and 80s gorefests like Evil Dead and They Live. Less specifically, the generalized spirit of Lovecraftian occult terror that would be more prevalent in the Quake series is present. It coexists with other elements that evoke Starship Troopers and Forever War-esque mil-tactical sci-fi and 80s dystopian sci-fi franchises like The Running Man, Robocop, Escape from New York, and Scanners. But more simply the divergence in Doom implementations can be – abstracting from technical details of hardware implementation, game engines, stories, and game mechanics – summed up by the conflict in all of these influences between fear and rage. How do you imagine yourself reacting when your world is suddenly invaded by hostile, horrifying, and dangerous creatures? Or, more specifically, how would you imagine your idealized movie or game version of that kind of scenario? There is no “right” answer here and the original Doom was a compromise between two competing kinds of answers.

For some people, survival is wandering through abandoned outposts, gun at the ready to blast a demon that could appear out of nowhere from any one of the dimly lit corridors. Ammo is scarce. Weapons are powerful but far from what you really need to feel safe fighting the hordes from hell. Isolation, paranoia, and gloom is the ambiance much of the time. Sustained stretches of subtly growing fear while you wander through nightmarish levels are punctuated by sudden combat shocks. For other people, it’s time to kick ass and chew bubblegum and whoops there’s no more bubblegum. You are a massively overpowered badass and if the demons are big that means they have big guts. The opening of the 2016 Doom sums it up: “[t]hey are rage, brutal, without mercy. But you. You will be worse. Rip and tear, until it is done.” You spend most of your time in relentless fighting and it takes some time to unlock the entire potential of your arsenal and abilities in battle. But when you do, you fight without fear or mercy and – blood and body parts flying everywhere – obliterate your demonic foes before they can gib you with their powerful weapons and attacks. Most Doom titles strike a balance between these competing design imperatives, but the degree to which they balance them can vary heavily. This influences a lot of choices modders make, even if many gameplay modernizations try to incorporate lots of details from the Doom titles and unrealized design prototypes from the Doom Bible.

How do these differences play out in the various Doom titles? One immediate difference you notice immediately in Doom 64 is that the camera is at chest height, making everything around you look more dangerous and intimidating. Doom 3 added in a flashlight for illuminating dark environments that ran out of power and made the protagonist move far more slowly and sluggishly. On the other hand, Doom 2016 introduced large arena-based battles where you fight wave after wave of demons you have to annihilate using specialized glory kills to get health and armor power-ups. Doom Eternal will have even more frenzied combat, if early previews are evidenced. So many Doom gameplay modernizations optimize for different characteristics across Doom titles. Brutal Doom Black Edition is very different from the other Brutal Dooms in that it tries to incorporate more of the survival horror spirit of Doom 3 into the game. On the other hand, Slayer’s Rampage often feels like a compromise between older Doom elements and the newer mechanics of the post-2016 titles. MetaDoom, because it features monsters and weapons from across the Doom series, averages the various elements out to provide an all-in-one experience within the base Doom game engine. Zagemod lets you play as all of the protagonists from the Doom games. It’s really up to you, again, to customize your experience of playing Doom. Doom is what you make of it, even if there are some underlying constraints that will be constant across all variations and customizations.

On that note, the part you’ve all been waiting for (joke): how to actually install, configure, and play Doom. I will stick to Linux and Microsoft Windows, the only operating systems where I do much gaming. This is also PC-specific. You can play Doom on consoles and mobile devices too. And, strangely enough, all manner of other things. First, buy Doom titles from Steam, GOG, or BethesdaNet. I would stick to just Ultimate Doom, a 1995 version of Doom that comes with Thy Flesh Consumed as a fourth game episode. There is also a new version being offered via BethesdaNet that includes some upgrades and throws in Sigil and other add-on campaigns too but its only for people using the Bethesda launcher. Ultimate Doom is a very good place to start before really entering the Doomverse. You can play classic Doom pretty well out of the box using these game launchers, but I don’t exactly recommend it. Why? Let’s take a look at the version of Ultimate Doom that Steam packages on the Linux command line via the tree directory inspection tool.

Ultimate Doom/
├── base
│   ├── AUTHORS.txt
│   ├── capture
│   ├── COPYING.txt
│   ├── DEFAULT.CFG
│   ├── DOOM.EXE
│   ├── DOOMSAV0.DSG
│   ├── DOOM.WAD
│   ├── dosbox-0.71.tar.gz
│   ├── dosbox.conf
│   ├── dosbox.exe
│   ├── d.WAD
│   ├── INSTALL.txt
│   ├── MOUSE.CFG
│   ├── NEWS.txt
│   ├── README.txt
│   ├── SDL.dll
│   ├── SDL_net.dll
│   ├── stdout.txt
│   ├── THANKS.txt
│   ├── ultimate.conf
│   ├── ultimatem.conf
│   ├── uninstall.exe
│   └── zmbv
│       ├── README.txt
│       ├── zmbv.dll
│       └── zmbv.inf
├── testapp.bat
├── ultimate.bat
└── ultimate + mouse.bat
 

The outer directory has two batch files, let’s take a look at ultimate + mouse.bat and see what’s there.

.\base\dosbox -conf .\base\ultimatem.conf -fullscreen -exit
exit  

Surprise! They packaged the game with the DOSBox emulator, a few dynamic link libraries, and custom config files. Steam launches the executable in DOSBox when you play from Steam. This is a successful strategy for preserving retro games while making them comfortable for modern gamers. But there are more than a few downsides. You’re stuck, well, playing a game in an emulator and are – more importantly – missing out on all of the features you could enjoy with a source port. What’s that? Recall that I mentioned earlier that the source code of the actual game engine is available for anyone to download and re-use. One of the major advancements id Games contributed was the logical separation of game engines – underlying systems for managing game assets – and the game assets themselves. Game engines could be re-used across game titles (there are new commercial games that still use game engines from the 90s) and also customized and tweaked for different implementation platforms. Hence in my not-so-humble opinion the best way to enjoy Doom today is to use a source port specifically customized for your computer and operating system.

There are many, many source ports and you can find a rough comparison chart here. As I have mentioned throughout this post, though the base Doom experience is similar across all variations even minor implementation differences can noticeably change the game experience. Some Doom players, for example, dislike “limit-removing” ports that go beyond the limits inherent in the original Doom source code and executables. Modern Doom ports also give players the ability to jump, crouch, and freely look around the levels. None of these things were present in the original versions of the game. Finally, modern source ports also contain graphical optimizations that were not present in the original games. The original Doom used software rendering due to the need to ship titles to 386/486 PCs that lacked specialized graphics hardware and topped out at 33MHZ clock speeds. Some Doom source ports support hardware-based rendering using OpenGL, bringing improvements (3D floors, dynamic lighting effects, improved skyboxes, etc) that would only emerge later with more sophisticated computer hardware. Thus, while there are many, many ports the vast majority of addons, mods, and maps tend to be optimized for GZDoom, Zandronum, or PrBoom/PrBoom+ family.

For the sake of simplicity I am going to stick with GZDoom, which I use almost exclusively. It is the easiest to set up, configure, and further customize. GZDoom – variants such as LZDoom and the older ZDoom are also available – can be downloaded here. There are pre-compiled binary executables for Microsoft Windows, Macintosh, and Ubuntu Linux. If you don’t have any of those platforms you will have to either compile the source code or rely on a customized solution provided by your operating system/OS distribution. For example, I mainly play on Arch Linux. So how would I get a working copy of GZDoom? Well, the Arch User Repository has a PKGBUILD of GZDoom, meaning that I use a tool like yay to fetch the GZDoom sources and then compile them for my machine using a shell script supplied by the PKGBUILD maintainer. I’m guessing you probably won’t need to go to such lengths (and all things considered I have it easy given how hard it is for more exotic Linux distros) to get your own copy of GZDoom up and running. Once it is installed, it will generate a gzdoom.ini configuration file. This is a critical file that contains information about where GZDoom searches for game data, what files to automatically load when Doom launches, and all of your customized options. Keep track of this file.

Once GZDoom is installed, you will then likely need to tell it where you put the main game IWADs. I-what? So, Doom game data is stored in WAD (where’s all the data?) files. Each WAD file contains a header, a directory, and data (called “lumps”). An IWAD is an internal WAD, often containing the base data needed to run a particular game. You augment IWADs with Patch WADs – PWADs – loaded after the IWAD. The IWADs can be found wherever you downloaded your purchased Doom games to. Here’s, for example, where Steam downloaded my copy of Doom II: Hell on Earth.

steam/steamapps/common/Doom 2/
├── base
│   ├── AUTHORS.txt
│   ├── capture
│   ├── COPYING.txt
│   ├── DEFAULT.CFG
│   ├── doom2.conf
│   ├── DOOM2.EXE
│   ├── doom2m.conf
│   ├── DOOM2.WAD
│   ├── DOOMSAV0.DSG
│   ├── dosbox-0.71.tar.gz
│   ├── dosbox.conf
│   ├── dosbox.exe
│   ├── INSTALL.txt
│   ├── MOUSE.CFG
│   ├── NEWS.txt
│   ├── README.txt
│   ├── SDL.dll
│   ├── SDL_net.dll
│   ├── steam_appid.txt
│   ├── THANKS.txt
│   ├── uninstall.exe
│   └── zmbv
│       ├── README.txt
│       ├── zmbv.dll
│       └── zmbv.inf
├── doom2.bat
└── doom2 + mouse.bat

If GZDoom doesn’t automatically detect your installed WADs, you will have to write the locations into your gzdoom.ini file. That’s not exactly that difficult. Here’s mine:


[IWADSearch.Directories]
Path=/drives/p6/doom/main
Path=~/.config/gzdoom
Path=/usr/local/share/doom
Path=/usr/local/share/games/doom
Path=/usr/share/doom
Path=/usr/share/games/doom

I have all of my IWADs copied into the same directory (on a separate drive for games and other stuff) for convenience’s sake, and all of the config files (as is the custom in Linux) are in the .config folder off the home directory. This is not very different in Windows, though depending on what Windows version you are using you may find that the actual location of the .ini file can vary. If you find all of this too tedious, the ZDL launcher can automate it via a graphical menu. You will want to have ZDL (or a similar launcher) anyway if you want to play extension maps and mods and it makes other things like multiplayer setup easier as well. Some maps and mods are released with PK3 or PK7 file extensions. Don’t be alarmed, its just another name for ZIP files (the reasons why are complicated and not particularly interesting). Once you have the game itself loaded and running, you can configure details such as controls, window size, and graphics to your personal specifications. I recommend that you play through the original game at least once, specifically on Ultraviolence if you can, before playing any mods that update the game. It’s good to get a feel for what the baseline experience is before you start to play around with it.

The only thing I do recommend modding right away is the game music. I personally think that the IDKFA remix album really brings out what the game soundtrack was going for and makes it easier to get into the swing of things. This is a good opportunity to show one of the niftier features of the gzdoom.ini file, which is setting PWADs to autoload with particular games.


[doom.Autoload]

[doom.id.Autoload]
Path=/drives/p6/doom/extra/mods/primary_mods/music/IDKFAv2.wad

[doom.id.doom2.Autoload]
Path=/drives/p6/doom/extra/mods/primary_mods/music/DoomMetalVol5.wad

[doom.id.doom2.commercial.Autoload]
Path=/drives/p6/doom/main/master.wad
Path=/drives/p6/doom/main/nerve.wad

Here, you can see that I’ve set GZDoom to automatically load the heavy metal music WADs for both Doom I and Doom II whenever the respective games are launched. Below you can also see that I’ve set up WADs for add-on episodes (Master Levels for Doom II and the No Rest for the Living chapter of Doom II) to load when Doom II is launched. Finally, a word of advice, learned the hard way from playing with mods: just because you can mod something doesn’t mean you should. I recently experimented with HD texture packs and 3D models. It came out looking….well…the “look how they massacred my boy” meme sums it up. It’s important to understand that the game was already complete in 1993. Everything else is optional. It doesn’t mean that Doom is the last word in FPS gaming, or that there’s no way to enjoy mods and improvements. But you have to appreciate the sheer enormity of id Games’ achievement in 1993 to understand what to do next.