Monday, February 10, 2014


Why can't I leave random dungeon generation alone?

Since I first saw those frustrating and yet tantilizing tables in the Dungeon Master's Guide all those years ago, I have pursued the idea like a Holy Grail, with about as much success. I have rebuilt the original tables, I have tried versions of my own, I have spent hundreds of hours conjecturing and rethinking the premise, and in all this time I have concocted exactly nothing of use.

I have tried giving up the idea, too. But here I am, this past weekend, thinking about it again.

There is an inherent promise in random generation. It suggests a crutch that a DM can lean upon from time to time, near the end of a session when the party has moved through planned things a little faster than expected, and something is needed on the fly. The habit of human thought is to give the same things over and over, and a random table will sometimes break that habit - which makes it a good thing.

There's also something about random dungeon generation that promises, well, that I might be able to play a bit, 'against the house' as it were. My partner Tamara has said she'd like to play with me instead of my being the DM all the time. Just her and I, you understand; and it seems like 'RDG' would be a good way of accomplishing that. Just a bit of dungeon crawling, nothing too deep, a light game without much depth but with fighting and treasure.

But every generator seems to be, well, shit.

The problem with the one in the DMG, and the problem with most every generator I've ever seen, is that it seems bent on creating 'white space.' Just a lot of useless, boring, empty hallways and rooms. What is the value in a room being 'empty'?

Oh, I know. The argument has been, forever, that empty rooms provide 'tension.' The party gets all worked up, they open the door and - nothing! OMG, we were so worried there for a moment. Okay, no problem, search the room, move forward to the door and get worked up - and nothing! Again! Wow, feel the tension. Okay, no problem, search the room, move forward ... look, it's a door. Oh, fuck it, why bother getting worked up. Just open the door. Oh no! Orcs!


I have heard this scheme pitched for about ten thousand years now and guess what - my parties are not a) so stupid that they can't just make up a checklist that they hold up whenever the come to a door; and b) so stupid that they think this is clever. It isn't clever. It is BAD serial-writing from the 1930s, reprocessed as role-gaming by guys who thought digital watches were a pretty neat idea. Here we are, decades later, and this is still a thing? No it's not. White space in a dungeon is BORING. It is never anything except BORING.

The other problem, however, is that if you remove the white space from a dungeon generator, you get ... well, a bunch of absurdly connected rooms without sense or logic occupied by a strictly random set of monsters.

My personal experience is that dungeons work best when each 'level' or spreading section has one to three monsters in it. Typically, the main creature plus a supporting creature (goblins with wolves, a wizard with thirty pet owlbears, that sort of thing), and then some sort of vermin for the quiet corners, like spiders, rats, snakes, oozes, etc. This is then separated from the next section by a secret door, a cavern chimney that's difficult to navigate (thus logically keeping the sections separate from one another) or some sort of installed block/barrier where the upper creatures are trying to keep the lower creatures from invading them. This the party can then destroy, break through, move through ten minutes of white space thereafter and get back into the juicy death zone that's actually interesting.

And random generators NEVER, ever, make dungeons this way.

I've never seen one that does, anyway. And while I have recognized for years that a generator would have to create this sort of thing, I haven't ever figured out how to do it.

But ... I probably will go on wasting my time trying. Because, well, it still sounds like a good idea. Unfortunately.


Lukas said...

Firstly, there is little tension in a randomly generated dungeon. Empty rooms will do little to help that. Everything either has some degree of structure or no structure at all, in which either you know what to expect or know you have absolutely no idea what to expect.

Secondly I am horrible about immediately considering a solution when a problem presents itself. Feel free to ignore the rest if you are disinterested in my thoughts.

It sounds like a large multi-tiered logic puzzle. Not having read the one in the DMG (I'm pretty sure they stopped including random dungeon generators when they learned people would pay lots of money for them later) this is my initial thoughts.

Coming up with a logical flow might require breaking down what logic YOU go through. Yes, it will be imperfect. It is the nature of the non-finely tuned beast.

If you were to use a COMPUTER however, perhaps we could come up with a means of creating the thing needed.

1. Generator sets up a 'purpose' for the dungeon. This could be housing an ancient horror, fending off the lower invading enemies, a cave complex or an abandoned buried structure perhaps.

2. Generator uses the purpose to determine if dungeon is multi-tier.

3. Generator determines nature of each tier (or level as you wish).

4. Each tier get's broken down into possibly randomly generated or logical sections. Example: Lair of Large Grouping of Intelligent Monsters could start with a 'set of defenses' section.

5. This would randomly have room depth determined by a reasonable range, 1-3 perhaps? And then arranged with an A -> B and B->C or A-> B and A->C.

6. Each room would be given ratings for impediment grade, reward likelihood and inhabitant likelihood based on type (defensive would have increased and things like housing would have a lower rating)

7. Each room would then have the inhabitants, rewards and impediments rolled up. Probably with a modifier based on the top equivalent intelligence of critters within.

8. Finally some last touches could be put in after the fact. Leaders, spellcasters and other enemies/persons of note could be inserted into appropriate rooms randomly. A big pile of loot could be added based on calculated inhabitant total for the tier - actual loot in tier and so on...

Presentation of the dungeon is the final issue. If it's generated a million rooms already, how to keep from peeking ahead...

Downside of this system A: Requires a good amount of time to initially create. B: Requires computer power to implement. C: Some elements may get repetitive. This is very likely unavoidable.

Upsides are that it could generate the whole dungeon (without maps mind you, there might have to be some interpretation of flow. If you want maps you'll have to learn a thing or two about automated mapping)

Any other logical tendencies you could work out, such as randomly generating 'door' type based on dungeon type and section type. This could be open air, a portcullis, a puzzle door or even an interdimensional portal.

It does have the upside that you can slowly add onto it later and tweak the odds till perfection.

Alexis Smolensk said...

That's a good, solid, logical structure for randomly designing a dungeon whole.

Now tweak it so that it generates the dungeon as you go. You can't play against the house if you have to oversee the whole house's creation first.

Hedgehobbit said...

Cards. Seriously, generate a deck of themed monster cards and draw from them rather than roll on a chart. Some of the chart would have you insert other cards into the deck. For example, the "goblin guard" card would have you add the "goblin treasure room" card to the deck. Treasure works the same way. Add a bunch of goblin-themed treasure to the same deck that you added all the goblins too.

This is how Warhammer Quest did it and it worked pretty well.

Lukas said...

Actually, I am envisioning that if you put this in Excel and created one field where you enter the rooms ID, you could go look at the raw data if you wish, but only the current room will be visible...

A few other things like a searched toggle, entered toggle and a used toggle might be doable too (for door traps).

This would be a roughly, if true, display what you're contending with.

Alexis Smolensk said...


I fail to see how changing the method of random generation in any way addresses the actual issue. Moreover, unless I had something like 2-3 thousand cards, I doubt it would meet with the expectations I would have for any generator I would ultimately create.


Thank you. I shall think on that.

Lukas said...

Oh, also a cool feature to look into for the random generation?

Manual overrides at various points. So you can force it to be a certain type. Just in case you need something in particular.

Eric said...

It'll be a real feat to make a good random dungeon that can be meaningfully revealed one room at a time... "OK, you beat that pack of goblins, they go down screaming! Next room is..[roll].. a pack of goblin guards..[roll].. listening alertly."

Alexis Smolensk said...

Yep. The room with goblins would need to include, "Do more goblins appear from next room because of fight? [roll] No, check again in 5 rounds. Combat completed, did rolls indicate the next room must be empty? [yes] Next room contains ..."

Mike said...

Sound like you have it. You describe various zones with sub populations.

Why not generate by zones, with sub-tables specific to that zone for rooms and creatures.

In the room/creature sub-table you have a out "back to zone table" etc.

Lukas said...

That part's tough.

You then start getting into conditionals like... what if the door is trapped or otherwise obstructed that is between me and the goblins?

That kind of goes into a bad case of needing to insert AI. Setting up a room with states is easy to window through. You might be able to set up 'roamers' to represent guards that would travel and have X packs, so you get random packs from the pool. But you still will probably end up with trapped door/other obstructions making things confusing.

I will think on this, I think I'm on the cusp of a solution.

Alexis Smolensk said...

Your outline is helpful though, Lukas. And I'm getting some ideas. The thing I learned about other generation systems is that the main trouble is working out the basic structure. All the infantisimal details can be added piece by piece as one goes forward. For instance, you forget to include the detail about the door possibly being stuck or trapped, and then later you add that too, fitting it into the other stuff so that now there's an option that says if the goblins didn't rush in, its possible the door is trapped and the goblins are waiting and may surprise. Etcetera.

The base problem for me so far is the damn rooms themselves. Always start with a guarded door/guardroom, or defensive point or even cavern with fortress walls, but then what's immediately behind the guarded door? Mess? Barracks? Common room? Herding pens? And how do you keep from randomly creating a space with four jails, a bath and no common rooms?

Yes, sure, there's a way. But I haven't pieced it out yet.

Lukas said...

You can require a minimum % or # and have an allowance of fully or partially random rooms.

If you want the chance to end up with the above description I would emphasize weighted odds with a migrating weight as rooms are added (odds are X +(-Y where Y is the number of rooms and the weight of reduction per room and X is the base odds for that room))

This results in an increased likelihood of variation over massive numbers of the same room type.

You could also do what I did with my supers game for skills. Set a preferred balance of rooms and put the preferred room at the top, then dispersed odds in the bottom. So say, 30 or 50% for the preferred, then spread of 5 or so different room types underneath. This way you have greater odds of ensuring you have at least 1 common room.

If you have only one, remove the preferred from the odds and leave to the random odds. If you have two, cycle to the next preferred room.

And finally requiring a room. You could probably set up a random number to determine which order this room is.

Example, you are generating 6 rooms. It rolls and gets that the 5th room will be a sleeping area (as you've decided the inhabitants must sleep somewhere). The first 4 and last 1 are generated normally, the 5th will be the sleeping space.

Multiple of such will probably require some way of ensuring you don't get the same number twice...

If you're worried about flow, remember you can establish zones. Defensive, Military, Civilian could be the zone flow. Possibly with a ramp up again to Defensive if you're holding off an invasion on the other side.

Does that help with some options?

Alexis Smolensk said...

I like the zone idea. 'Luxury' could be a fourth zone idea, to cover things like menageries, baths and throne rooms, and 'Religion' would be a fifth to cover crypts & temples.

Yeah, not bad.

Dave said...

Elfmaids & Octopi had a large set of random tables last month for generating Psychonian Citadels. The tables might prove useful because they include random locations and zones. Have a look:

Matt said...

If the goal is to play against the house it would be a good idea to give some information for monster behavior.

Perhaps a good rule of thumb would to have a creature have behaviors based on their given average intelligence. To keep the generation hidden from the players it might be best to break these down into basic behaviors, and then the actual purpose behind those behaviors.

I believe that goblins have an average intelligence of 5-7, so their behaviors might read as follows:

A. Fight
--1. Blindly, attacking whoever is closest
--2. Anyone who looks weak
B. Flee
--1. While attacking the invaders. Guerilla tactics
--2. To lure them into an ambush/trap
--3. To somewhere more defensible
C. Bargain
--1. Legitimately
--2. To catch them off guard

A main behavior would be determined randomly at the same time as surprise, encounter distance, and reaction rolls. The purpose would only be determined when it became necessary. So if the goblin decides to fight, that is immediately. If the goblin decides to run or bargain it is after the player has made a decision of how to act.

Morale rolls could result in a change of the main behavior. Perhaps the behaviors should be on a sort of chart that could be influenced by reaction rolls and failed morale checks.

To make things less predictable one could make a few charts based on traits that could be randomly assigned to the creature. For instance, a goblin might be Cowardly, or Conniving. A cowardly goblin's fleeing options might have raising alarms and finding reinforcements instead of traps and ambushes.

So now players have to decide whether to follow the fleeing goblin to keep him from raising alarms, or to let him flee and try to thwart his trickery. No one would be able to know which is right, you can only guess.

That doesn't help the dungeon generation itself, but I think it adds to "against the house" feeling.

What might help is that if you have detailed enough charts for the monsters then the monster could generate the dungeon for you. Their behaviors should be based on their knowledge of their lair, so a goblin would only lead you into an ambush if it knew there was an ambush point.

Lukas said...

Regarding the hearing things in room B when they make noise in room A....

Each door in room A can have a visible listen roll for each connecting room (simply looks at that rooms note above the monsters for listening) This number would exist regardless of present monsters

If the roll succeeds, an alterted toggle is activated, then the door is automatically checked for a 'blocked' state. Should this state be blocked no monsters are revealed. Should this state be unblocked, it presents the monster section from room B to be visible in room A.

Anonymous said...

You could base the dungeon size and number of inhabitants from the resource density in the surrounding hexes (building from your own wilderness hex generator) ... then populate the array of rooms with purposes picked from a list ... anything left off would generate a reason for the populace to roam out from the dungeon, thus producing the "adventure hook."

As far as room arrangement, you could use an arrangement of different random lookup tables for what is most likely adjacent to each room of particular purpose. E.g. next to the entrance guardroom most likely is a jakes, a garderobe, a weapons locker, and a passage to the inhabitants' "safe" areas. Off of that passage most likely are some random number of: (a), (b), etc. Next to the throneroom (if any) most likely are: treasury; dining hall; liege's sleeping chamber; etc.

Population of each room could be determined by *another* set of tables, one per room, with table entries for "absent at X" such that even if the room momentarily is empty perhaps they've gotten behind you somehow and will be a problem on the way out ... this makes it tough to "play against the book" but you can always start making WM rolls for the absent inhabitants.

jbeltman said...

You could use something like How to Host a Dungeon to create the dungeon structure, then dungeon generators for the separate sections.