Thursday, October 1, 2015

DMMuse.com Dungeon Generation Primer

DMMuse.com is a site where I publish random generators and tools for D&D.  Currently I've been working on a Dungeon Generator.  What makes the DMMuse.com Dungeon Generator different is its ability to accept content contributions from anyone.  This article describes how to add content to the generator.  The more people that add content, the fresher the generated dungeons will be for everyone!

Generator Syntax

Adding content to the Dungeon Generator involves adding new entries to various "tables" hosted at DMMuse.com.  When you add an entry to a table, you can optionally use DMMuse.com "generator syntax".  This is a powerful set of markup that lets you randomize and vary your entry's text each time that it's generated.  The full scope of the generator syntax is explained on this help page at DMMuse.com.

Dungeon Rooms

The Dungeon Generator works by first collecting a group of random room descriptions, and then building out a map to match those descriptions.  The room descriptions themselves come from a DMMuse.com table called Dungeon Rooms.

The entries in Dungeon Rooms follow a few conventions.  They start by the name of the room, in bold, followed by a comma, and then the room description.  To make text bold in an entry, enclose it in HTML bold tags - <b> and </b>.

Here's an example Dungeon Rooms entry:

<b>Empty Room</b>, not much to see here.

The entry can include a number of optional tags.  The first tag tells the Dungeon Generator to use a specific room shape template when generating the map for the room.  For example, to tell the Generator to always make the room square, do this:

<b>Square Room</b>, will always be square. template=square

The following is a list of shape templates that are currently available.  Check back, I will update this article as more shape templates are added:

cavern, circle, oval, shaft, small, square, warrens

The "decor" tag tells the Generator to add a piece of visual decoration to the room.  A few pieces of decor are available, more will be added in the future:

chasm, fountain, moat, water

The "inject" tag injects monsters into the dungeon room entry.  The tag should specify the name of the (D&D e5) monster, followed by a comma, followed by the number of monsters.  You can use dice notation when specifying this number.  For example, to add 1d6 orcs to a room:

<b>Orc Room</b>, they attack! inject=orc,1d6

Because of the way the Generator parses text, monster names that contain spaces can be problematic. For this reason, replace any spaces in a monster name with asterisks (*).  The Generate will replace these asterisks with spaces when it parses the text.

<b>Elemental Cavern</b>, a large natural cavern. inject=air*elemental,1d3

Dungeon Dressing

In addition to the rooms themselves, the Dungeon Generator adds pieces of dungeon dressing.  These are simple things like sounds, smells, scratches on the walls, or discarded gear, that add interest.  You can contribute dungeon dressing to DMMuse.com by adding entries to the Dungeon Dressing table.

Themes

The Dungeon Generator supports optional themes.  The user can select select one or more themes to add distinct flavor to the generated dungeon.  Themes are implemented by adding entries to two DMMuse.com tables, Dungeon Theme Flair, and Dungeon Theme Bosses, and by adding themed rooms to the Dungeon Rooms table itself.

To add a specially-themed dungeon room, use the "theme" tag at the end of the entry.  Below is a list of themes that DMMuse.com currently supports:

earth, darkness, kobold

To add a new kobold-themed rule, for example, add something like this to Dungeon Rooms:

<b>Kobold Room</b>, several of the [@PersonalityTraits] critters are here. theme=kobold inject=kobold,2d6

Dungeon Theme Flair items are special entries that can appear in dungeon rooms when the specified theme was selected.  Unlike other entries, you should preface the Dungeon Theme Flair entry with one of the following things ...

Contains: 
Trap: 
Monster: 

"Contains" entries are like pieces of dungeon dressing that correspond to the theme.  "Trap" entries are traps that are specific to the theme.  And "Monster" entries are monsters that might be used if the theme is selected.  Place the names of the monsters themselves in HTML bold tags.

Don't forget to append the appropriate "theme" tag at the end of these entries.  And note, unlike the other entries, these don't have periods at the end.  An example of each Dungeon Theme Flair is presented below:

Contains: a lone kobold egg, hatching theme=kobold

Trap: a jar of green slime breaks and shatters, triggered by [@TrapTriggers] theme=kobold

Monster: [2d6+2] <b>kobolds</b>, [1d4] of them riding <b>giant lizards</b> theme=kobold

The final piece of customization you can provide to a theme is a boss monster, represented by entries in the Dungeon Theme Bosses table.  Use HTML bold tags to enclose monster names, and explore the DMMuse.com random name generation capability to add a unique name to bosses.  Read more about random names in the Generator Syntax help page.

Here's an example kobold boss.  Note the "theme" tag at the end, don't forget this:

[RandomName;kobold] is the [king|head|ruler] of the tribe, a <b>kobold</b> "great wyrm" of some [stature|renown|intelligence] theme=kobold

There you have it!  Hopefully some of you will start adding your own entries, keeping the Dungeon Generator's results always fresh and surprising!