October 11, 2021

My First Quake Level

Some people are also natural tool builders instead of game builders. For them, the game is the reason for building game engines and tools, not the other way around, and their ultimate dream is to build engines and tools that are so efficient, so optimized, and so friendly that the game practically builds itself.

—Derek Yu, Spelunky

I have a tendency to drift towards coding in virtually any situation, even ones that aren’t initially technological in nature. One problem with this approach, as Derek Yu continues to write in Spelunky, is this:

To them, the engine itself is a work of art, too, and I’m inclined to agree. In practice, though, it’s easy for someone like this to noodle on their game engine ad infinitum.

This is precisely my problem, and it’s part of why despite being very excited about game development as a kid, I never finished any of the games I started making. I never really let myself have fun with game design because I was so preoccupied with building engines and tooling.

One of the things that attracted me to building a Quake level, though, was that–if I set the right constraints for myself–it would force me to focus on design. As I described in my previous blog post, the tools already existed and were easy and fun to use. I just needed to take the time to actually design something.

Inspiration

The first thing I wanted to do was re-acquaint myself with Quake’s particular design vocabulary. I hadn’t played the game in 20 years, so I started off by playing id’s original levels.

One interesting design pattern I noticed was that whenever I encountered a giant, lightning-throwing monster called a Shambler, there was frequently a Quad Damage power-up somewhere nearby that made the Shambler easy for me to defeat (in fact, I was originally so rusty at the game that I couldn’t kill it without the Quad Damage). I liked this strategic element, and it ended up being a pattern I’d reuse in my first level.

Theory

I also watched some videos and read blog posts to learn more about the theory behind level design. Of particular help was Aubrey Serr’s 2019 GDC talk Designing Radically Non-Linear Single Player Levels, which described a layout technique for encouraging player agency (Robert Yang has called it valence theory).

Andrew Yoder’s blog post The Door Problem of Combat Design was also very helpful, though in retrospect I’m afraid parts of my final map still fell prey to some of the pitfalls described in his post. Level design is hard!

Planning

At the beginning, I just wanted to focus on my level’s high-level gameplay, without having to worry about its aesthetics–I believe this is sometimes called “greyboxing” or “blocking out” a level. Aleksander Marhall’s prototype WAD was very helpful for this, as it provided textures that clearly communicated that the level was in its early design stages without distracting the player.

A blank canvas

At first, I was hesitant to do anything. I’d played a bunch of Quake levels, but how was I supposed to create my own layout from scratch?

The resource that helped me get over my “blank canvas syndrome” and actually start designing something was Quake Builder’s Quake Mapping Tips: Building Layouts video. It describes a process of starting with an extremely simple level–one where the goal is right in front of the player, and they literally just have to walk over to it in order to win the level–and then gradually “abstracting” the goal away from the player via obstacles. So I started with this approach, originally making a long room with the player at one end and an exit at the other, and slowly introduced walls, monsters, locked doors, and other obstacles.

Playtesting

Eventually, I had a very basic level that I could share with others. dumptruck_ds, the creator of the TrenchBroom tutorials I’d mentioned in my last post, had encouraged his viewers to join his Quake Mapping Discord, so I joined its playtesting channel and asked for feedback in late September.

I was skeptical about whether I’d get any playtesters, but I did, and rather quickly. A few minutes after I made my post, a mapper named Alekswithak posted a “DEM file” in response: this was a relatively small file containing a recording of his play-through, which I could play back in Quake. He even annotated his DEM file with specific feedback about my design, which appeared when I played it back.

Alekswithak’s main criticism was that my prototype felt a bit too cramped, and that I ought to scale it up a bit. I also had a few friends try out my level, and their feedback was helpful too.

For example, like me, my friend Kris hadn’t played Quake in a very long time, and didn’t remember that there was a “completed” screen that displayed when one wins a Quake level. And because the final room of my level, gated behind a locked door, was never visible from the rest of my level, she didn’t realize that it even existed–so she thought she had won my level, when in fact she had only seen half of it!

So, I did what I noticed a lot of good Quake maps did, and made windows in the level that gave the player a view into the final room, letting them know that there was more they hadn’t seen yet.

Secrets

The final element I added was a secret, which I noticed that the original Quake levels were quite clever at: there was always something a little “off” about the part of a level that contained a secret, such as unusual lighting, texturing, or level geometry. Shooting the unusual element, or figuring out how to navigate to it (e.g. via a series of clever jumps), would eventually provide the player with a special power-up, along with a dopamine-inducing sound effect letting the player know that they’d discovered something special.

Finding secrets was interesting detective work, and it was also a nice repreive from the frenzy of gore that usually characterizes a Quake level, so I wanted to make sure my level had at least one.

I’m still not sure if my level’s secret is too hard to find, though. To my knowledge, no one has actually found it yet, so I might have made it a bit too secret.

De-prototyping

By the time I had iterated on the level design a few times, I had grown so fond of the prototype WAD’s aesthetics that I was conflicted about whether to replace it with an “authentic” Quake look-and-feel.

Eventually I decided to abandon the prototype aesthetic, if only because dumptruck_ds’s tutorials encouraged me to, and I’m glad I did. Aside from helping me hone my lighting and texturing skills, it also pushed me to learn some of TrenchBroom’s more advanced geometry features, as I ended up replacing many bland boxes with more interesting shapes.

Finding a theme

The first thing I had to settle on, though, was a theme. dumptruck_ds had recommended that novice map-makers find a map in the original Quake levels that they liked, and stick to only using the textures from it. This seemed like a wise self-imposed constraint.

My favorite theme from id’s original levels was exemplified by Episode 3 Mission 4 (E3M4), “Satan’s Dark Delight”: it was a combination of what appeared to be grey stone, copper, and halogen lamps. I later learned it is sometimes referred to as the “runic” or “metal” theme.

During this phase, I kept a copy of E3M4 open in a second instance of TrenchBroom, as it allowed me to easily consult my source material for reference.

The makeover

A particularly useful resource was an article from the early 2000s by Xenon called How to Make Rooms Look Good. This post walked the reader through turning a bland, boring-looking box of a room into one that looked like something out of a professionally-made game–like a home makeover show for Quake levels. In particular, Xenon’s advice on how to start the process was invaluable:

The main thing that comes to mind in this [room] is the lack of detail. Whilst any usual novice mapper would go about attempting to add the said ‘detail’ early on at this stage, the right thing to do is go about defining the room’s overall ‘shape’ first, before adding small-scale detail.

This phase of design felt like it was using a different part of my brain, and it was quite satisfying to chisel the level into something that felt more solid and architecturally interesting.

A Quake level with prototype textures and boxy walls.
My level before the makeover.
A Quake level with runic textures, angled walls, chamfered edges, and various articulations.
My level after the makeover.

The final product

In early October, I posted the latest version of my level to the Quake Mapping Discord, and received positive feedback. Below is a recording of the DEM file posted by mapper Greenwood.

Overall, I had a wonderful first experience in level design. I’m grateful to the Quake Mapping community for iterating on the foundation that id software built, creating amazing tutorials, answering all my novice questions, and providing great feedback for my designs.

Playing it yourself

If you’d like to play the level yourself, you will first need to purchase Quake from Steam or GOG if you don’t already own it.

Once you’ve installed it, you will want to figure out where it’s installed on your system–both Steam and GOG’s apps provide contextual menus to do this–and create a directory called maps in either its id1 or rerelease/id1 subdirectory (depending on whether you’re playing the original Quake or its 2021 re-release). Inside that, you will want to unzip my level’s ZIP file.

Then, start Quake, press ~ (it’s the key above your Tab key), and type map my_second_map to play the level.

If you’d like to go further and explore all the great new content the community has made for Quake over the past 25 years, check out Robert Yang’s Quake Renaissance: how to start playing original Quake today.

© Atul Varma 2021