Almost everyone is familiar with the game DOOM. DOOM isn’t just a game, but a 90’s digital cultural phenomenon, that spread like wildfire and actively encouraged a socialized internet culture through video games at a time where people were still connecting to the internet through phone lines. Its ability to share mod files online allowed for many new possibilities to emerge from the game, with players making complex detailed maps and building large prominent communities that have even directly integrated into the game industry in some cases.
This lead to the production of thousands of levels, as people experimented with this new technology - the ability to build any world was possible. But as it turned out, building worlds was quite difficult, and thus many levels were incomplete, glitchy or just a plain mess.
A cyberdemon has escaped from a lab, where they are trying to find his weakness. He was injured by a marine,which was made short work of, and he was trapped inside a illusio-pit. Your job is to find it, and kill it. - description of wow.wad
In the infamous map wow.wad, you are presented with an empty room with a few assorted items. It appears like there is nothing here, and the only choice is to wander around. Upon approaching a hanged body, you fall into a pit, where you encounter a cyberdemon and will most likely die as you are caught in the blast.
As you can see, many people reviewed this map, scathing it in the replies as awareness of its existence grew. People couldn’t tell if it was a joke or not. All that could be agreed upon was the sheer stupidity of the level’s design, and as one falls into the pit unknowingly and encounters the demon, they do not realize their fate is sealed and they are trapped in the hole. It is inevitable for all players to eventually reach this point.
In many ways, this is similar to our every day lives. We find ourselves in an empty world surrounded by confusion. We walk around in circles with nowhere to go, only to eventually find ourselves in a pit of despair facing a violent massive demon. Whether we win or lose, it doesn’t matter, because you are trapped in the pit with nowhere to go, and your life ends in a confusing, violent and pointless mess.
But what actually makes this fate inevitable? What actually makes us always have to face off with the cyberdemon?
Software Surface Production
To answer this question, we have to dig deep into the way the game produces the context that creates the wow.wad scenario. DOOM, like any game, is a complex piece of machinery with many moving parts that work together to create the experience of the game. Recall that the basic interface for a game is between the gameplay and the user. But at its most elementary state, the gameplay is simply a stream of differentiated signals, coordinated by a relationship between a CPU and memory on a computer. These signals are much too small for a player to recognize as a game in of its own - it must accumulate larger structures to build the perspective of the gameplay itself.
The CPU interprets signals read from memory to process integrated mathematical operations correlating with differences in signal patterns, and are then written back to different parts of memory. “Memory” does not refer to one specific location. The game’s memory is effectively logically continuous to the perspective of the CPU, but is spread across various functional parts, united with the CPU through a hardware bus. The hardware bus is a special part of the machine that helps map these various components together to connect the CPU to primary storage, such as RAM, along with other processing units, such as the GPU, or interfaces for devices like mice, keyboards, displays that interact with a human, as well as networking and other services. By sending signals from the CPU to these devices, they can have their own internal states modified to change their behavior, such as instructing the GPU to draw a specific shape.
These objects produce the surface on the computer to start producing a program that a person can interact with - called the User Interface Layer - along with the processing of the program’s logic - the program layer. Together, they produce the surface of the entire application. However, this surface must produce content in a way that the end user can both understand and interact with predictably allowing it to maintain stability, in order for the system between the end user and the computer to continue to exist. With the ability to assign values to any of these devices, the CPU and bus can be used as a way to facilitate communication between the devices to lay the groundwork for this interface by carrying patterns of signals, representing more abstract structures, to regulate behavior. For example, each input device maps every possible click, keyboard and button press into an array of signals, which are processed by the CPU and saved into RAM, and afterwards the CPU can send signals to the video card, transmitting to the display and emitting light in different colors.
Through this, the game logic can finally start to be constructed, with a means to weave together both inputs, outputs and processing. Within this logic, the game will loop through individual sequential commands that construct the context of the actual game, separated logically through different files and function calls. These processes coordinate various logical cycles used to maintain different parts of the program - audio, keyboard input, graphics, file I/O and game processing, to name a few. A new surface generates as a result - what is often called an SDK.
Building the Game
Now, with the surface necessary to construct abstract game elements, the environment’s blueprints can be assembled. To create the game, the developers need to create a model of how the game should work, often called a game design document. In DOOM’s case, a design document by Tom Hall, often called the “DOOM Bible”, is the initial source of this structure, despite being highly modified by the time of release. This set of social instructions allow for a basic means to construct the logical environment the player navigates. In fact, these kinds of instructions are what allows DOOM to have the potential to run on anything - it just needs a series of surfaces that allow it to spread the system across. How does this transition occur though?
Let’s take this level design as an example. Levels are defined through many sections of the document, detailing how the player should be expected to navigate the level, what kind of things they can interact with, how they would be expected to interact with those things, and structures such as walls, elevators and bridges. Enemies and items are described along with details with how the rooms are constructed. These ideas, while not necessarily representing the end game themselves, represent how the game is encoded as a language that gives the constructs for the game to produce a scene that allows the player to navigate and interact with the game.
Walls restrict the player’s movement, and funnel it along certain possible paths, like pipelines. The structure of the game world, having platforms and elevators, means that players are subject to abstractions like gravity and can be put in situations where they must find a way to climb up. Enemies harm the player, and will end the playthrough with enough damage, so the player must avoid them. The specific way they function forces the player to dodge and interact with them in a specific way to progress. These functions create the conditions to control the player’s movement and progression through the game, which provide the architectural groundwork to program a language interface through the code to start constructing the interface for the user to actually experience.
Instructing the Player
With the basic script laid out for the game, it was now time to create the theater and production. The blueprints we have require a player to move around, but how is this accomplished? To move, a player must have a set of variables that represents the properties of their movement, such as direction, velocity and position. Other entities, walls and collisions will need to be represented with many properties as well. These properties have to be modified in some way to allow for the player to interact with the game.
The input process is where the controls, such as a keyboard or controller, interface with the logic itself, converting the input signals through physical interaction into a parsable code for the program. In the case of GZDOOM, you can rebind the controls and use the mouse to aim. When the code receives these signals, it triggers specific lines of code dependent on the input sequence and executes unique commands correlating with things like movement, shooting and opening doors. These functions will modify the properties according specifically to the structure of the functions that interface them. This is what produces the limits of movement in a game, such as max speed or friction, and these limitations produce the unique feel of the character’s movement.
There are other values that may be modified by these functions. For example, if the game detects a hitscan weapon’s attack intersects the player’s hitbox, they will take damage that frame. This modifies the player’s health and armor variables, which, if the former falls to 0, the player can no longer contribute any more inputs to that specific level playthrough. This controls the player’s actions by encouraging certain movements and actions that reduce the possibility of these values being reduced - encouraging the player to practice evasive measures, avoid enemies and encourage infighting.
These values then must be converted into information that the player can see and hear, so that they can be aware of their updated position or environment. In this step, the user interface is constructed by rearranging the information with both visual and audio cues based on the properties of the current state of the game. This too will embed the information in structure - such as separating the health bar from the main viewport, and building the rendering to reproduce basic 3D structures. Sounds are managed differently - through triggers - and can indicate vital information not accessible through vision directly, such as the action of an offscreen character and its relative position. The alignment of audiovisual cues together reinforce that both are produced by the same environment, and thus producing a view into the world of the game.
This view is then interpreted by the player, who has received signals themselves in the form of sound and light. They reconstruct these sounds and images based on their own experiences, reproducing this world the best they can - however, because everyone has different ways of organizing and interpreting information on an interface, this leads to a uniquely unfolded image of the game in the player’s head. The player will analyze the situation and change their behavior accordingly, repeating the loop back into the machine, and thus finally producing the experience of the game itself.
Within this experience, because of the restrictions imposed by the physical computer, the way that input and output is programmed and how the player interprets the game, the player is lead towards specific gameplay input types over time as they repeatedly reinforce the controls, environment and interactions, eventually smoothing out into more experienced gameplay where the difference between player and game becomes more and more ambiguous. Together, the two are moved towards certain pipelines determined by these restrictions that cause a wide variety of actions to always still lead to one place - the end of the level, or some other end state where the entire system collapses such as leaving or crashing the game.
Online Social Interaction
DOOM was designed with social interaction in mind. Gameplay features such as multiple modes of multiplayer allowed for direct exchange of these player experiences by connecting to the same active game. This allows for the possibilities of interactions to exponentionally multiply significantly, as two subjective systems are interacting with each other, but are unable to understand each other’s view directly. This interaction produces a united experience where several people can, for example, can work cooperatively to complete dangerous challenges together and employ team strategies, or where players are fighting against each other in death match, producing unique interactions that can only exist within these social conditions.
However, these kinds of social interactions were not just restricted to online multiplayer. Revolutionary for its time was the inclusion of UI features that encouraged interaction outside of the gameplay.
For example, the timer at the end of each level and the ability to share demos of level playthroughs encouraged competition for speedrunning within the DOOM community much earlier and faster than console-based communities. This is because these demo files are simply a series of recorded inputs, and the game is designed so that they will play the same way every time. It was simply not realistic to upload and view a video back in 1993 on the internet, but a small demo file could be replayed reliably, and players would interact with these subjective experiences by viewing the produced input recording and using it as a means to try to produce their own, even more efficient recording. Through this process, extensive knowledge of the physical limitations of movement and interaction were growing well understood through these communities.
Custom WADs were another way that social interaction was encouraged with the game. These sets of files would allow for modified versions of the game to be produced, allowing for people to design custom levels, textures, and enemies. As the game developers released the game open source and the support for new features in source ports increased - many custom scripted components and quality of life features have been produced, greatly extending the capabilities of the original DOOM. This made the possible range of universes - and as consequence, subjective experiences - produced by DOOM to be almost impossibly large to imagine, and have imprinted back onto the image of what DOOM can be, modifying it on all layers down to the source code level.
These universes and experiences ultimately exist to continue to power the cultural relevance of DOOM. The 30 year success of DOOM can be traced directly to its ability to be so open ended within its own set of rules that the number of possible ways to play the game are impossible to imagine. DOOM is becoming DOOM by becoming everything. What DOOM can be ranges from completely outfitted mods with tons of features, to the simple and humble wow.wad, created by a child who was simply curious about the strange global network he was connecting to at the time. All DOOM needs to keep itself alive in the public consciousness is for people to repeatedly share the produced results of these experiences.
Returning to the existential crisis presented in wow.wad, it’s now clear how the situation constructs itself. You are given a set of physical laws to interact with within the game, and a particular construction of the world. Because of the nature of the level, and indeed all levels in DOOM, there is a singularity where all paths must meet - whether it be in only a few seconds or hours of gameplay. All paths lead to the end of the game - and the possibilities of how you end that game are restricted to only a few possible options, piping all the different input possibilities into the same few places. This is how all players will end Hangar by pulling the switch if they don’t quit first - all endpoints that do not quit the level from the pause lead to this point, pulled by the forces of level and UI design forcing you to interact with the switch.
Likewise, it was inevitable that a mod as simple as wow.wad would be made - it and many old forgotten uploads similar to it are among the simplest maps possible within the DOOM engine. This is just a consequence of a level production interface being given to millions of players - simpler and simpler levels will be produced over time through the sheer number of possibilities. The empty despair and frustration that wow.wad specifically fills us with is not a consequence of Paul’s own doing, but rather the connection between him and a machine that connects many others like him to produce these interacting particles. Of all the possibilities that DOOM could be, of all the ways we could experience it - we are in the level to face off the injured cyberdemon in the illusio-pit and complete the experience in seconds.
With this knowledge, what could we reflect upon our own lives? How is the context of our own lives constructed through the interfaces we interact with on a daily basis? What causes our lives to feel just as inevitably confusing, pointless and empty, when with the laws of physics imply that so much is within reasonable possibility? Why do we gravitate towards a similarly optimized state of affairs? What parts of our lives cause us to socialize in a way to try to produce more and more optimized experiences?