---
title: "MUD level design: how I built an immersive 75-room area in 28 days (without AI)"
url: "https://writing-games.org/extras/immersive-level-design-walkthrough/"
canonical: "https://writing-games.org/extras/immersive-level-design-walkthrough/"
type: "extras"
published: "2023-01-07T17:14:00-06:00"
modified: "2026-01-09T13:59:40-06:00"
author: "Andruid"
author_url: "https://writing-games.org/author/andruid/"
author_bio: "Andruid (she/her) is a writer, roleplayer, storyteller, and nerd who tries to live by Bill and Ted wisdom, i.e. \"Be excellent to each other.\" She created Writing Games to share lessons learned and to introduce new players to the world of text-based games."
author_same_as:
  - "https://x.com/the_andruid"
  - "https://www.youtube.com/@the_andruid"
  - "https://www.instagram.com/the_andruid/"
  - "https://github.com/the-andruid"
  - "https://bsky.app/profile/andruid.writing-games.org"
  - "https://www.threads.net/@the_andruid"
  - "https://mastodon.gamedev.place/@andruid"
  - "https://www.reddit.com/user/the_andruid"
  - "https://ko-fi.com/andruid"
  - "https://medium.com/@the_andruid"
  - "https://community.fandom.com/wiki/Special:UserProfileActivity/The_Andruid"
publisher: "Writing Games"
publisher_url: "https://writing-games.org/"
categories:
  - "Supporter Extras"
tags:
  - "Game Design"
  - "MU*s"
  - "World-building"
---

# MUD level design: how I built an immersive 75-room area in 28 days (without AI)

As a thank you, I wanted to provide supporters of my blog with an inside look at how I build areas for MU\* games, using my most recent project as an example.

This post will cover:

- my personal approach to level design / area-building
- specific design choices and why I made them
- sample descriptions
- screenshots and maps

I hope that by the end of this post, you'll have some fresh ideas to try with your own project, whether you're building for an RPE or a hack-and-slash game.

## **About the game**

The project I'm going to discuss was an area I created for **The Free Zone**, a zombie apocalypse MUD with an emphasis on roleplaying, PvE combat, and community-building.

![](https://writing-games.org/wp-content/uploads/2023/02/The-Free-Zone-intro-screen.webp)The game launched a semi-closed beta in September of 2022 and ran on a highly-modified codebase with roots in DikuMUD, ROM2.4b, and Merc.

I wasn't a staffer for TFZ, but I'm very familiar with the codebase and on good terms with the admins. I've hosted numerous events for their games over the last few years using the codebase's built-in storytelling system.

## **The game's setting**

Setting-wise, The Free Zone is a barricaded safe haven located in the former site of Hays, Kansas. At the time the game opened for play, the year was 1994 - 5 years after the zombie apocalypse began. The Zone is populated by a handful of survivors who possess a natural resistance to the zombie plague.

Survivors willing to risk leaving the safety of the barricades can reap the rewards by scavenging useful items and materials from abandoned but dangerous zones. Each area outside the Zone has a "Peril" level that corresponds to how dangerous it is.

## **About the area**

For TFZ, I knew I wanted to build a zombie amusement park, a la "Zombieland." Amusement parks offer a lot of variety in terms of rides, costumes, and scenery, so I was pretty sure I wouldn't get bored.

My aim was to create a creepy horror ambiance while at the same time leaving room for campy depictions of late '80s paraphernalia and theme park life.

### **The process**

Now that you know about the game and the area I intended to build, let's dive into my process and look at how I put the various pieces together.

I'll go through these pieces in roughly chronological order.

### **Naming the area**

I don't always recommend this to other writers (sometimes it's better to save the title for last), but for this particular project, I wanted to start with the name of the area.

Something that would set the tone for the entire project.

The name needed to be mildly catchy and have a campy hometown feel. I thought an acronym that spelled out the word TRAP would be fitting (and fun), given that scavengers would be entering a risky area with challenging obstacles along their path - i.e. a potential death trap.

I grabbed my younger brother, and we did some whiteboarding in the kitchen over beer. We wrote down a bunch of words starting with the letters T and R. Treasure, Thrill, Rails, Ride, etc.

After about 15-20 minutes, we reviewed all the ideas on the whiteboard and settled on "Thunder Ridge Amusement Park" as the name of the area: T.R.A.P.

Ultimately, I settled on Thunder Ridge because it gives me The Great Outdoors (1988) and National Lampoon's Vacation (1983) vibes.

### **Mapping the area**

With a name chosen, my next step was to draft a map. For this, I used old-fashioned graph paper! Yep, I'm old-school.

Having been to various amusement parks, zoos, and similar venues over the years, I had the idea that it'd probably be a big circuit with connecting paths, restrooms, and places to eat or rest along the way.

I drew a big almost-circle, not-quite-oval on the page and anchored my starting room (the parking lot) at the bottom.

Then, I divided the area into rough quadrants based on plausible themes for the park:

- Southeast - Frontier America
- Northeast - Medieval Fantasy
- Northwest - Haunted
- Southwest - Outer Space

Next, I started listing all the rides that I was familiar with from my childhood, including the Gravitron, Ferris wheel, Tilt-A-Whirl, Carousel, Bumper Cars, Drop Tower, etc.

![Sketched mult-user dungeon area map on graph paper.](https://writing-games.org/wp-content/uploads/2023/01/Hand-drawn-map-of-TRAP.webp)My shoddy, hand-drawn map of TRAP showing quadrant labels, locations of various rides, and the pathway connecting them. Some of these details were later changed as I progressed through the phases of building.At this point, I started to spend some time researching amusement park rides. I knew that some of these rides would have alternate names and would have worked differently 25-30 years ago.

For example, I wanted the bumper car ride to sound a little more old-fashioned, so I went with the name "[Dodgem Cars](https://en.wikipedia.org/wiki/Bumper_cars)" instead.

I distributed the rides across the map in light pencil so that I could make adjustments if necessary.

I then began to draw the path players would take as a large, meandering circuit around the park. On my map, each room was represented by a 4x4 square; each exit was represented by a line.

![Hand-drawn map with points of interest circled (the circles are fairly evenly spaced).](https://writing-games.org/wp-content/uploads/2023/01/Map-of-TRAP-with-rides.webp)Map of TRAP highlighting the distribution of rides, as well as some of the restrooms, and other points of interest, to get a sense for their distribution.Some things I considered as I designed the area:

- As I drew the circuit, I considered where I would place various secrets and challenges, including hidden exits and exits that would require a successful stat check to get past (more on this later).
- I also made sure to consider the map in 3 dimensions. While it's true that the main path would be at the ground level, I also added a few structures that could be accessed via climbing up or down, including the maintenance ladder on the park's drop tower. The stat checks to reach the top of the drop tower are progressively harder as you climb.
- In each quadrant, I added rooms for restrooms, including wheelchair-accessible toilets. I also sprinkled in food stands (such as a Dippin' Dots stand and cotton candy stands), restaurants, and a couple of park staff-only rooms, such as maintenance sheds and a ticketing counter.

At this point, the map was drafted. It would serve as my general blueprint going forward.

The heavy lifting was yet to come.

## **Getting ready to build**

With my pencil-and-paper blueprint in hand, I was eager to log in and start laying down the framework of the area within the game itself.

But first, I needed to do a little more prep work. I created some custom triggers and aliases in [Mudlet](https://www.mudlet.org/), tied to the mapper, that would allow me to quickly set a number on each room.

Each number corresponded to a phase/status so that I could track at-a-glance the overall state of the area.

The key in this case:

1. room title drafted, flags and terrain set on the room, connecting exits created
2. description drafted, title finalized
3. extra descriptions, items/furniture, and scavengables added, special exits created

![Map of the area in Mudlet with rooms numbered according to status.](https://writing-games.org/wp-content/uploads/2023/01/Map-of-TRAP-with-numbering-system.webp)Screenshot of the map in Mudlet. Notice all the 2s and 3s - I was nearing the end of the project at this time. The red arrows indicate one-way exits from rooms that were accessed with hidden portals, e.g. by typing "enter mausoleum".In the past, I've also done something similar for descriptions using color coding, with red being "not ready," yellow being "needs review or another pass," and green being "good to go."

But in this case, since my mapper colors were tied to the room's coded terrain (dirt road, city path, greenery, etc.), I decided to use a numerical system instead.

I also created several aliases (shortcuts) to help me quickly set flags and reduce the amount of typing required for some commands.

## **Phase 1: Building out the area**

Working clockwise, I started by laying the framework according to my graph paper map: digging out the rooms, creating the connecting exits, and making sure the terrain and flags were properly set on each.

(Terrain in this codebase determines the available scavengable items in the room, with the option to add unique/extra items on a case-by-case basis.)

The codebase for this game uses flags to set whether a room is always dark, always lit, indoors, populated by [vNPCs](https://writing-games.org/text-game-terms/vnpc-definition-virtual-non-player-character-examples/), allows monsters to wander through them, and so on.

I wanted to get the structure laid out and mapped in my mapper first so I could get a sense of what it would be like to move around the map as I'd designed it.

During this phase, I also changed/added a few more rooms as new ideas came to me, and I altered some of the connecting paths slightly to accommodate.

When nearly all the rooms were set with a 1, I started on the next phase: descriptions.

## **Phase 2: Writing the room descriptions**

For me, writing descriptions is often the least fun part of any building project. It requires effort to bring things to life - engrossing imagery doesn't come naturally to me in my writing.

While writing room descriptions, I focused on trying to create a haunting, eerie ambiance. I tried to imagine what a thriving, lively park would look like after 5 years of degradation and zombie apocalypse and worked that into my descriptions.

I also tried to follow the rules I laid out in my [guide to writing room descriptions](https://writing-games.org/writing-room-descriptions-tips-and-examples/):

1. Keep it consistent
2. Spellcheck and proofread
3. Avoid forcing or assuming reactions from characters
4. Follow the rule of “show, don’t tell”
5. Include something unique

Admittedly, I'm pretty terrible at #4! With my background in academic research, I tend toward a more technical writing style and often do a lot more telling than showing.

You can see what I mean in some of these examples:

***Weathered Platform Under the Drop Tower***

*Towering over the nearby rides is a vertical structure composed of four steel beams reinforced by a network of criss-crossing supports. The tower, easily 200 feet tall or more, houses some sort of enclosed brake-and-pulley mechanism, as well as a metal maintenance ladder that looks like it heads straight to the top. A ring of yellow seats appears to be stopped about midway up the ride, empty but for a pair of sagging figures without shoes. The way the bodies are slumped toward one another, it almost looks as if they died holding hands. At the base of the tower, the platform's colorfully painted railing has begun to chip and fade, and weeds grow up through ever-widening cracks in the pavement.*

***Near the Base of the Drop Tower***

*A bit of clever parkour is enough to reach the metal maintenance ladder and pull oneself up; to descend back down to the platform, the drop would be only a few feet while dangling from the bottom rung. The tower's steel skeleton surrounds both the ladder and the ride's internal mechanisms like a boxy cage. When the wind comes, it makes a whistling sound as it passes between the beams and through the hollows in the painted struts. The rungs continue upward one after the other, well past the inert seating ring positioned halfway up.*

And one for the park's petting zoo:

***Grassy, Bone-littered Enclosure***

*Hemmed in by a livestock fence, the enclosure reeks of death and decay. Patches of fur and clumps of wool are scattered across the hard-packed dirt, slowly decomposing with each rain. Bones, too. A femur here, a vertebra there, each already stripped of nutrients and bleached by the sun. Most appear too small to have belonged to a human - an adult human, at any rate. About half of the yard is sheltered by a large ramada, the roof still in decent shape. Old hay lay scattered underneath, dusty but dry. Around the perimeter, one can spy scraps of clothing and bits of trash caught on both sides of the fence. The park's Ferris wheel looms to the south, its gondolas hanging like dead fruit from a skeletal frame.*

Ultimately, [players have their own preferences](https://writing-games.org/deciding-room-description-length/) in terms of descriptiveness. Some just want the essentials, others would love to get lost in poetic 700-word essays.

If you're a [staff builder](https://writing-games.org/text-game-terms/builder-definition-examples/), you probably already know what the majority of your playerbase would prefer, based on the kind of game you're running.

For TFZ, the preferred room description length is about 7-10 lines formatted at 80 characters.

## **Phase 3: The fun stuff!**

For me, the best part of any building project is the details!

The room descriptions lay the foundation, but it's in the details where I really get to tell a story or make things interesting.

With this particular codebase, I was able to take advantage of:

- Challenge exits
- Secrets/hidden exits
- NPCs and mobprogs
- Hiding spots
- Hidden containers to store supplies in (the game features persistent items/storage)
- Extra descriptions (accessed by 'look &lt;keyword&gt;')
- Lore (viewable by 'look lore')
- Unique scavengable items only found in the park
- Unique ambiance (special messages that print every 15 RL minutes to convey something happening in the room)

My goal was to ensure that players could return to the area several times and still have things to discover. All of the rooms were given unique descriptions, and at least 75% had something special in them, whether a hidden exit, extra description, or unique item/NPC.

To create a more [immersive experience](https://writing-games.org/immersive-roleplaying-guide/), I included ambiance messages in certain rooms where I expected players to recuperate or spend more time.

In fact, I intentionally included these spots so that players could take breaks and RP between all the PvE combat and scavenging, if desired.

### **Example ambiance messages**

While climbing the drop tower (Devil's Drop):

- *A sudden gust of wind whips across the tower, causing its metal joints to creak and groan.*

While on the double-decker carousel:

- *The carousel groans slightly, disturbed by a sudden gust of wind.*
- *A faint creaking sound comes from the upper deck.*
- *The noise of squeaky hinges can be heard coming from somewhere nearby.*
- *In the distance to the north, a murder of crows suddenly takes flight, their noisy caws audible even from here.*

There's a lot more I could say about adding background story and immersive detail, but let's take a look at something more technical: challenge exits.

## **Level design using challenge exits**

I intentionally built the exits in such a way as to include shortcuts players could use a) after finding the secret, and/or b) in an emergency to get away from the zombie horde.

How challenge exits work in this codebase:

After the room description, players are told that traveling in a specific direction might be a &lt;difficulty level&gt; challenge of their &lt;stat&gt;.

For example, "Moving east would be a modest challenge of your agility."

Difficulties range from *simple* to *nearly impossible*.

If the player chooses to go in the specified direction and passes the check, they're presented with a custom message describing their success.

If they fail the check, they will see a failure message. Depending on how the exit is set up, the player can be left in their current room or moved to another upon failure. They can also be given a wound and deducted a certain amount of HP according to how difficult the exit was.

Here's a set of example parameters, roughly in order of how they're entered in the game:

- east
- agility
- 55
- Navigating the trickier spots without trouble, $n manages to climb up and over onto the adjacent roof.
- While attempting to climb up onto the adjacent roof, $n loses $s balance and does about three seconds of frantic windmills with $s arms before falling to the ground below!
- 20
- 4553
- $n falls from the roof of the food stall!

If you've done much MUD building/level design, you might be able to guess what each of these represents without my telling you! But here's the key just in case:

- direction of the exit
- stat to check
- stat requirement (there's some built-in randomness to the actual check, similar to a dice roll, but if the character has at least 55 in agility, chances are pretty good they'll succeed the check)
- success message
- failure message
- HP to deduct on failure
- room to transfer to on failure
- message others see when transferred

The last two bullet points are optional but allow a lot of flexibility. For example, you can still allow the player to move in the intended direction on failure but deduct HP for failing the check, e.g. to represent being wounded while moving.

Throughout the area, I made sure to create one or more challenge exits for every stat, including strength, agility, endurance, perception, and intelligence.

![Map of the area in Mudlet with red icons to indicate challenge exits.](https://writing-games.org/wp-content/uploads/2023/01/Map-of-TRAP-with-icons.webp)Map of the area with icons to indicate challenge exits (exclamation points) and hidden exits (magnifying glasses). Not all hidden exits/secrets are shown here - but notice how the exits in these cases allow for shortcuts or convenient hidey-holes once discovered.This variety ensures that it's not just the beefy combat characters who get to shine and do cool shit. A bit of cleverness can get characters past tricky spots, as well!

## **How did you get it done in 28 days?**

All told, the project took me about a month, though there was some downtime between when I initially sketched the map and started brainstorming and when I started writing descriptions and working in earnest.

Here's a rough breakdown of **how I got it done**:

- I used client-side aliases and shortcuts in order to make repetitive parts of building go faster.
- Once I was done mapping out all the rooms, I used a project/task management tool to ensure that I was setting reasonable goals and keeping up with them. For example, I knew I had at least 70 rooms to write, which meant a minimum of 3 rooms per day (or 21 per week) with some time left over to polish up all the details.
- I worked in phases/rounds and used notes to lay down rough ideas as I went, rather than allowing myself to get caught in the weeds/bogged down by the extra stuff from room to room.
- I wrote my descriptions using a spelling and grammar checker in plain text, then copy-pasted them over. Thus, there was very little proofreading I needed to do, and everything was always backed up.

Some people prefer to fully create a room with all the details (mobs, objects, etc.) before moving on to the next, and that does have its own advantages.

For example, if the builder suddenly gets caught up in real life, staff could still potentially make use of the area - just a smaller version of it.

Finally, one of the last things I did was create an in-character ASCII map for players near the park's entrance:

![ASCII in-game map of the theme park.](https://writing-games.org/wp-content/uploads/2023/01/ASCII-Map-of-TRAP.webp)In-character map accessed by typing "look map" in a room near the park's main gate where the map is located (labeled "I" for "Information" on the map - the red asterisk is a little hard to see in the screenshot).The map included a screen reader-friendly version, too. Players with game's [screen reader-mode](https://writing-games.org/accessibility-in-alter-epoch-mu/) enabled would see the text description instead of the ASCII map.

And that's the gist of it! Phew! I wrote a lot more than I thought I would. I hope you found the explanations useful and got some good ideas out of this post.

If you have any questions, feel free to drop a comment! I'd be happy to provide more examples for things like lore, NPCs, mobprogs, and the like.

And thanks again for supporting Writing Games - I really appreciate it. :)