Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Mimir - D&D Campaign Assistant

“Remember, I know everything that can be known in the multiverse.” - Mimir, Planescape

Welcome to Mimir, your local-first D&D 5e campaign management tool. Named after the wise floating skull of Planescape lore, Mimir helps Dungeon Masters organize campaigns, run sessions, and keep everything at their fingertips.

Quick Start

New to Mimir? Start with our tutorials:

  1. Your First Campaign - Create a campaign and explore the dashboard
  2. Your First Module - Build an adventure with maps and monsters
  3. Running Your First Session - Use Play Mode to run an encounter
  4. Player Display Setup - Set up a second screen for players

Features

Campaign Management

Create and organize campaigns with a structured workflow. Track documents, NPCs, and plot threads across multiple adventure modules.

Interactive Maps

Upload maps (UVTT or images), configure grids, and place tokens. Manage fog of war with line-of-sight calculations and light sources.

Play Mode

Run sessions with a dedicated play interface. Control what players see on a second display while you manage encounters behind the scenes.

D&D 5e Reference

Search monsters, spells, items, and more from your D&D sourcebooks. Quick access to rules when you need them.

PDF Export

Print character sheets, spell cards, and maps with token cutouts for physical play.

Documentation

This documentation is organized using the Diataxis framework:

SectionPurpose
TutorialsStep-by-step learning guides
How-To GuidesTask-focused instructions
ReferenceDetailed feature documentation
Understanding MimirConcepts and design philosophy

Download

Get the latest release from GitHub Releases.

Supported Platforms: macOS, Windows, Linux

Getting Help


Mimir is open source software. See the Developer Documentation if you’d like to contribute.

Your First Campaign

This tutorial walks you through creating your first campaign in Mimir. By the end, you’ll have a fully configured campaign ready for adventure modules and session play.

Time to complete: 5-10 minutes

What you’ll learn:

  • Navigate the Mimir interface
  • Create a new campaign
  • Explore the Campaign Dashboard
  • Understand the four dashboard tabs

Prerequisites

  • Mimir installed and running
  • No additional setup required

Step 1: Launch Mimir

When you launch Mimir, you’ll see the home screen with the floating Mimir skull and the tagline “Your arcane companion for D&D 5e campaign management.”

Mimir Home Screen

The header bar contains:

  • Mimir logo (skull icon) - Click to return home
  • Campaign selector - Switch between campaigns
  • Characters - Create and manage PCs and NPCs
  • Reference - Open the D&D 5e reference library
  • Settings (gear icon) - Configure application preferences

Step 2: Create a New Campaign

There are two ways to create a campaign:

Option A: Using the Campaign Selector

  1. Click the Campaign Selector dropdown in the header
  2. Click + New Campaign

Option B: Direct Navigation

  1. Navigate to /campaigns/new in the URL

Either method opens the Create New Campaign form.

Step 3: Fill in Campaign Details

The campaign creation form has two fields:

Campaign Name (Required)

Enter a descriptive name for your campaign. This appears throughout Mimir and in exported materials.

Example: “Curse of Strahd”, “Homebrew - The Shattered Realms”, “One-Shot: Goblin Heist”

Description (Optional)

Add notes about your campaign concept, themes, or setting. This is for your reference only.

Example: “Gothic horror campaign set in the domain of Barovia. Players are trapped and must defeat the vampire Strahd von Zarovich.”

Step 4: Create the Campaign

Click Create Campaign. Mimir will:

  1. Create the campaign in the database
  2. Redirect you to the Campaign Dashboard

Step 5: Explore the Campaign Dashboard

The Campaign Dashboard is your command center for the entire campaign. It has a header showing your campaign name and four tabs for organizing different aspects of your game.

Campaign Dashboard

The Dashboard Tabs

Campaign Tab

The world-building hub. Use this tab for:

  • Campaign setting notes
  • Lore and history
  • Factions and organizations
  • World documents

This is where you develop the broader context of your campaign world.

Modules Tab

Adventure modules are self-contained adventures within your campaign. This tab shows:

  • All modules in the campaign
  • Module status (preparation stage)
  • Quick actions to edit or play modules

You’ll create your first module in the next tutorial.

NPCs Tab

Non-player characters for this campaign. Track:

  • Major NPCs and villains
  • Recurring characters
  • NPC relationships and notes

NPCs can be shared across modules or specific to one adventure.

PCs Tab

Player characters in this campaign. Manage:

  • Character assignments
  • Player-character relationships
  • Quick access to character sheets

Characters are created separately (in the Characters section) and assigned to campaigns here.

Step 6: Campaign Actions

The dashboard header includes an Export Archive button. This creates a backup of your entire campaign including:

  • All documents and notes
  • Module data
  • Maps and tokens
  • Character assignments

Use this regularly for backups or when moving campaigns between computers.

What’s Next?

Your campaign is ready! Here are your next steps:

  1. Create your first module - Build an adventure with maps and encounters
  2. Add characters - Create PCs for your players
  3. Explore the Reference - Browse monsters, spells, and items for inspiration

Quick Reference

ActionHow To
Create campaignCampaign Selector → + New Campaign
Switch campaignsCampaign Selector dropdown
Access dashboardClick campaign name in selector
Export backupDashboard → Export Archive
Return homeClick Mimir skull icon

Next tutorial: Your First Module

Your First Module

This tutorial walks you through creating an adventure module in Mimir. By the end, you’ll have a module with maps, monsters, and tokens ready for play.

Time to complete: 15-20 minutes

What you’ll learn:

  • Create a module within your campaign
  • Upload and configure maps
  • Add monsters from the D&D 5e catalog
  • Place tokens on maps with the Token Setup tool
  • Add light sources for dynamic lighting

Prerequisites

  • A campaign created (Tutorial 1)
  • A map image (PNG, JPG, or UVTT file)

What is a Module?

In Mimir, a module is a self-contained adventure within your campaign. Think of it as a chapter or episode - “The Goblin Hideout”, “Dragon’s Lair”, or “The Haunted Manor”. Each module has its own:

  • Maps and encounters
  • Monsters and traps
  • NPCs
  • Session notes and documents

This separation lets you prepare adventures independently and reuse them across campaigns.

Step 1: Navigate to the Modules Tab

  1. Open your campaign from the Campaign Selector
  2. Click the Modules tab in the dashboard

You’ll see the module sidebar (left) and the main panel (right).

Modules Tab

Step 2: Create a Module

  1. Click the + button in the Modules section
  2. In the Create Module dialog:
    • Module Name - Enter a descriptive name (e.g., “The Lost Mine - Cragmaw Hideout”)
    • Module Type - Select the type (Standard Adventure, Mystery, Dungeon Crawl, Heist, Horror, Political Intrigue)
    • Description (optional) - Add notes about the module
  3. Click Create

Your new module appears in the modules list.

Step 3: Explore the Module Dashboard

The modules table shows each module with action buttons:

  • Play - Enter Play Mode for this module (enabled when module is ready or active)
  • Open - Open the module board for prep
  • PDF - Export maps and materials to PDF

Step 4: Upload a Map

  1. In the Maps section, click the + button

  2. Choose your map file:

    • Image files (PNG, JPG, WebP) - Standard map images
    • UVTT files - Universal VTT format with embedded grid data
  3. Configure the map settings:

    • Name - Display name for the map
    • Grid Size - Pixels per grid square (typically 70-140)
    • Grid Offset - Adjust if the grid doesn’t align with the image
  4. Click Upload

Tip: UVTT files from tools like Dungeondraft include grid configuration automatically, saving setup time.

Step 5: Open Token Setup

The Token Setup modal is where you add monsters, place tokens, and configure your map.

  1. Click a map card in the Maps section
  2. The Token Setup modal opens showing:
    • Token Palette (left) - Token types and monster search
    • Map Canvas (center) - The map with grid overlay
    • Token Inventory (right) - Placed tokens and light sources

Token Setup Modal

Token Palette Sections

The palette contains several sections:

  • Monster - Search and add monsters from the D&D 5e catalog
  • NPC - Add NPC tokens
  • Trap - Add traps and hazards
  • Object - Add generic object tokens
  • Light Sources - Torch, Lantern, Candle

Step 6: Add Monsters

  1. In the Token Palette, click Monster
  2. Search for a monster by name (e.g., “Goblin”, “Wolf”, “Bugbear”)
  3. Select a monster from the search results
  4. Configure token options (size, color, visibility)
  5. Click on the map to place the monster token

Repeat to add more monsters. Each placed monster appears in the Token Inventory on the right.

Token Options

When you select a token type from the palette, you can configure:

  • Size - Tiny, Small, Medium, Large, Huge, Gargantuan
  • Color - Token border color for identification
  • Visible to Players - Toggle whether players can see this token

Managing Placed Tokens

Placed tokens appear in the Token Inventory (right panel):

  • Click a token to select it on the map
  • Drag tokens to reposition them
  • Right-click for a context menu with options
  • Click the × to delete a token

Step 7: Add Light Sources

For dynamic lighting and fog of war:

  1. In the Token Palette, find the Light Sources section

  2. Click a light type:

    • Torch - 20 ft bright / 40 ft dim
    • Lantern - 30 ft bright / 60 ft dim
    • Candle - 5 ft bright / 10 ft dim
  3. Click on the map to place the light source

Managing Light Sources

Light sources appear in the Token Inventory under “Light Sources”:

  • Lit/Unlit button - Toggle whether the light is active
  • Light sources affect fog of war in Play Mode
  • Delete with the × button

Step 8: Configure the Grid (Image Files Only)

Note: Skip this step if you uploaded a UVTT file - the grid is configured automatically.

If your map’s grid doesn’t align correctly:

  1. Click the Grid button in the canvas controls

  2. Adjust settings:

    • Grid Size - Pixels per square
    • X Offset - Horizontal shift
    • Y Offset - Vertical shift
  3. Click Save to apply

The grid overlay shows your adjustments in real-time.

Step 9: Save and Close

Token placements save automatically. Click × or press Escape to close the Token Setup modal.

Your module is now ready for play!

What’s Next?

Your module is prepared with maps, monsters, and tokens. Continue to:

  1. Run your first session - Use Play Mode to run an encounter
  2. Add more content - Upload additional maps, add NPCs, create documents
  3. Prepare multiple modules - Create the next chapter of your adventure

Quick Reference

ActionHow To
Create moduleModules tab → + button
Upload mapMaps section → + button
Open token setupClick a map card
Add monstersToken Setup → Monster → search → click map
Place tokenSelect in palette → click map
Add light sourceLight Sources → select → click map
Toggle lightToken Inventory → Lit/Unlit button
Configure gridGrid button in canvas controls

Next tutorial: Running Your First Session

Running Your First Session

This tutorial walks you through using Play Mode to run a game session. You’ll learn how to manage maps, control fog of war, move tokens, and keep session notes.

Time to complete: 10-15 minutes

What you’ll learn:

  • Enter and exit Play Mode
  • Navigate the Play Mode interface
  • Control fog of war and line of sight
  • Move tokens and manage encounters
  • Use session notes

Prerequisites

  • A module with at least one map and some tokens (Tutorial 2)
  • Understanding of the Campaign Dashboard

Step 1: Enter Play Mode

There are two ways to start a play session:

From the Module Dashboard

  1. Open your campaign and go to the Modules tab
  2. Select your module from the sidebar
  3. Click the Play button in the module header

From the Maps List

  1. In the module dashboard, find your map in the Maps section
  2. Click the map, then use the Play action

Either method takes you to Play Mode.

Step 2: Tour the Play Mode Interface

Play Mode has a different layout optimized for running the game:

Header Bar

  • Back to Prep - Return to the module dashboard
  • Module Name - Shows which module you’re playing
  • PLAY MODE badge - Visual confirmation you’re in play mode
  • Player Display - Open/close the player display window
  • Blackout - Hide everything from players temporarily
  • End Session - Exit play mode

A collapsible panel containing:

Monsters - All monsters in the module

  • Shows quantity (e.g., “3× Goblin”)
  • Click to view stat block
  • Grouped by encounter tag

Maps - All maps in the module

  • Click to switch the active map
  • Active map shows a play icon
  • Maps from other modules in the campaign are also available

Main Area

The tactical map display with:

  • Current map image
  • Grid overlay
  • Token positions
  • Fog of war (if using UVTT maps with walls)

Bottom Panel

Session Notes - Collapsible notes area

  • Auto-saves as you type
  • Persists between sessions
  • Great for tracking HP, initiative, events

Step 3: Understanding the Map Controls

The map toolbar (top of main area) provides essential controls:

Zoom Controls

  • −/+ buttons - Zoom in and out
  • Percentage - Current zoom level
  • Reset button - Fit map to view

Token Management

  • Add Token - Quick-add a monster token to the map
  • Add PCs - Place all campaign PCs on the map at once

Reveal Map Toggle

A danger-styled toggle that reveals the entire map to players. Use with caution - this bypasses fog of war completely.

Line of Sight Controls (UVTT maps only)

When using UVTT maps with wall data:

  • LOS Toggle - Switch between Fog and Token modes:

    • Fog - Map is hidden outside PC vision areas
    • Token - Map visible, but enemy tokens hidden outside vision
  • Debug button - Visualize line of sight calculations

  • Ambient Light - Set base lighting level:

    • Bright - Full daylight
    • Dim - Twilight or torchlight
    • Dark - Complete darkness (darkvision only)

Viewport Sync

  • Sync - Auto-sync your view to the player display
  • Push View - Manually push current view to players

Step 4: Working with Tokens

Moving Tokens

  1. Click and hold a token
  2. Drag to the new position
  3. Release to place

Tokens snap to grid squares by default.

Token Visibility

Tokens have visibility states that affect what players see:

  • Visible - Players see the token
  • Hidden - Only DM sees (for surprise encounters)

Right-click a token to toggle visibility.

Interacting with Monster Tokens

Click a monster in the sidebar or on the map to open the Monster Stats Panel:

  • Full stat block
  • Actions and abilities
  • Quick reference during combat

The panel slides in from the right without blocking the map.

Step 5: Controlling Fog of War

Fog of war automatically calculates what players can see based on:

  • PC token positions
  • Vision radius (based on darkvision)
  • Light sources (torches, lanterns)
  • Wall obstructions (UVTT maps only)

How Vision Works

  1. PC tokens reveal fog - Only PCs with “visible to players” reveal areas
  2. NPCs don’t reveal - NPC tokens don’t create vision
  3. Light sources extend vision - Placed light sources affect visibility

Lighting Controls

The ambient light dropdown affects base visibility:

  • Bright - Everything visible within range
  • Dim - Disadvantage on Perception, colors muted
  • Dark - Only darkvision and light sources work

Toggle light sources on/off by right-clicking them on the map or using the player display controls.

Step 6: Using the Player Display

The Player Display shows a separate view for your players (on a TV, projector, or shared screen).

Opening Player Display

  1. Click Player Display in the header
  2. A new window opens (drag to your player-facing screen)
  3. The button changes to “Display Open”

What Players See

  • Current map with fog of war applied
  • Visible tokens only
  • No monster names or stats
  • Revealed areas based on PC vision

Blackout Mode

Click the Blackout button (eye icon) to:

  • Hide everything from players
  • Show a black screen
  • Useful for dramatic reveals or bathroom breaks

Click again to restore the view.

Syncing Views

By default, auto-sync is enabled:

  • When you pan/zoom, players see the same view
  • Keeps everyone focused on the action

Disable sync for independent viewing, then use Push View to manually update the player display.

Step 7: Taking Session Notes

The collapsible notes panel at the bottom is perfect for:

  • Initiative order
  • HP tracking
  • Important events
  • NPC dialogue
  • Player decisions

Using Notes

  1. Click Session Notes bar to expand
  2. Type your notes
  3. Notes auto-save as you type
  4. Status shows “Saving…” then “Saved”

Notes persist between sessions - they’re saved to your campaign folder.

Step 8: Ending the Session

When you’re done:

  1. Click End Session in the header
  2. You return to the module dashboard
  3. Session notes are saved
  4. Token positions are preserved

Your module is ready for the next session right where you left off.

Pro Tips

Combat Efficiency

  • Open monster stats before combat starts
  • Use session notes for initiative tracking
  • Pre-position tokens for surprise encounters

Fog of War

  • Place light sources at choke points
  • Use darkness to create tension
  • Toggle lights for dramatic effect

Player Display

  • Use Blackout for reveals
  • Sync view for guided exploration
  • Push View for “cinematic” shots

Quick Reference

ActionHow To
Enter Play ModeModule dashboard → Play button
Exit Play ModeEnd Session button
Switch mapsClick map in sidebar
Move tokenDrag and drop
View monster statsClick monster in sidebar
Toggle fog modeLOS toggle (Fog/Token)
Set ambient lightLight dropdown
Open player displayPlayer Display button
Blackout displayEye icon (when display open)
Take notesSession Notes panel

Next tutorial: Player Display Setup

Player Display Setup

This tutorial walks you through setting up and using the Player Display - a second window that shows your players what their characters can see while you maintain full DM control.

Time to complete: 5 minutes

What you’ll learn:

  • Set up a second screen for players
  • Open and control the Player Display
  • Understand what players see vs. what you see
  • Use Blackout mode for dramatic reveals

Prerequisites

  • Completed Tutorial 3 (Play Mode basics)
  • Ideally: a second monitor, TV, or projector for players

The Two-Screen Setup

The Player Display creates a two-screen experience:

Your Screen (DM)Player Screen
Full map with all tokensFog of war applied
Monster names and statsToken images only
Hidden tokens visibleHidden tokens invisible
All controls and toolsClean, focused view

This lets you manage everything behind the scenes while players see only what their characters would see.

Step 1: Connect Your Second Screen

Before opening the Player Display, connect your second screen:

  • TV or Monitor - HDMI/DisplayPort connection
  • Projector - For tabletop projection
  • Extended Display - Not mirrored (each screen shows different content)

Display Arrangement

On your computer:

  1. Open display settings
  2. Set to “Extend” (not “Mirror”)
  3. Arrange screens to match physical layout
  4. Note which screen is secondary

Step 2: Enter Play Mode

  1. Open your campaign
  2. Go to the Modules tab
  3. Select a module and click Play
  4. Make sure a map is active (click one in the sidebar)

Step 3: Open the Player Display

In the Play Mode header:

  1. Click the Player Display button
  2. A new window opens
  3. The button changes to show “Display Open”

Player Display Button

Position the Window

Drag the Player Display window to your secondary screen:

  1. Click and hold the window title bar
  2. Drag to the player-facing screen
  3. Maximize the window (or press F11 for fullscreen)

Tip: On macOS, you can use Mission Control to move windows between spaces. On Windows, use Win+Shift+Arrow keys.

Step 4: Understanding the Views

What You See (DM View)

DM View

Your view shows everything:

  • All tokens (visible and hidden)
  • Monster names and quantities
  • Full toolbar and controls
  • Line of sight visualization (debug mode)
  • Session notes panel

What Players See

Player View - Fog of War

Player View - Token Line of Sight

The player display shows:

  • The map image
  • Fog of war based on PC positions
  • Visible tokens only (no hidden enemies)
  • Token images without names
  • No controls or UI elements

Step 5: Controlling What Players See

Fog of War

Fog of war updates automatically based on:

  • Where PC tokens are positioned
  • Their vision radius (including darkvision)
  • Active light sources
  • Walls and obstacles (UVTT maps)

Move a PC token and watch the fog update in real-time on both screens.

Reveal Map Toggle

For situations where you want to show the whole map:

  1. Find the Reveal Map toggle in the toolbar
  2. Enable it to bypass fog of war
  3. Disable it to restore fog of war

Use this for:

  • Area maps without exploration
  • Post-combat wrap-up
  • Location reveals

Ambient Lighting

The ambient light level affects visibility:

LevelEffect
BrightNormal visibility, full colors
DimReduced visibility, muted colors
DarkOnly darkvision and light sources work

Change this to match the in-game environment (dungeon, night, etc.).

Step 6: Using Blackout Mode

The Blackout button (eye icon) appears when the display is open:

  1. Click Blackout to hide everything from players
  2. The player screen goes completely black
  3. Click again to restore the view

When to Use Blackout

  • Before the session - Set up tokens without revealing
  • Dramatic reveals - Build anticipation
  • Breaks - Bathroom/snack breaks
  • Map transitions - Switch maps without showing the change
  • Plot moments - Describe what happens before showing it

Step 7: Syncing Views

Control whether players see your exact viewport:

Auto-Sync (Default)

  • Your pan and zoom are mirrored
  • Players see what you focus on
  • Great for guided exploration

Manual Sync

  1. Click the Sync button to disable auto-sync
  2. Navigate freely on your screen
  3. Click Push View when ready to update players

Use Cases

ScenarioSync Setting
Guided dungeon crawlAuto-sync ON
Combat positioningAuto-sync OFF, push when ready
Looking ahead secretlyAuto-sync OFF
Theater of the mindBlackout ON

Step 8: Closing the Display

When your session ends:

  1. Click Player Display button again, or
  2. Close the player display window directly
  3. The button returns to its original state

The main Play Mode continues - you can reopen the display anytime.

Physical Setup Tips

TV/Monitor Setup

  • Position so all players can see
  • Adjust brightness for room lighting
  • Consider a TV mount or stand

Projector Setup

  • Project onto table or wall
  • Calibrate for grid accuracy
  • Consider ambient light levels

Virtual Setup

  • Share the player window via screen share
  • Use a separate browser window for remote players
  • Consider latency for viewport updates

Quick Reference

ActionHow To
Open player displayPlay Mode → Player Display button
Close player displayClick button again or close window
BlackoutEye icon (when display open)
Reveal entire mapReveal Map toggle
Change lightingAmbient light dropdown
Sync viewsSync button (toggle)
Push current viewPush View button

Troubleshooting

Display Opens on Wrong Screen

  • Drag window to correct screen
  • Maximize after moving

Players See Hidden Tokens

  • Check token visibility settings
  • Ensure “visible to players” is off for hidden tokens

Fog Not Updating

  • Verify PC tokens are marked visible
  • Check that PCs have a token on the active map
  • Confirm UVTT wall data loaded (for wall occlusion)

No Second Window

  • Check popup blocker settings
  • Try clicking the button again
  • Restart Play Mode

Next Steps

You’ve completed the tutorial series! You can now:

  • Create and manage campaigns
  • Build adventure modules with maps and encounters
  • Run sessions with fog of war
  • Use a second screen for players

Explore the How-To Guides for specific tasks, or check the Reference for detailed documentation.


Return to: Tutorials Overview

Campaigns

How-to guides for creating and managing campaigns.

Create a Campaign

This guide shows you how to create a new campaign in Mimir.

Home Screen

Steps

  1. Open the Campaign Selector in the header bar
  2. Click + New Campaign
  3. Fill in the campaign details:
    • Campaign Name (required) - A descriptive name
    • Description (optional) - Notes about your campaign
  4. Click Create Campaign

You’ll be redirected to your new campaign’s dashboard.

Tips

  • Use descriptive names that help you identify campaigns later
  • The description is only visible to you - use it for notes about themes, players, or status

See Also

Manage Documents

Mimir uses documents to organize campaign and module content. This guide covers creating, editing, and organizing documents.

Document Types

Documents are organized by their purpose:

  • Campaign documents - World-building, lore, factions
  • Module documents - Session prep, encounter notes, location descriptions

Creating Documents

Campaign Documents

  1. Go to the Campaign Dashboard
  2. Click the Campaign tab
  3. Use the document sidebar to create new documents

Module Documents

  1. Open a module from the Modules tab
  2. Documents appear in the module dashboard
  3. Create documents from templates or blank

Document Templates

Mimir provides templates for common document types:

  • Session notes
  • Location descriptions
  • NPC profiles
  • Encounter plans

Templates include prompts and structure to guide your writing.

Editing Documents

  1. Click a document to open the editor
  2. Use the rich text editor to write content
  3. Changes save automatically
  4. Click × to close and return to the list

Document Stages

Documents progress through stages based on your workflow:

  • Draft - Initial creation
  • Review - Ready for revision
  • Complete - Finished and ready for use

Mark documents complete when they’re ready for play.

See Also

Export Campaign

Export your campaign as a portable archive for backup or transfer.

Steps

  1. Open your campaign dashboard
  2. Click Export in the campaign header
  3. Choose a save location
  4. The campaign exports as a .tar.gz archive

What’s Included

The archive contains:

  • Campaign metadata and settings
  • All module data
  • Maps and token positions
  • Documents and session notes
  • Character assignments

Use Cases

  • Backup - Regular exports protect against data loss
  • Transfer - Move campaigns to another computer
  • Sharing - Send a campaign to another DM

Importing

To import an exported campaign:

  1. From the Home Screen, click Import Campaign
  2. Select the .tar.gz file
  3. The campaign appears in your campaign list

See Also

Maps

How-to guides for working with battle maps.

Upload a Map

Add battle maps and area maps to your modules.

Supported Formats

  • Image files - PNG, JPG, WebP
  • UVTT files - Universal VTT format (includes grid and wall data)

Steps

  1. Open a module from the Modules tab
  2. Find the Maps section in the module dashboard
  3. Click the + button
  4. Choose your map file
  5. Configure map settings:
    • Name - Display name for the map
    • Grid Size - Pixels per grid square
    • Grid Offset - X/Y offset if grid doesn’t align
  6. Click Upload

UVTT Files

UVTT (Universal VTT) files from tools like Dungeondraft contain:

  • Map image
  • Grid configuration
  • Wall and door data for line of sight

When you upload a UVTT file, grid settings are imported automatically.

Image Files

For standard image files, you’ll need to:

  1. Determine the grid size (pixels per square)
  2. Measure or estimate from the image
  3. Adjust offset if the grid doesn’t start at (0,0)

Tips

  • Common grid sizes: 70px, 100px, 140px per square
  • Use UVTT files when available for best fog of war support
  • Name maps descriptively (e.g., “Goblin Cave - Entrance”, “Boss Chamber”)

See Also

Configure Grid

Adjust grid settings so tokens align properly with your map.

Note: UVTT files (from Dungeondraft and similar tools) include grid data automatically. You only need to configure the grid for standard image files (PNG, JPG, WebP).

When to Configure

You may need to adjust the grid when:

  • Using a standard image file (not UVTT)
  • The overlay doesn’t match the map’s grid lines
  • Tokens don’t snap to the right positions

Steps

  1. Open the Token Setup modal (click a map)
  2. Click Grid in the canvas controls
  3. Adjust settings:
    • Grid Size - Pixels per square
    • X Offset - Horizontal shift in pixels
    • Y Offset - Vertical shift in pixels
  4. Watch the grid overlay update in real-time
  5. Click Save when aligned

Finding the Right Grid Size

Method 1: Count Squares

  1. Measure the map width in pixels
  2. Count the number of squares horizontally
  3. Divide: width ÷ squares = grid size

Method 2: Trial and Error

  1. Start with common values: 70, 100, or 140
  2. Adjust until the overlay matches
  3. Fine-tune with offset values

Grid Offset

Use offset when the grid doesn’t start at the top-left corner:

  • X Offset - Shifts grid right (positive) or left (negative)
  • Y Offset - Shifts grid down (positive) or up (negative)

Tips

  • UVTT files include grid data - less configuration needed
  • Save your settings - they persist with the map
  • Zoom in for precise alignment

See Also

Place Tokens

Place monsters, NPCs, and objects on your maps for encounters.

Token Setup

Open Token Setup

  1. Navigate to a module (Modules tab → select module)
  2. Find your map in the Maps section
  3. Click the map card to open Token Setup

Token Palette

The left panel shows available tokens:

  • Monsters - Creatures added to this module
  • NPCs - Non-player characters assigned to the module
  • Traps - Hazards and traps
  • Objects - Generic object tokens
  • Light Sources - Torches, lanterns, candles

Placing a Token

  1. Click a token in the palette
  2. Configure options (size, color, visibility)
  3. Click on the map where you want to place it
  4. The token appears at that location

Token Options

Before placing, you can set:

  • Size - Tiny, Small, Medium, Large, Huge, Gargantuan
  • Color - Border color for identification
  • Visible to Players - Whether players can see this token

Managing Placed Tokens

Tokens appear in the inventory panel (right side):

  • Click to select on the map
  • Drag to reposition
  • Click × to delete
  • Right-click for options

Moving Tokens

  1. Click and drag a token
  2. Move to the new position
  3. Release to place

Tokens snap to grid squares by default.

Tips

  • Place monsters before the session starts
  • Use different colors to distinguish groups
  • Hide tokens for surprise encounters

See Also

Manage Light Sources

Light sources affect visibility in fog of war. This guide covers placing and controlling lights.

Light Source Types

TypeBright LightDim Light
Torch20 ft40 ft
Lantern30 ft60 ft
Candle5 ft10 ft

Placing Light Sources

  1. Open Token Setup (click a map)
  2. Find Light Sources in the Token Palette
  3. Click a light type (Torch, Lantern, or Candle)
  4. Click on the map to place

Light Source Inventory

Placed light sources appear in the right panel under “Light Sources”:

  • Each light shows its type
  • Lit/Unlit button toggles the light
  • × button deletes the light

Toggling Lights

In Token Setup

Click the Lit/Unlit button next to any light source in the inventory.

In Play Mode

Right-click a light source on the map to toggle it.

How Lights Affect Visibility

  • Lit - Expands visible area for all tokens
  • Unlit - No effect on visibility
  • Lights work with PC darkvision to determine what players see

Use Cases

  • Torches on walls - Simulate dungeon lighting
  • Lanterns with party - Light source that moves with PCs
  • Candles on tables - Ambient lighting for atmosphere

Tips

  • Place lights at choke points for dramatic reveals
  • Toggle lights during play for effect (torch goes out!)
  • Combine with ambient light settings for atmosphere

See Also

Print Maps

Export maps to PDF for physical play or reference.

Steps

  1. Open Play Mode for your module
  2. Select the map you want to print
  3. Click Print in the toolbar
  4. Configure print options
  5. Click Export PDF
  6. Choose a save location
  • Include Grid - Overlay the grid on the map
  • Include Tokens - Show token positions
  • Token Cutouts - Generate separate token images for cutting
  • Scale - Adjust size for printing

Tiled Printing

For large maps that span multiple pages:

  1. Enable tiled mode
  2. Set your paper size
  3. Mimir generates pages that align when assembled

Token Cutouts

Generate circular token images:

  1. Enable token cutouts
  2. Choose cutout size
  3. PDF includes a sheet of printable tokens

Tips

  • Print at actual scale (1 inch = 5 ft) for miniatures
  • Use card stock for durability
  • Laminate maps for dry-erase markers

See Also

Characters

How-to guides for creating and managing characters.

Create a Player Character

Create player characters using the character creation wizard.

Access the Character Creator

  1. Click Characters in the header
  2. Click + New Character
  3. Select Player Character

Character Creation Wizard

The wizard guides you through five steps:

Step 1: Basics

  • Character name
  • Player name (who plays this character)

Step 2: Race

  • Select race from the campaign’s enabled sources
  • Race determines racial traits and ability score options

Step 3: Class

  • Select class (Fighter, Wizard, Rogue, etc.)
  • Set starting level
  • Choose subclass if applicable

Step 4: Abilities

  • Set ability scores
  • See computed modifiers

Step 5: Review

  • Review all selections
  • Make final adjustments
  • Click Create

After Creation

Your character appears in:

  • Characters list
  • Available for campaign assignment
  • Character sheet view

Editing Characters

  1. Click a character in the list
  2. Open the character sheet
  3. Edit sections directly
  4. Changes auto-save

Tips

  • Get character info from players before creating
  • Use the wizard for complete characters
  • Quick-create for NPCs doesn’t need all steps
  • Level up uses a separate dialog

See Also

Create an NPC

Create non-player characters for your campaigns and modules.

Steps

  1. Click Characters in the header
  2. Click + New Character
  3. Select NPC

NPC Creation

NPC creation is simplified — only a name is required:

  1. Enter the NPC Name
  2. Click Create

Additional details like race, class, role, and location can be edited after creation on the character detail view.

Assigning NPCs

NPCs can be assigned to:

  • Campaign - Recurring characters across modules
  • Module - Location-specific NPCs

NPC vs Monster

TypeUse Case
NPCNamed characters with personality
MonsterCombat encounters, unnamed enemies

Use NPCs for important characters the party interacts with socially.

Tips

  • Create NPCs during prep, not at the table
  • Keep descriptions brief but memorable
  • Include one distinctive trait or quirk
  • Link to relevant plot threads in notes

See Also

Assign to Campaign

Add characters to a campaign so they appear in Play Mode.

Assigning Player Characters

From the Campaign Dashboard

  1. Open your campaign
  2. Go to the PCs tab
  3. Click Add Character
  4. Select characters from the list
  5. Click Assign

From the Character List

  1. Click Characters in the header
  2. Find the character
  3. Click the character to open details
  4. Select a campaign from the dropdown
  5. Save changes

Assigning NPCs

Campaign-Level NPCs

  1. Open your campaign dashboard
  2. Go to the NPCs tab
  3. Click Add NPC
  4. Select or create an NPC

Module-Level NPCs

  1. Open a module
  2. Find the NPCs section
  3. Click + to add an NPC
  4. Select from campaign NPCs or create new

What Assignment Does

Assigned PCs appear in:

  • Campaign PCs tab
  • Play Mode sidebar
  • “Add PCs” button functionality

Assigned NPCs appear in:

  • Campaign or module NPC lists
  • Token placement palette

Removing Characters

  1. Find the character in the campaign tab
  2. Click the remove button
  3. Character returns to unassigned

The character isn’t deleted - just removed from the campaign.

Tips

  • Assign all PCs before the first session
  • NPCs can belong to multiple modules
  • Characters can be in multiple campaigns

See Also

Print Character Sheet

Export character sheets to PDF for printing.

Steps

  1. Click Characters in the header
  2. Find and click the character
  3. Click Print or Export PDF
  4. Configure print options
  5. Save the PDF

The export dialog lets you select which sections to include:

  • Compact Sheet (2-page) - Stats, combat, skills, equipment summary
  • Spell Cards - Printable cards for all spells (if the character is a caster)

Both options are enabled by default. At least one must be selected to export.

Compact Sheet

The 2-page character sheet includes:

  • Character name, race, class, and level
  • Ability scores and modifiers
  • Combat stats (AC, HP, speed, initiative)
  • All 18 skills with computed bonuses
  • Saving throws
  • Attacks and equipment
  • Proficiencies
  • Personality traits, ideals, bonds, flaws
  • Spellcasting info and spell slots (if applicable)
  • Full inventory
  • Currency

Spell Cards

For spellcasters, spell cards are printed in a 3x3 grid:

  • Each spell gets a card with name, level, school, casting time, range, components, and description
  • Cut and use as physical references during play

Tips

  • Print before session for quick reference
  • Use card stock for durability
  • Update and reprint after level ups
  • Keep a backup PDF

See Also

Modules

How-to guides for creating adventure modules.

Create a Module

Add adventure modules to your campaign.

What is a Module?

A module is a self-contained adventure:

  • “The Goblin Hideout”
  • “Dragon’s Lair”
  • “The Haunted Manor”

Each module has its own maps, monsters, NPCs, and documents.

Modules Tab

Steps

  1. Open your campaign dashboard
  2. Go to the Modules tab
  3. Click the + button
  4. Fill in the module details:
    • Module Name - Descriptive title for the adventure
    • Module Type - Select type (Standard Adventure, Mystery, Dungeon Crawl, Heist, Horror, Political Intrigue)
    • Description (optional) - Notes about the module
  5. Click Create

After Creation

Your new module appears in the modules table with action buttons for Play, Open, and PDF export.

Organizing Modules

Modules are numbered in creation order:

  • Module 1: “Cragmaw Hideout”
  • Module 2: “Cragmaw Castle”
  • Module 3: “Wave Echo Cave”

Use descriptive names to identify content.

Tips

  • Create one module per dungeon or major location
  • Break large adventures into multiple modules
  • Start with your first session’s content
  • Add more modules as players progress

See Also

Add Monsters

Add monsters from the D&D 5e catalog to your maps via Token Setup.

Token Setup

Steps

  1. Open a module from the Modules tab
  2. Click a map card to open Token Setup
  3. In the Token Palette, click Monster
  4. Search by name (e.g., “Goblin”, “Dragon”, “Zombie”)
  5. Select a monster from the results
  6. Configure token options (size, color, visibility)
  7. Click on the map to place the monster token

The search includes:

  • Monster name
  • Challenge rating
  • Type (beast, humanoid, undead, etc.)
  • Source book

Results show CR and source for quick reference.

Token Options

Before placing, configure:

  • Size - Tiny, Small, Medium, Large, Huge, Gargantuan
  • Color - Border color to distinguish groups
  • Visible to Players - Hide for surprise encounters

Placing Multiple Monsters

To add multiple of the same monster:

  1. Search and select the monster
  2. Click on the map to place each one
  3. Each placement creates a new token

Or place one token and adjust quantities in the Token Inventory.

Managing Monster Tokens

Placed monsters appear in the Token Inventory (right panel):

  • Click to select on map
  • Drag to reposition
  • Click × to delete
  • Right-click for more options

Viewing Monster Stats

In Play Mode, click any monster in the sidebar to see:

  • Full stat block
  • Ability scores and modifiers
  • Actions and special abilities
  • Legendary actions (if applicable)

Tips

  • Add monsters during prep, not at the table
  • Use different colors to distinguish enemy groups
  • Hide tokens for surprise encounters
  • Search by CR to find level-appropriate challenges

See Also

Module Documents

Create and manage documents for your adventure modules.

Document Types

Module documents help you prepare:

  • Session notes
  • Location descriptions
  • Encounter plans
  • Read-aloud text
  • NPC dialogue

Creating Documents

  1. Open a module from the Modules tab
  2. Find the Documents section
  3. Click to create a new document
  4. Choose a template or start blank

Document Templates

Templates provide structure:

  • Pre-filled sections
  • Prompts for common content
  • Consistent formatting

Editing Documents

  1. Click a document to open the editor
  2. Write your content
  3. Changes auto-save
  4. Click × to close

Document Stages

Mark documents as complete when ready:

  • In Progress - Still working on it
  • Complete - Ready for the session

Completed documents show a checkmark.

Organizing Documents

Documents appear by stage:

  • Work through stages as you prep
  • Completed documents move to the bottom
  • Keep track of what’s ready

Tips

  • Create documents during prep, not at the table
  • Use read-aloud text for atmospheric descriptions
  • Keep encounter plans brief and scannable
  • Session notes can be edited during play

See Also

Play Mode

How-to guides for running game sessions.

Start a Session

Enter Play Mode to run your game session.

Prerequisites

  • A module with at least one map
  • Tokens placed on the map (optional but recommended)

Steps

  1. Open your campaign
  2. Go to the Modules tab
  3. Find your module in the modules table
  4. Click the Play button in the module’s row

You’re now in Play Mode.

Play Mode Interface

Play Mode

Play Mode has a different layout:

  • Header - Navigation and display controls
  • Left Sidebar - Monsters and maps
  • Main Area - Tactical map view
  • Bottom Panel - Session notes

Initial Setup

When you enter Play Mode:

  1. Select the starting map from the sidebar
  2. Position PC tokens on the map
  3. Open the Player Display (if using second screen)
  4. You’re ready to play!

Quick Start Options

Add PCs Button

Click Add PCs to place all campaign player characters on the map at once.

Add Token Button

Click Add Token to quickly add a monster from the catalog.

Ending the Session

Click End Session in the header to:

  • Save all notes
  • Preserve token positions
  • Return to the module dashboard

Tips

  • Enter Play Mode before players arrive to set up
  • Use Blackout mode while positioning tokens
  • Save session notes as you play

See Also

Manage Encounters

Run combat encounters effectively during your session.

Viewing Monster Stats

In Play Mode, click any monster in the sidebar to open the Monster Stats Panel:

  • Full stat block
  • Ability scores and saves
  • Actions and attacks
  • Special abilities

The panel slides in from the right, keeping the map visible.

Monster Quick List

The sidebar shows all monsters in the module:

  • Quantity - Number of each monster (e.g., “3×”)
  • Name - Monster name
  • Encounter Tag - Group label (if set)

Click to select and view stats.

Adding Tokens During Play

Quick Add Token

  1. Click Add Token in the toolbar
  2. Search for a monster
  3. Click to add to the module
  4. Click on the map to place

Add All PCs

Click Add PCs to place all campaign player characters on the map at their default positions.

Moving Tokens in Combat

  1. Drag tokens to new positions
  2. Tokens snap to the grid
  3. Movement is visible on the player display (if open)

Token Visibility

Toggle token visibility to:

  • Hide enemies before combat starts
  • Reveal monsters during surprise rounds
  • Show reinforcements arriving

Right-click a token to toggle visibility.

Tips

  • Open monster stats before combat starts
  • Track HP in session notes
  • Use encounter tags to group monsters by room/area
  • Position hidden tokens before players enter areas

See Also

Fog of War

Control what players can see on the map using fog of war and line of sight.

Fog of War - Player View

How Fog of War Works

Fog of war reveals areas based on:

  • PC token positions
  • Vision radius (darkvision)
  • Active light sources
  • Wall obstructions (UVTT maps)

Vision Modes

Fog Mode

  • Map is hidden outside PC vision
  • Only revealed areas are visible to players
  • Creates exploration atmosphere

Token Mode

Token Mode

  • Entire map is visible
  • Enemy tokens are hidden outside PC vision
  • Useful for exploration without hiding geography

Toggle between modes using the LOS switch in the toolbar.

Ambient Light

Set the base lighting level:

LevelEffect
BrightFull visibility within range
DimMuted colors, reduced perception
DarkOnly darkvision and light sources work

Change using the ambient light dropdown.

Reveal Map

The Reveal Map toggle bypasses fog of war:

  • Entire map visible to players
  • All tokens visible (including hidden)
  • Use for area overviews or non-combat scenes

Wall Occlusion

UVTT maps include wall data for accurate line of sight:

  • Walls block vision
  • Doors can be open or closed
  • Creates realistic room-by-room exploration

Standard image maps don’t have wall data - vision is circular.

Tips

  • Use darkness for dungeon atmosphere
  • Toggle lights for dramatic effect
  • Reveal Map for town maps where fog doesn’t make sense
  • Switch to Token mode for complex combat

See Also

Use Player Display

Show players a fog-of-war view on a second screen.

Player Display Header

Opening the Display

  1. Enter Play Mode
  2. Click Player Display in the header
  3. A new window opens
  4. Drag the window to your player-facing screen

What Players See

Player View

The player display shows:

  • Current map with fog of war
  • Visible tokens only
  • No monster names or stats
  • Clean interface without controls

Blackout Mode

Hide everything from players:

  1. Click the Blackout button (eye icon)
  2. Player screen goes black
  3. Click again to restore

Use for:

  • Setup before session
  • Dramatic reveals
  • Map transitions
  • Bathroom breaks

Viewport Sync

Auto-Sync (Default)

  • Your pan and zoom mirror to player display
  • Players see what you focus on

Manual Sync

  1. Disable Sync in the toolbar
  2. Navigate freely on your screen
  3. Click Push View to update player display

Switching Maps

  1. Click a different map in the sidebar
  2. Player display updates automatically
  3. Use Blackout during transitions for drama

Closing the Display

  • Click Player Display button again, or
  • Close the window directly

Tips

  • Use fullscreen (F11) on the player screen
  • Keep notes on your screen, map on theirs
  • Use Blackout liberally for reveals
  • Disable sync when planning ahead secretly

See Also

UI Reference

Detailed documentation for each screen and interface in Mimir.

Screens

Home Screen

The Home Screen is your starting point in Mimir. From here you can access campaigns, characters, and reference materials.

Home Screen

Layout

Header Bar

The header bar is consistent across the application:

  • Mimir Logo (skull icon) - Returns to the home screen from anywhere
  • Campaign Selector - Switch between campaigns
  • Characters - View and manage all characters
  • Reference - D&D 5e reference materials (monsters, spells, items)
  • Settings (gear icon) - Configure application preferences

Main Content

The home screen displays the Mimir landing with the floating skull and tagline.

Actions

ActionHow To
Open campaignCampaign Selector dropdown → select campaign
Create campaignCampaign Selector → + New Campaign
Access charactersClick “Characters” in header
Access referenceClick “Reference” in header
Open settingsClick gear icon in header

See Also

Campaign Dashboard

The Campaign Dashboard is your central hub for managing a campaign. It uses a tabbed interface to organize different aspects of your campaign.

Campaign Dashboard

  • Campaign Name - Displayed prominently at the top
  • Export - Export campaign as .tar.gz archive
  • Settings - Campaign configuration options

Tabs

Campaign Tab

World-building and campaign-level content:

  • Documents - Campaign documents organized by stage
  • World Building - Setting details, factions, locations
  • Timeline - Campaign events and history

Modules Tab

Adventure modules within this campaign:

  • Module List - Sidebar showing all modules
  • Module Dashboard - Selected module’s content
  • Create Module - Add new adventure modules

NPCs Tab

Non-player characters for this campaign:

  • NPC List - All NPCs across modules
  • NPC Details - Stats, notes, relationships
  • Create NPC - Add new NPCs

PCs Tab

Player characters assigned to this campaign:

  • PC List - Characters in this campaign
  • Assign PC - Add existing characters
  • PC Details - Full character sheets

Document Stages

Documents progress through stages:

StagePurpose
Pre-ProductionEarly ideas and planning
ProductionActive development
Post-ProductionRefinement and polish
ArchiveCompleted or retired content

See Also

Module Prep View

The Module Prep View is where you prepare adventure content before running it in Play Mode.

Module Prep View

Layout

The module list showing all modules in the campaign:

  • Module Cards - Name and number
  • Create Module - Add new module (+)
  • Active Indicator - Shows which module is selected

Main Panel (Right)

The selected module’s dashboard with sections:

Module Header

  • Module Name - Title of the adventure
  • Play - Enter Play Mode for this module
  • Print - Generate printable materials

Content Sections

Documents

Session prep documents and notes:

  • Organized by type (encounter notes, descriptions, etc.)
  • Create new documents with the + button
  • Click to edit

NPCs

Non-player characters specific to this module:

  • Quick reference for module NPCs
  • Link to full NPC details
  • Add NPCs with the + button

Maps

Battle maps and area maps:

  • Map cards with thumbnails
  • Click to open Token Setup
  • Upload new maps with the + button

Dangers

Quick view of monsters in this module (populated from Token Setup).

Actions

ActionHow To
Create moduleClick + next to “Modules” header
Select moduleClick module in sidebar
Enter Play ModeClick “Play” button
Upload mapMaps section → + button
Open Token SetupClick a map card
Add documentDocuments section → + button

See Also

Play Mode

Play Mode is the interface for running game sessions. It provides tactical map display, monster reference, and session tools.

Play Mode

Entering Play Mode

From the Modules tab, click the Play button in the module’s table row.

Layout

Header Bar

  • Back to Prep - Return to Module Prep View
  • Module Name - Currently playing module
  • PLAY MODE - Visual indicator
  • Player Display - Open/close player window
  • Blackout - Hide content from players (when display open)
  • End Session - Exit Play Mode

Collapsible panel with:

Monsters

  • All monsters in the module
  • Grouped by encounter
  • Shows quantity (e.g., “3× Goblin”)
  • Click for stat block

Maps

  • All maps in the module
  • Click to switch active map
  • Maps from other modules available

Map Canvas (Center)

The tactical display:

  • Current map with grid
  • All tokens (visible and hidden)
  • Fog of war visualization
  • Light source effects

Map Toolbar

Above the map canvas:

ControlFunction
Zoom+/- buttons, percentage display
ResetFit map to view
Add TokenQuick-add monster to map
Add PCsPlace all campaign PCs
Reveal MapToggle to bypass fog of war
LOS ToggleSwitch between Fog and Token modes
DebugVisualize line of sight
Ambient LightBright, Dim, or Dark
SyncAuto-sync view to player display
Push ViewManual sync to player display

Session Notes (Bottom)

Collapsible notes panel:

  • Auto-saves as you type
  • Persists between sessions
  • Track initiative, HP, events

Vision Modes

Fog Mode

  • Map hidden outside PC vision
  • Reveals as PCs explore
  • Maximum immersion

Token Mode

  • Map fully visible
  • Enemy tokens hidden outside vision
  • Geography known, enemies hidden

Working with Tokens

  • Move - Click and drag
  • Select - Click token
  • Toggle visibility - Right-click → Visible/Hidden
  • View stats - Click monster in sidebar

Player Display Controls

When Player Display is open:

  • Blackout - Hide everything from players
  • Sync - Auto-mirror your view
  • Push View - Manual view update

See Also

Token Setup Modal

The Token Setup Modal is where you configure maps, place tokens, and prepare encounters.

Token Setup Modal

Opening Token Setup

Click any map card in the Module Prep View to open Token Setup.

Layout

Token Palette (Left)

Tools for adding content to the map:

Monster

  • Search D&D 5e monsters by name
  • Shows CR and source book
  • Click to select, then click map to place

NPC

  • Add NPC tokens
  • Select from module NPCs

Trap

  • Add trap markers
  • Configure trigger areas

Object

  • Generic object tokens
  • Furniture, obstacles, etc.

Light Sources

  • Torch (20 ft bright / 40 ft dim)
  • Lantern (30 ft bright / 60 ft dim)
  • Candle (5 ft bright / 10 ft dim)

Map Canvas (Center)

The main map display:

  • Grid Overlay - Aligned to map squares
  • Placed Tokens - All tokens on this map
  • Zoom Controls - Adjust view
  • Pan - Click and drag to move

Token Inventory (Right)

All placed content:

Tokens

  • List of all placed tokens
  • Click to select on map
  • Delete with × button

Light Sources

  • All placed lights
  • Lit/Unlit toggle
  • Delete with × button

Canvas Controls

Located above the map:

  • Zoom - +/- buttons and percentage
  • Grid - Open grid configuration (image files only)
  • Reset - Fit map to view

Token Options

When placing tokens:

OptionDescription
SizeTiny, Small, Medium, Large, Huge, Gargantuan
ColorBorder color for identification
VisibleWhether players can see this token

Grid Configuration

For image files (not UVTT):

  • Grid Size - Pixels per square
  • X Offset - Horizontal adjustment
  • Y Offset - Vertical adjustment

Note: UVTT files include grid data automatically.

Workflow

  1. Open Token Setup (click map)
  2. Select token type from palette
  3. Configure options if needed
  4. Click on map to place
  5. Repeat for all tokens
  6. Add light sources as needed
  7. Close modal (×) - saves automatically

See Also

Player Display

The Player Display is a separate window showing what players can see, designed for a second screen, TV, or projector.

Player Display Header

Opening the Display

In Play Mode, click the Player Display button in the header. A new window opens that you can drag to your player-facing screen.

What Players See

Player View - Fog of War

The player display shows:

  • Map - Current active map
  • Fog of War - Based on PC positions and vision
  • Visible Tokens - Only tokens marked as visible
  • Light Effects - From active light sources

What’s Hidden

Players do NOT see:

  • Hidden tokens
  • Monster names or stats
  • DM controls or UI
  • Session notes
  • Debug visualizations

Fog of War Modes

Player View - Token Mode

Fog Mode

  • Unrevealed areas are black
  • Reveals based on PC vision
  • Best for exploration

Token Mode

  • Full map visible
  • Enemy tokens hidden outside vision
  • Best for tactical combat

DM Controls

When the Player Display is open, additional controls appear:

ControlFunction
BlackoutShow black screen to players
Reveal MapBypass fog of war entirely
SyncAuto-mirror your pan/zoom
Push ViewManual view update
Ambient LightAffects fog of war calculation

Blackout Mode

Click the eye icon (Blackout) to:

  • Hide everything from players
  • Show a completely black screen
  • Set up encounters secretly
  • Create dramatic reveals

Click again to restore the view.

View Syncing

Auto-Sync (Default)

  • Your pan and zoom are mirrored
  • Players see what you focus on

Manual Sync

  1. Disable Sync toggle
  2. Navigate freely on your screen
  3. Click Push View when ready

Physical Setup

TV/Monitor

  • Connect via HDMI/DisplayPort
  • Set display to “Extend” (not mirror)
  • Drag Player Display window to second screen
  • Maximize or fullscreen (F11)

Projector

  • Project onto table or wall
  • Useful for tabletop projection mapping

Virtual/Remote

  • Share the Player Display window via screen share
  • Works with Discord, Zoom, etc.

Troubleshooting

IssueSolution
Window on wrong screenDrag to correct display, then maximize
Players see hidden tokensCheck token visibility settings
Fog not updatingVerify PCs are marked visible
No window opensCheck popup blocker settings

See Also

Keyboard Shortcuts

Quick reference for keyboard shortcuts in Mimir.

Global Shortcuts

ShortcutAction
Cmd/Ctrl + ,Open Settings
EscapeClose modal/panel

Map Navigation

ShortcutAction
ScrollZoom in/out
Click + DragPan the map
Cmd/Ctrl + 0Reset view (fit map)
+ / -Zoom in/out

Token Manipulation

ShortcutAction
ClickSelect token
DragMove token
Right-clickToken context menu
DeleteDelete selected token

Play Mode

ShortcutAction
SpaceToggle play/pause (if applicable)
F11Toggle fullscreen (player display)
BToggle blackout

Document Editor

ShortcutAction
Cmd/Ctrl + SSave (auto-saves anyway)
Cmd/Ctrl + BBold
Cmd/Ctrl + IItalic
Cmd/Ctrl + ZUndo
Cmd/Ctrl + Shift + ZRedo

Notes

  • Cmd is used on macOS, Ctrl on Windows/Linux
  • Some shortcuts may vary by platform
  • Shortcuts work when the relevant view has focus

File Formats

Supported file formats in Mimir.

Map Formats

Image Files

Standard image formats for battle maps:

FormatExtensionNotes
PNG.pngBest for maps with transparency
JPEG.jpg, .jpegGood for photographic maps
WebP.webpEfficient compression

UVTT Format

Universal Virtual Tabletop format:

Extension.uvtt, .dd2vtt
SourceDungeondraft, other VTT tools
ContentsMap image + grid data + walls

UVTT files include:

  • Embedded map image
  • Grid size and offset
  • Wall and door positions
  • Light source data (some tools)

Export Formats

PDF Export

Available for:

  • Character sheets
  • Maps (with optional grid)
  • Campaign archives
  • Token cutout sheets

Archive Export

Campaign backup format:

  • .tar.gz archive containing all campaign data
  • Maps, documents, characters
  • Use for backup or transfer

Character Data

Characters are stored in the Mimir database:

  • Not exported as separate files
  • Use campaign archive for backup
  • PDF export for printable sheets

Import Sources

D&D Content

Mimir can import from:

  • 5e.tools JSON format
  • Official SRD content

Content is stored in the catalog database.

Map Creation

  1. Create in Dungeondraft
  2. Export as UVTT
  3. Import to Mimir (grid auto-configured)

Backup

  1. Use Export Archive regularly
  2. Store .tar.gz files externally
  3. Import on new installations

Vision & Lighting

How D&D 5e vision rules work in Mimir’s fog of war system.

Vision Basics

Mimir calculates what players can see based on:

  • Token positions
  • Vision radius
  • Light sources
  • Wall obstructions (UVTT maps)

Vision Types

Normal Vision

Characters without special vision see based on ambient light:

  • Bright light - Full visibility
  • Dim light - Disadvantage on Perception
  • Darkness - Cannot see

Darkvision

Characters with darkvision can see in darkness as if it were dim light:

  • Range varies by race (typically 60 ft)
  • Colors appear as shades of gray
  • Cannot see in magical darkness

Ambient Light Levels

Set the base lighting for the entire map:

LevelDescriptionEffect
BrightDaylight, well-lit roomsFull visibility
DimTwilight, torchlitReduced visibility
DarkUnderground, nightDarkvision or light required

Light Sources

Light sources create areas of illumination:

SourceBright LightDim Light
Candle5 ft10 ft
Torch20 ft40 ft
Lantern30 ft60 ft

Light Radius Calculation

  • Bright light radius at full effect
  • Dim light extends to the listed range
  • Beyond dim light, darkness applies

Fog of War Modes

Fog Mode

Map areas outside PC vision are hidden:

  • Revealed as PCs move
  • Creates exploration atmosphere
  • Enemies hidden until seen

Token Mode

Map is fully visible, but:

  • Enemy tokens hidden outside vision
  • Useful for complex maps
  • Players see geography, not threats

Wall Occlusion

UVTT maps include wall data:

  • Walls block line of sight
  • Vision stops at wall boundaries
  • Doors can be toggled open/closed

Standard image maps use circular vision without obstructions.

PC Vision Only

Only player character tokens reveal fog:

  • NPCs do not create vision
  • Monster tokens do not reveal areas
  • Prevents accidental reveals from hidden enemies

How Vision Is Calculated

  1. For each PC token, calculate vision radius
  2. Apply darkvision if applicable
  3. Add light source bonuses
  4. Check wall obstructions (UVTT)
  5. Union all PC vision areas
  6. Reveal combined area to players

Tips for DMs

  • Use darkness for tension
  • Toggle lights for dramatic reveals
  • Reveal Map bypasses all vision
  • Token Mode for combat focus
  • Fog Mode for exploration

Glossary

Definitions of terms used in Mimir.

A

Ambient Light
The base lighting level for a map (bright, dim, or dark). Affects what characters can see before accounting for light sources.

B

Blackout
A mode that hides everything from the player display. Used for dramatic reveals or setup.

C

Campaign
A collection of modules, characters, and documents representing a D&D adventure series.
Campaign Dashboard
The main interface for managing a campaign, with tabs for Campaign, Modules, NPCs, and PCs.

D

Darkvision
A character trait allowing sight in darkness as if it were dim light. Common among elves, dwarves, and other races.
Document
A text entry for notes, descriptions, or session prep. Can be attached to campaigns or modules.

E

Encounter Tag
A label for grouping monsters by location or encounter (e.g., “Cave Entrance”, “Boss Room”).

F

Fog of War
System that hides map areas outside PC vision. Reveals as characters move.

G

Grid
The square overlay on maps representing 5-foot spaces. Configurable size and offset.

L

Light Source
An object that creates illumination on the map (torch, lantern, candle). Affects fog of war.
LOS (Line of Sight)
Calculation determining what characters can see based on walls and obstructions.

M

Module
A self-contained adventure within a campaign. Contains maps, monsters, NPCs, and documents.
Monster
A creature from the D&D catalog added to encounters. Has stats, actions, and abilities.

N

NPC (Non-Player Character)
A character controlled by the DM. Can be simple (name and description) or full stat block.

P

PC (Player Character)
A character controlled by a player. Created with full stats using the character wizard.
Play Mode
The interface for running game sessions. Includes map display, monster stats, and session notes.
Player Display
A second window showing what players see. Applies fog of war and hides DM information.

R

Reveal Map
A toggle that shows the entire map to players, bypassing fog of war.

S

Session Notes
Auto-saving text area in Play Mode for tracking HP, initiative, and events.

T

Token
A visual representation of a creature or object on the map. Can be moved and configured.
Token Palette
The panel showing available tokens to place on a map.
Token Setup
The modal for placing and configuring tokens on a map before play.

U

UVTT
Universal Virtual Tabletop format. Map files that include grid and wall data.

V

Vision Radius
How far a character can see, affected by darkvision and light sources.
Viewport
The visible area of the map. Can be synced between DM and player display.

Campaigns vs Modules

Understanding Mimir’s two-level hierarchy for organizing your D&D games.

The Problem

When preparing a D&D campaign, you’re managing two different scopes:

  1. Campaign-level - The overarching story, recurring characters, world lore
  2. Adventure-level - Specific dungeons, encounters, session content

Mixing these creates chaos: Where do you put the goblin boss? Under the campaign? But he’s only in this dungeon. What about the recurring villain? She appears in multiple adventures.

Mimir’s Solution

Mimir separates these concerns:

Campaigns contain:

  • World-building and lore
  • Recurring NPCs
  • Player characters
  • The overarching story

Modules contain:

  • Specific adventures
  • Maps and encounters
  • Location-specific monsters
  • Session prep documents

Why This Works

Reusability

A module like “Goblin Cave” can be:

  • Used in multiple campaigns
  • Run for different groups
  • Adapted and improved over time

Focus

When preparing for Tuesday’s session:

  • Open the relevant module
  • See only what you need
  • Don’t wade through campaign-wide content

Organization

As your campaign grows:

  • Add new modules without cluttering old ones
  • Archive completed adventures
  • Track progress by module

Practical Examples

A Published Adventure

Running “Lost Mine of Phandelver”:

  • Campaign: “Phandelver Campaign”
  • Module 1: “Goblin Arrows” (ambush + Cragmaw Hideout)
  • Module 2: “Phandalin” (town exploration)
  • Module 3: “Cragmaw Castle”
  • Module 4: “Wave Echo Cave”

A Homebrew Campaign

Your original world:

  • Campaign: “The Shattered Realms”
  • Module 1: “The Haunted Mine” (first adventure)
  • Module 2: “Festival of Shadows” (town event)
  • Module 3: “Dragon’s Lair” (climax)

One-Shots

Even one-shots benefit:

  • Campaign: “One-Shot Collection”
  • Module 1: “Goblin Heist”
  • Module 2: “Murder Mystery”
  • Module 3: “Dragon Hunt”

When to Use Each

Put in the Campaign

  • Setting information
  • Recurring NPCs
  • Player character assignments
  • World maps
  • Faction details

Put in the Module

  • Dungeon maps
  • Encounter monsters
  • Location-specific NPCs
  • Session prep documents
  • Read-aloud text

The Boundary Cases

Some content could go either way:

Major villain - Campaign NPC, appears in multiple modules Dungeon boss - Module monster, only in that adventure Town shopkeeper - Could be either, depends on recurrence

When in doubt: If you’ll reference it in multiple modules, put it in the campaign. If it’s session-specific, put it in the module.

Benefits for Long Campaigns

As campaigns run for months or years:

  • Modules act as “chapters” you can reference
  • Old modules preserve their state
  • New modules start fresh
  • Campaign-level content evolves

See Also

The Two-Board System

How Mimir’s campaign and module boards help you manage preparation.

Origin

The Two-Board System comes from Kanban methodology, adapted for D&D preparation. Instead of one overwhelming to-do list, you have structured workflows at two levels.

Campaign Board

The Campaign Dashboard organizes high-level work:

Campaign Tab

World-building and setting:

  • Lore documents
  • Faction descriptions
  • World maps
  • Historical notes

Modules Tab

Adventure management:

  • List of all modules
  • Module status tracking
  • Quick access to prep and play

NPCs Tab

Recurring characters:

  • Major NPCs
  • Villains
  • Allies and contacts

PCs Tab

Player characters:

  • Character assignments
  • Quick access to sheets

Module Board

Each module has its own preparation space:

Documents

Session-specific prep:

  • Encounter plans
  • Read-aloud text
  • Location descriptions

NPCs

Location-specific characters:

  • Quest givers
  • Shopkeepers
  • Informants

Maps

Battle and area maps:

  • Dungeon layouts
  • Encounter locations
  • Token placements

Dangers

Monsters and hazards:

  • Encounter creatures
  • Traps and hazards
  • Grouped by location

Workflow Philosophy

Prepare Once, Use Forever

Campaign content persists across modules:

  • Write the villain’s backstory once
  • Reference from any module
  • Update as the story evolves

Module-Focused Sessions

When running a session:

  • Enter Play Mode for the specific module
  • Everything you need is there
  • No digging through campaign-wide content

Progressive Preparation

You don’t have to prepare everything:

  1. Create campaign with basic info
  2. Add first module with first session content
  3. Expand as you play
  4. Add modules as needed

Information Flow

Campaign → Module

  • NPCs can be assigned to modules
  • Campaign PCs appear in Play Mode
  • Setting context informs module content

Module → Campaign

  • Session notes inform campaign evolution
  • Completed modules become campaign history
  • NPCs discovered in modules can become recurring

Benefits

Reduced Overwhelm

  • See only what’s relevant
  • Clear boundaries between content
  • Focus on current needs

Better Organization

  • Everything has a place
  • Easy to find content
  • Consistent structure

Flexible Preparation

  • Prepare deeply or lightly
  • Add detail as needed
  • Skip what you don’t need

See Also

Document Workflow

How Mimir’s stage-based document system helps you track preparation progress.

The Challenge

Preparing a D&D session involves many pieces:

  • Maps to upload
  • Monsters to add
  • Descriptions to write
  • Notes to organize

Without structure, it’s easy to lose track of what’s ready and what still needs work.

Stage-Based Progression

Documents in Mimir progress through stages:

Draft

Initial creation:

  • Just started
  • Rough notes
  • Placeholder content

Review

Ready for revision:

  • Content complete
  • Needs polish
  • Check for consistency

Complete

Ready for play:

  • Finalized content
  • All details filled in
  • Session-ready

Visual Tracking

The document sidebar shows:

  • Documents grouped by stage
  • Visual indicators for completion
  • Progress at a glance

Templates

Mimir provides templates for common document types:

Session Notes

  • Pre-session prep section
  • During-session notes
  • Post-session recap

Location Description

  • Overview
  • Key features
  • Secrets and discoveries

Encounter Plan

  • Setup and trigger
  • Combatants
  • Tactics
  • Rewards

NPC Profile

  • Appearance
  • Personality
  • Goals and motivations
  • Useful information

Workflow Benefits

Clear Progress

See exactly what’s ready:

  • Incomplete documents need attention
  • Complete documents are session-ready
  • No guessing about preparation status

Prioritization

Focus on what matters:

  • Work through drafts
  • Review before sessions
  • Mark complete when done

Confidence

Know you’re prepared:

  • All complete = ready to play
  • Incomplete = still working
  • Review = almost there

Practical Tips

Before First Session

  1. Create key documents as drafts
  2. Fill in essential content
  3. Mark complete when ready

Ongoing Preparation

  1. Add drafts as ideas come
  2. Review and polish before sessions
  3. Complete what you’ll need

During Play

  1. Session notes auto-save
  2. Add observations and outcomes
  3. Reference prepared content

Document vs Session Notes

Prepared Documents

  • Written before play
  • Reference material
  • Encounter plans, descriptions

Session Notes

  • Written during play
  • Real-time capture
  • HP tracking, events, decisions

Both have their place in your workflow.

See Also

Vision System

How Mimir implements D&D 5e vision and lighting rules.

Why Vision Matters

In D&D, what characters can see affects:

  • Exploration and discovery
  • Combat tactics
  • Stealth and surprise
  • Atmosphere and tension

Mimir’s vision system brings these rules to your virtual tabletop.

D&D 5e Vision Rules

Light Levels

D&D defines three light levels:

Bright Light Most creatures see normally. Includes:

  • Daylight
  • Torchlit rooms
  • Magical light

Dim Light Lightly obscured area. Creates:

  • Disadvantage on Perception checks
  • Shadows and half-light

Darkness Heavily obscured area. Results in:

  • Effectively blind
  • Auto-fail sight-based checks
  • Advantage for hidden creatures

Darkvision

Many races and creatures can see in darkness:

  • Treat darkness as dim light
  • Treat dim light as bright light
  • Cannot discern color (shades of gray)
  • Typical range: 60 feet

How Mimir Implements This

Fog of War

The map is divided into:

  • Revealed - Areas PCs can see
  • Hidden - Areas beyond PC vision

As tokens move, fog updates automatically.

Vision Radius

Each PC token calculates visible area:

  1. Base vision from ambient light
  2. Extended by darkvision (if applicable)
  3. Extended by light sources
  4. Blocked by walls (UVTT maps)

Light Sources

Placed light sources create illumination:

  • Torch: 20 ft bright, 40 ft dim
  • Lantern: 30 ft bright, 60 ft dim
  • Candle: 5 ft bright, 10 ft dim

Lit sources expand visible areas. Unlit sources have no effect.

Wall Occlusion

UVTT maps include wall data:

  • Vision stops at walls
  • Rooms reveal individually
  • Doors can be open or closed

Without wall data, vision is circular (line of sight to all directions).

Vision Modes

Fog Mode

Default exploration mode:

  • Map hidden outside vision
  • Reveals as PCs explore
  • Maximum immersion

Token Mode

Combat-focused mode:

  • Map fully visible
  • Enemy tokens hidden outside vision
  • Geography known, enemies hidden

Reveal Mode

Override mode:

  • Everything visible
  • Bypasses all fog
  • Use for non-exploration scenes

What Creates Vision

Does reveal fog:

  • Player Character tokens
  • Active light sources

Does not reveal fog:

  • NPC tokens
  • Monster tokens
  • Hidden tokens

This prevents accidental reveals from positioned enemies.

Practical Considerations

Dungeon Exploration

  • Use Fog mode
  • Set ambient light to dim or dark
  • Place torches on walls
  • Reveal room by room

Combat Encounters

  • Consider Token mode
  • Players see the battlefield
  • Hidden reinforcements stay hidden

Town Scenes

  • Use Reveal mode
  • Fog doesn’t fit the fiction
  • Focus on roleplay, not exploration

Dramatic Reveals

  • Use Blackout
  • Position elements
  • Reveal with effect

Tips for DMs

Before Sessions

  • Check ambient light setting
  • Place light sources strategically
  • Test with a PC token

During Play

  • Toggle lights for effect
  • Adjust ambient as needed
  • Switch modes as appropriate

For Atmosphere

  • Dark + scattered torches = tension
  • Bright = safety
  • Sudden darkness = danger

See Also

Campaign Generation Framework

A systematic approach to creating and managing D&D campaigns that grow with your players.

What You’ll Learn

This framework teaches you how to:

  • Build campaigns that adapt to player choices
  • Manage preparation time efficiently
  • Create content that builds on itself
  • Run sessions with confidence
  • Scale your efforts to match your ambitions

The Framework Path

1. Foundations

Start here to understand the philosophy and core organizational system that makes everything else work.

2. Campaign Genesis

Learn the four-phase process for launching a campaign that excites your players and gives you creative fuel for months.

3. Module Creation

Design 3-6 session story arcs that tell complete tales while advancing your campaign.

4. Session Management

Master the weekly workflow that turns preparation into play.

5. Scaling the System

Adapt the framework for everything from one-shots to multi-year epics.

6. Templates & Tools

Ready-to-use artifacts that make the system practical.

Start Here

New to the framework? Begin with Framework Philosophy to understand the core principles, then explore The Three-Board System to see how it all fits together.

Need a quick reference? Check out the Campaign Framework Cheat Sheet for an algorithmic breakdown of when to create documents and advance through stages.

Design Principles

  • Sustainable: Work you do once serves you many times
  • Responsive: Player choices shape the campaign
  • Scalable: From single sessions to epic campaigns
  • Practical: Real tools for real games

Remember: The goal isn’t perfect documentation—it’s memorable games.

Framework Philosophy

The Problem with Traditional D&D Prep

Every Dungeon Master faces the same fundamental challenge: how to create engaging, coherent campaigns while maintaining a sustainable creative pace. Traditional approaches often lead to:

  • Prep burnout: Spending 4-6 hours preparing for each 4-hour session
  • Wasted effort: Creating content that players never encounter
  • Narrative drift: Losing track of plot threads and character arcs
  • Cognitive overload: Trying to keep everything in your head
  • Player disconnection: Failing to integrate player interests into the world

The Mimir Campaign Generation Framework addresses these challenges through a systematic approach that treats campaign management as a creative project with clear deliverables, feedback loops, and sustainable practices.

Core Philosophy: Sustainable Campaign Management

At its heart, this framework rests on a simple principle: Campaign management should enhance creativity, not constrain it. By providing structure where structure helps and flexibility where flexibility matters, we create a system that supports long-term campaign success.

The Five Guiding Principles

1. Just-In-Time Creation

Principle: Create content only when you know it will be used.

Traditional prep often involves creating elaborate dungeons, detailed NPCs, and complex plot lines that players might never encounter. Just-In-Time Creation means:

  • Prepare what you need for the next session, plus a small buffer
  • Develop deeper content only after players show interest
  • Keep a library of modular components for rapid deployment
  • Let player choices guide world expansion

Example: Instead of detailing every shop in a city, create a template for shops and flesh out specific ones only when players visit them.

2. Design to Fit the Container

Principle: Sessions should reach satisfying endings within your time limit.

Don’t force 4-hour adventures into 1-hour slots—design 1-hour adventures instead. This means:

  • Match content scope to actual session length
  • Create natural breakpoints and cliffhangers
  • Build adventures that can conclude satisfyingly in your timeframe
  • Adjust pacing expectations to your table’s schedule

Example: If you play 45-minute lunch sessions, design episodic encounters with clear beginnings and endings rather than trying to run a traditional dungeon crawl.

3. Player-Driven Development

Principle: The best content emerges from player interests and choices.

Rather than forcing players through predetermined storylines:

  • Track what excites players during sessions
  • Build on throwaway comments and theories
  • Let player backstories drive major arcs
  • Use player actions to determine world reactions

Example: A player mentions their character fears spiders. This becomes a thread that eventually leads to a module featuring a cult of Lolth.

4. Sustainable Pace

Principle: Marathon campaigns require marathon training.

A campaign that lasts years needs consistent, manageable effort:

  • Establish a weekly routine that works long-term
  • Build in recovery time and prep breaks
  • Use “filler” sessions to reduce prep load
  • Maintain energy reserves for campaign climaxes

Example: Alternating high-prep “main plot” sessions with low-prep “downtime” sessions where players pursue personal goals.

5. Living Documentation

Principle: Your campaign world should be discoverable, not memorized.

Human memory is fallible; good organization is reliable:

  • Document decisions as you make them
  • Maintain accessible reference materials
  • Use consistent formats for quick scanning
  • Keep player-facing and DM-facing docs separate

Example: A simple “Campaign Bible” that tracks all established facts, NPCs, and locations in a searchable format.

Cognitive Load Management

The framework explicitly addresses cognitive load through physical and digital organization:

The Three Types of Cognitive Load

  1. Intrinsic Load: The inherent complexity of running D&D

    • Rules adjudication
    • NPC roleplay
    • Combat management
  2. Extraneous Load: Unnecessary mental burden

    • Searching for information
    • Remembering plot details
    • Tracking campaign continuity
  3. Germane Load: Productive creative thinking

    • Improvising NPC dialogue
    • Adapting to player choices
    • Building dramatic moments

The framework minimizes extraneous load to maximize germane load, allowing you to focus on what matters: creating memorable experiences for your players.

When to Use This Framework

This framework excels in specific scenarios:

Ideal Use Cases

  • Long-term campaigns: Anything planned for 6+ months
  • Complex narratives: Multiple plot threads and recurring NPCs
  • Busy DMs: Limited prep time but high quality expectations
  • New DMs: Need structure while developing their style
  • Collaborative tables: High player agency and world-building

When to Consider Alternatives

  • One-shots: Overhead exceeds benefit
  • Purely episodic: No continuing narrative
  • Sandbox purists: Prefer entirely emergent gameplay
  • High-prep preference: Enjoy extensive world-building

The Paradigm Shift

Moving from traditional prep to this framework requires shifting your mindset:

From: “I need to know everything”
To: “I need to know enough”

From: “Players might go anywhere”
To: “Players will signal their interests”

From: “More prep is better”
To: “Smart prep is better”

From: “I must control the story”
To: “I facilitate the story”

From: “Everything must be original”
To: “Everything must be engaging”

These shifts create a sustainable, player-centric approach that produces better campaigns with less effort.

Success Metrics

How do you know the framework is working?

Quantitative Measures

  • Prep time: 1 hour prep per 4 hours of play
  • Session regularity: 90%+ sessions happen as scheduled
  • Campaign longevity: Campaigns last as long as intended
  • Player retention: Players prioritize game nights

Qualitative Measures

  • DM energy: Feeling energized after sessions, not drained
  • Player engagement: Active participation and between-session discussions
  • Story coherence: Plot threads resolve satisfyingly
  • Creative flow: Inspiration comes easily during prep

Getting Started

The framework’s modular nature means you can adopt it gradually:

  1. Start small: Implement just the Two-Board System
  2. Build habits: Establish your weekly workflow
  3. Add tools: Introduce templates as needed
  4. Refine process: Adjust to your table’s needs

Remember: The framework serves you, not the other way around. Take what works, modify what doesn’t, and create your own sustainable campaign management practice.

The following chapters will guide you through each component of the framework, from high-level organization to session-by-session execution. By the end, you’ll have a complete toolkit for running engaging, sustainable campaigns that grow with your players’ interests while respecting your time and energy.

The Two-Board System

Overview: Organizing Creative Chaos

The Two-Board System transforms campaign management from mental juggling to physical organization. Inspired by agile project management and kanban workflows, it creates a visual, tactile system for tracking your campaign’s past, present, and future.

Whether implemented physically with actual boards and index cards or digitally with folders and files, the system provides clear information architecture that reduces cognitive load and improves creative flow.

The Two Organizational Levels

The system uses two distinct levels—Campaign and Module—each serving a specific purpose in your workflow.

  • Campaign Board: Tracks the big picture (entire campaign arc)
  • Module Board: Tracks adventure content (runnable modules)

Sessions are play time, not planning. A module might take 1 session or 6 sessions to complete—that’s determined by your players at the table, not your planning ahead of time. You run modules; sessions happen.

Campaign Board


Time Horizon: Entire campaign arc Review Cycle: Monthly Purpose: Track overarching narrative and long-term developments

This board tracks the readiness and lifecycle of campaign-level elements. The Campaign board manages:

  • Campaign documentation readiness
  • Player character integration status
  • Major arc development stages
  • Long-term thread tracking
  • Campaign health metrics

The Campaign Binder

The Campaign board tracks the health and development of your Campaign Binder, which contains:

  • Section 1: Core Documents (Campaign Bible, Theme Cards)
  • Section 2: Major NPCs (Antagonists, Allies, Neutral Powers)
  • Section 3: Player Characters (Arcs, Backstory Integration)
  • Section 4: World Events (Timeline, Background Events)
  • Section 5: Campaign Health (Attendance, Energy Levels, Feedback)

Workflow Stages

StagePurposeExit CriteriaActivities/Artifacts
ConceptIdeas and possibilities• Spark defined
• Potential identified
• Define campaign spark
• Brainstorm Big Three
• Sketch major arcs
Session ZeroPlayer-facing preparation• Pitched to players
• Player buy-in confirmed
• Write Campaign Pitch
• Create Starting Scenario
• Prepare handouts
IntegrationWeaving into active play• Connected to PC goals
• Hooks planted in modules
• Connect PC backstories
• Plant arc hooks in modules
• Update Campaign Bible
ActiveCurrently affecting play• Driving current events
• Players engaged
• Track arc progress
• Monthly reviews
• Update thread status
ConcludingWrapping up threads• Resolution achieved
• Consequences determined
• Document outcomes
• Archive materials
• Plan transitions

Module Board


Time Horizon: Current adventure arc Review Cycle: Weekly (post-session) Purpose: Manage runnable adventure content

This board manages the development lifecycle of your modules—complete, runnable adventures. The Module board tracks:

  • Module development stages
  • Component readiness (encounters, NPCs, locations)
  • Adventure content completion
  • Current module progress
  • Module completion status

The Module Binder

The Module board tracks the health and development of your Module Binder, which contains:

  • Section 1: Module Overview (Front matter, hooks, structure)
  • Section 2: Adventure Content (Read-aloud text, encounters, scenes)
  • Section 3: NPCs (Synced from front matter references)
  • Section 4: Locations (Maps, descriptions, environmental details)
  • Section 5: DM Notes (Pacing, scaling, troubleshooting)

Workflow Stages

StagePurposeExit CriteriaActivities/Artifacts
BacklogFuture possibilities• Concept clear
• General scope known
• Sketch module concepts
• Identify potential hooks
PlanningActive development• Hook established
• Front matter complete
• Write Module Overview
• Add catalog references
• Design critical path
DevelopmentDetailed creation• Adventure content written
• Encounters detailed
• Create adventure scenes
• Write read-aloud text
• Add DM notes
ReadyPrepared to run• Complete and runnable
• Materials synced
• Final review
• Sync front matter to files
• Prepare handouts
ActiveCurrently running• In play now
• Tracking progress
• Run the module
• Capture play notes
• Track consequences
CompletedFinished modules• Resolution reached
• Outcomes recorded
• Document outcomes
• Update Campaign docs
• Archive materials

Running Sessions

Sessions aren’t planned on a board—they happen when you sit down to play. Here’s how sessions fit into the system:

Before Each Session

  1. Review where you are in the active module
  2. Note which scenes/encounters are likely next
  3. Pull NPC information from your synced files
  4. Gather materials (maps, handouts, stat blocks)

During the Session

Run the module content, adapting to player choices. The module provides structure; your DM skills provide energy.

After Each Session

Capture Play Notes:

  • What happened (key events, decisions)
  • Player reactions and theories
  • Dangling threads
  • DM notes for next time

These notes flow back up to update your Module and Campaign documentation.

For detailed guidance on running sessions, see Running the Game.


How the Boards Work Together

The two boards create a natural workflow that pulls information where it’s needed, when it’s needed. Here’s how it works in practice:

Starting from Zero

You’ve got a group of friends who want to play D&D, and you’ve offered to DM. Your Campaign board starts empty, but ideas begin flowing onto cards in the Concept column: “Dragon Civil War,” “The Last Gods,” “The Imprisoned Corruption.” You share these sparks with your players over coffee, gauging reactions. Their eyes light up at the mention of ancient evils and dwarven ruins—“The Imprisoned Corruption” it is.

The card moves to Session Zero on your Campaign board. You create your first Campaign Binder documents: a Campaign Pitch that captures the dark fantasy tone, and a Starting Scenario describing the mining town of Greyhold. When your players create their characters—Marcus the paladin seeking redemption, Thora the dwarven merchant, Elara the scholar-wizard, and Torin the veteran fighter—these become new cards moving into Integration. You’re building a living world around their choices.

Campaign to Module Flow

Session Zero was two weeks ago. Your players are excited, characters are built, and everyone’s ready to discover what “The Imprisoned Corruption” means. Your Campaign board shows cards in Active: the overarching threat, three player character arcs, and the Ironhold setting. Time to create your first module.

You grab a card and write “The Brittle Steel Mystery.” This opening module needs to accomplish several things: introduce the corruption threat without revealing everything, give each character a reason to care, and establish Ironhold as worth saving. You move it to Planning on your Module board.

Opening your Campaign Binder, you pull what you need: the corruption theme, the sealed evil that mustn’t escape, the promise of heroes preventing catastrophe. These Campaign-level truths shape your module planning—the players will discover a local mystery that’s actually the first symptom of something vast.

Through the week, you develop the module. You write the YAML front matter referencing monsters from your catalog. You draft read-aloud text for key scenes. You detail the encounters and DM notes. By week’s end, when you move it to Ready on your Module board, your module is complete and runnable.

The important part isn’t the creation process—it’s that your Module board shows you exactly when to start the next one. When your current module is nearly complete, that’s your trigger. You’ll move a new idea from Backlog to Planning, opening your Campaign Binder again to ensure the next arc connects to your larger story.

Module to Play

Your first module is ready. “The Brittle Steel Mystery” sits in the Ready column of your Module board, complete with all the content needed to run. Time for game night.

You don’t need a separate session board. The module itself contains everything: the opening scene in the Rusty Anvil tavern, three ways the characters might meet, the panicked smith who bursts in with broken tools. Before each session, you review where you are in the module, note what’s likely to happen next, and gather your materials.

As you prep, you realize Torin’s player mentioned wanting family in town. Nothing in your module prevents this—in fact, it’s perfect. You make a note: the panicked smith is Torin’s cousin. This session-level detail enriches the module content without requiring any board updates.

Game night unfolds beautifully—the party investigates, theorizes, and decides to check the Deepguard Archive. Perfect. This is exactly one of the paths your module anticipated. The next morning, you capture play notes: what happened, player theories (Tom thinks it’s sabotage, Sarah suspects magic), and threads to follow up.

The module continues over subsequent sessions. It takes as many sessions as it takes—the players’ pace determines the timeline, not your planning.

The Complete Circuit

Game night generates new information. The party saved Morak but couldn’t prevent the seal from cracking. Sarah’s character revealed she can read ancient dwarven—a surprise that needs tracking. The party decided to seek out the remaining seals immediately rather than returning to town.

These outcomes flow back up. You update your Module with the seal’s status and the party’s chosen direction. This module will likely wrap next session—earlier than expected. At the Module level, you move “The Second Seal” from Backlog to Planning.

When month’s end comes, your Campaign review shows the pattern. The Imprisoned Corruption arc has driven three successful modules. Marcus’s player specifically mentioned how the corruption theme resonates with his redemption arc. You update your Campaign documentation, adding notes about how each seal’s breaking should escalate the visible effects.

The circuit is complete: Campaign priorities shaped Module selection, Modules provided adventure content, play generated outcomes that updated Modules, and Module completions informed Campaign evolution.

Feedback Loops: Information Flowing Back Up

The Two-Board System isn’t just about pulling content down—it’s about pushing discoveries back up. Every session generates information that needs to flow upward through your system.

Play → Module Flow (What happened affects the current arc): During Session 3, the players completely ignored the merchant quarter and spent two hours investigating the abandoned mine instead. They’re convinced the corruption originates underground. This discovery flows up to your Module board: add a card to Backlog for “The Forgotten Shafts” location.

Play → Campaign Flow (What happened affects everything): Tom’s wizard just used a spell in a creative way that shattered your assumptions about magic in this world. This flows all the way up to Campaign. You update your magic system notes in the Campaign Binder. Every future module will incorporate this new understanding.

Module → Campaign Flow (Completed arcs shape the future): “The Brittle Steel Mystery” is complete. The party saved Ironhold but made enemies of the Goldbeard clan in the process. This module outcome flows up to Campaign level: move “Goldbeard Revenge” from Concept to Active.

Player Interest Signals (The most important feedback): Session 2: Sarah mentions her merchant character should have contacts in other cities. Session 4: She asks specifically about trade routes to Ironpeak. Session 6: She wants to send a message to her factor there.

This pattern flows up through every level. At Module: your next arc features Ironpeak. At Campaign: you develop the Merchant Guild as a major faction. Sarah’s interests are writing your campaign.


Review Cadences

The system works because you touch it regularly. Not lengthy planning sessions—quick, focused check-ins that keep everything flowing.

Post-Session (20 minutes): The morning after game night, while it’s fresh. Capture what happened in your play notes, what surprised you, what the players loved. These notes feed everything else. Don’t analyze yet—just record.

Pre-Session (60-90 minutes): Before each game. Review where you are in the active module. Pull the information you need. Prep NPCs who might appear. This isn’t creation time—it’s assembly and customization.

Weekly Module Check (10 minutes): Usually the day after a session. Quick glance: How far through the current module? Anything need to bubble up to Campaign level? Any Backlog ideas ready to move to Planning? This prevents the “Oh no, my module ends next session and I have nothing planned” panic.

Monthly Campaign Review (30 minutes): Once per month. Are player arcs getting spotlight time? Has the campaign drifted from its core themes? What Background elements should activate? This is when you zoom out and see the forest, not just the trees.

Success Indicators

You know the Two-Board System is working when:

  • Prep flows smoothly: Module content is ready; you just review and gather
  • Sessions feel connected: Clear throughlines between games
  • Players notice continuity: Their actions have visible consequences
  • Cognitive load drops: Less mental juggling during sessions
  • Creativity increases: More mental space for improvisation

Signs It’s Working

  • You check boards for answers, not obligation
  • Prep feels like assembly, not creation
  • Players notice consequences spanning sessions
  • You can explain any NPC’s motivation instantly
  • Campaign events feel inevitable, not forced

Next Steps

With the Two-Board System as your organizational foundation, you’re ready to:

Remember: The goal isn’t perfect documentation but sustainable organization. When you spend less mental energy tracking information, you have more available for creating memorable experiences.

Campaign Genesis Process

The Journey from Idea to First Session

Creating a new campaign feels overwhelming. Where do you start? What needs to be ready? How much is enough? The Campaign Genesis Process provides a structured path from initial inspiration to your first session, ensuring you build a solid foundation without overpreparation.

This process typically takes 2-3 weeks of casual effort, transforming a vague idea into a playable campaign with room to grow based on player input.

Tutorial Campaign: The Ironhold Insurrection

Throughout these chapters, we’ll build a complete campaign from scratch. You’ll see exactly how each phase works with real examples you can adapt for your own use.

Our Example Campaign: The Ironhold Insurrection - A dwarven city-state faces civil war as ancient clan rivalries explode into violence, while something stirs in the abandoned deeps below.

The Five Phases

The Campaign Genesis Process breaks down into five manageable phases:

Phase 1: The Spark (Week 1)

Transform your initial idea into a clear campaign concept:

  • Finding and refining your spark
  • Defining the Big Three
  • Creating your starting point
  • Time: 5-8 hours across a week
  • Output: Campaign pitch and starting scenario

Phase 2: Session Zero Preparation (Week 2)

Prepare everything needed for a successful Session Zero:

  • Creating the Session Zero packet
  • Designing character integration systems
  • Planning the session structure
  • Time: 6-9 hours across a week
  • Output: Complete Session Zero materials

Phase 3: Session Zero Execution (Week 3, Day 1)

Run an effective Session Zero that aligns everyone:

  • Setting tone and expectations
  • Collaborative character creation
  • Building party connections
  • Time: 3-4 hour session
  • Output: Completed characters and group dynamics

Phase 4: Integration and Launch (Week 3)

Transform Session Zero results into your first adventure:

  • Character integration process
  • First session preparation
  • Launch checklist
  • Time: 6-9 hours across a week
  • Output: Ready-to-run first session

Phase 5: Campaign Conclusion (When Ready)

Bring your campaign to a satisfying close:

  • Recognizing when to conclude
  • Planning the finale arc
  • Resolving story threads
  • Time: Planning happens across final 8 sessions
  • Output: Memorable ending and preserved campaign materials

Total Investment

The complete Campaign Genesis Process (Phases 1-4) requires:

  • Calendar Time: 2-3 weeks to launch
  • Total Hours: 20-30 hours for initial setup
  • Daily Average: 1-2 hours
  • Peak Time: Session Zero day (3-4 hours)

Phase 5 (Conclusion) happens organically when your campaign reaches its natural end point.

This investment creates:

  • Clear campaign vision and themes
  • Player buy-in and investment
  • Integrated character backstories
  • Solid first adventure
  • Foundation for sustainable long-term play

Success Patterns

Campaigns that thrive share common genesis patterns:

  • Clear vision communicated early
  • Player input incorporated from the start
  • Flexible structure that can adapt
  • Sustainable scope matching your time
  • Strong opening that hooks everyone

How to Use This Guide

Each phase includes:

  • Conceptual overview explaining the why
  • Step-by-step process showing the how
  • Concrete examples from our tutorial campaign
  • Templates and tools you can copy
  • Time estimates for planning

Work through each phase in order, but feel free to adapt the process to your needs. The examples show one way to do things—not the only way.

Ready to transform your campaign idea into reality? Let’s begin with Phase 1: The Spark.

Phase 1: The Spark

Every campaign begins with a spark—that initial idea that excites you enough to build a world around it. This phase captures and refines that inspiration into a workable campaign concept.

Finding Your Spark

Sparks come from many sources:

  • Media Inspiration: “What if Game of Thrones met Aliens?”
  • Mechanical Interest: “I want to run a campaign about naval exploration”
  • Thematic Question: “What does it mean to be heroic in a morally gray world?”
  • Visual Imagery: “A city built on the back of a massive, sleeping dragon”
  • Player Request: “We want to play sky pirates!”

Our Tutorial Spark

For The Ironhold Insurrection, our spark came from a thematic question:

“What happens when tradition becomes a prison?”

This led us to dwarves—a race often portrayed as hidebound traditionalists—and the idea of a society tearing itself apart over ancient customs that no longer serve them.

The Big Three

Once you have your spark, define your Big Three—the essential elements that make your campaign unique:

  1. Core Conflict: The fundamental tension driving the campaign
  2. Unique Element: What makes this different from generic fantasy (though honestly, there’s nothing wrong with generic fantasy—sometimes you just need to save a princess from a dragon!)
  3. Player Role: How the PCs fit into this world

Tutorial Example: The Big Three

Here’s how we developed the Big Three for The Ironhold Insurrection:

## The Ironhold Insurrection - Big Three

1. **Core Conflict**: The Hammer Crown (symbol of dwarven unity) is missing. 
   Five clan lords claim the throne, each with ancient grievances. Civil war 
   threatens to destroy the last great dwarven city.

2. **Unique Element**: The city's legendary forges are failing—weapons crack, 
   armor splits, tools break. Some blame the missing crown, others whisper of 
   sabotage, a few fear something worse rising from the sealed deeps.

3. **Player Role**: Outsiders hired by the desperate Merchants' Consortium to 
   find the truth before the city tears itself apart. Neutral parties who can 
   go where clan loyalists cannot.

The Starting Point

Define where and how the campaign begins:

Essential Elements:

  • Physical Location: Specific place where Session 1 occurs
  • Initial Situation: The immediate problem/opportunity
  • Party Connection: Why these PCs are together
  • First Adventure: 3-4 session mini-arc to establish tone

Tutorial Example: Starting Point

## Starting Point: The Neutral Ground

**Physical Location**: The Brass Monkey Tavern in Ironhold's Foreign Quarter—
the only district where clan law doesn't apply.

**Initial Situation**: The Merchants' Consortium offers 1,000gp each to 
investigate the failing forges. Simple diagnostic job—except their last team 
never returned.

**Party Connection**: All outsiders (non-dwarves or clanless dwarves) with 
skills the insular clans lack. Recruited specifically because you have no 
stake in local politics.

**First Adventure Arc** (3 sessions):
- Session 1: Investigate the Royal Forge, discover sabotage, fight forge-spirits
- Session 2: Track saboteurs through Undertown, uncover larger conspiracy
- Session 3: Prevent assassination at Clan Moot, earn trust/enemies

Creating Your Campaign Pitch

Your campaign pitch is a one-page document that sells the campaign to potential players. It should excite them while setting clear expectations.

Tutorial Example: Campaign Pitch

# The Ironhold Insurrection
*A D&D 5e Campaign of Politics, Mystery, and Ancient Threats*

## The Pitch
The last great dwarven city teeters on the edge of civil war. The Hammer Crown 
is missing, five clans claim the throne, and the legendary forges that built 
an empire are failing. Hired as neutral investigators, you must navigate deadly 
politics, ancient customs, and rising darkness to save Ironhold—or watch it 
burn.

## What Makes This Special
- **Political Intrigue**: Every clan has secrets, every alliance has a price
- **Mystery**: Why are the forges failing? Where is the crown? What stirs below?
- **Meaningful Choices**: Support a clan? Restore the old ways? Forge something new?
- **Grounded Stakes**: Save a city, not the world (at least at first...)

## The Tone
Think *The Departed* meets *The Mines of Moria*. Political thriller in a 
fantastic setting. Your choices matter, violence has consequences, and the 
"right" answer isn't always clear.

## What I Need From You
- Interest in political intrigue and investigation
- Comfort with moral ambiguity
- Regular attendance (weekly games)
- Character tied to the premise (outsider with useful skills)

## Session Details
- System: D&D 5e
- Starting Level: 3
- Sessions: Weekly, 4 hours
- Session Zero: [Date]

Phase 1 Artifacts

By the end of Week 1, you should have:

  1. Campaign Pitch (1 page): Elevator pitch for players
  2. Big Three Document (1 page): Core elements defined
  3. First Adventure Outline (1-2 pages): Your notes for the opening sessions
  4. Inspiration Board: Images, music, media that captures the feeling

Time Investment Breakdown

  • Day 1-2: Brainstorming and spark refinement (2 hours)
  • Day 3: Define Big Three (1 hour)
  • Day 4: Create starting point (1 hour)
  • Day 5: Write campaign pitch (1 hour)
  • Day 6: Outline first adventure (2 hours)
  • Day 7: Review and polish (1 hour)

Total Phase 1: 8 hours across a week

Common Pitfalls

“My spark is too vague”

Solution: Ask “What specific situation would showcase this idea?” Turn concepts into concrete conflicts.

Example: “I want to run a campaign about the nature of heroism.” That’s a philosophy paper, not a campaign. But “The greatest heroes of the realm have all mysteriously turned evil, and the only people left to save the world are the B-team cowards, con artists, and comic relief” - NOW you have players making concrete choices about heroism every session.

“I have too many ideas”

Solution: Save them in a backlog. Focus on ONE core conflict for now. You can add complexity later.

Example: “I want political intrigue AND cosmic horror AND dragon riders AND a murder mystery AND…” Stop. Pick ONE. Here’s why: You spend 6 hours crafting the perfect political subplot where the barmaid is secretly the exiled prince, complete with supporters, enemies, and escape routes. Session 1: Your murder hobos kill her for looking at them funny. There goes your political intrigue!

Start with dragon riders. That’s it. When players show interest in something (not murder it), THEN add complexity. They befriend a rider? Now you can add politics. They investigate weird sky phenomena? Cosmic horror unlocked. Let player interests guide which ideas come off your backlog. The rest stays safely in your notes, not wasted on unplayed content.

“It feels too similar to [existing media]”

Solution: That’s fine! Execution matters more than originality. Your players will make it unique.

Example: “My campaign feels too much like Lord of the Rings.” Sure, but remember that Tolkien’s cast was a bunch of well-meaning hobbits who wanted to save the world. Your players all decided to roll murder hobos who’ll probably try to keep the Ring and open a franchise. Same premise, VERY different story once your players get their hands on it!

Checklist: Ready for Phase 2?

Before moving to Session Zero preparation:

  • Campaign pitch excites you to run it
  • Big Three are clear and specific
  • Starting location is defined
  • First adventure sketched out
  • You can explain the campaign in 2 minutes
  • You know what kind of players would enjoy this

Next Step

With your spark refined into a clear vision, you’re ready for Phase 2: Session Zero Preparation, where we’ll create everything needed to bring players into your world.

Phase 2: Session Zero Preparation

Session Zero creates the bridge between your vision and your players’ expectations. This phase prepares you to run an effective Session Zero that aligns everyone and generates excitement.

The Session Zero Packet

Create a player-facing document containing everything they need to make informed decisions about characters and commitment.

Information Layering

Your Session Zero packet uses progressive disclosure:

  1. Starting Scenario (sent first): Immediate situation, where they are, recent events
  2. World Primer (sent with packet): Deeper context, history, factions, cultures
  3. Character Guidelines (sent with packet): How to build characters that fit

This layering prevents information overload while ensuring players have what they need when they need it.

Starting Scenario (1-2 pages)

This player-facing document sets the immediate situation and gets players thinking about their characters. Send it a week before Session Zero to generate excitement and give players time to percolate ideas.

Key Elements:

  • Where the characters are right now
  • Recent events they might have witnessed or participated in
  • The immediate opportunity (what brings them together)
  • Questions to consider for character creation

Tutorial Example: Starting Scenario

# Starting Scenario: The Ironhold Job

## Where You Are
You've been in Ironhold's Foreign Quarter for two weeks. The Brass Monkey 
Tavern has become your unofficial headquarters—it's where outsiders gather, 
deals are made, and news flows freely. The dwarven city around you feels 
tense, but in the Foreign Quarter, your kind are welcome enough.

## Recent Events
Over the past two weeks, several incidents have made you known in the Foreign 
Quarter. You might have been involved in one or more of these:

- **The Market Brawl**: Clan warriors fought in the streets. Some helped 
  evacuate civilians (including young Dain Brightstone), others looted abandoned 
  stalls, a few just watched and took notes.

- **The Brass Monkey Incident**: A rigged dice game nearly sparked a riot. 
  Whether you exposed the cheat, were the cheat, or helped calm things down, 
  people remember.

- **The Warehouse Job**: Someone tried organizing freelancers for a "simple" 
  theft from a Goldbeard warehouse. It went badly. Were you the mastermind, 
  hired muscle, or the one who walked away when it smelled wrong?

Whatever your involvement, you've noticed others who handle themselves well 
when things go sideways. The Foreign Quarter is small—competent outsiders 
recognize each other.

## The Opportunity
This morning, a well-dressed dwarf delivered messages to each of you:

*"Merchant Guildmaster Thora Brightstone requests your presence at the 
Brass Monkey Tavern tonight at sunset. Come prepared for immediate employment. 
Discretion required. Payment generous."*

You know Brightstone by reputation—she runs the Merchant Consortium, one of 
the few organizations in Ironhold that stays neutral in clan politics. If 
she's hiring outsiders, she needs something done that clan dwarves can't or 
won't do.

## What to Consider
- What brought you to Ironhold in the first place?
- What skills do you have that dwarven clans might lack?
- Which recent events were you involved in, and how?
- What would make you take a dangerous job in a foreign city?

## Practical Details
**Starting Situation**: Established in Foreign Quarter, known as competent
**Resources**: Standard starting equipment plus 50gp from recent work
**Meeting Point**: The Brass Monkey Tavern, tonight at sunset

The adventure begins when you decide what to do about Brightstone's invitation.

World Primer (2-3 pages)

The World Primer provides deeper context about the setting—information your characters would know or could easily learn. This builds on the Starting Scenario you’ve already read.

Key Elements:

  • Brief history (5-6 key events maximum)
  • Current situation (2-3 paragraphs)
  • Major factions/powers (3-4 with one-line descriptions)
  • Common knowledge (what everyone would know)
  • Mysteries (what no one knows—yet)

Tutorial Example: Ironhold World Primer

# Welcome to Ironhold
*Last of the Great Dwarven Cities*

## What Everyone Knows

### The City
Ironhold stands alone—the last dwarven city-state to survive the Dragon Wars. 
Built into Mount Karathak, it has endured for over 2,000 years through 
legendary craftsmanship and five great clan-forges that never cool.

Population: ~500,000 (60% dwarves, 20% humans, 10% halflings, 10% other)

### The Districts You'll Navigate
- **Foreign Quarter**: Where you're staying. Neutral ground, clan law doesn't apply
- **Market District**: Open during daylight, controlled by Goldbeard clan
- **Forge District**: Industrial heart, restricted access, dominated by Fireforge
- **Clan Quarters**: Five separate districts, each with own laws and customs
- **Royal Quarter**: Seat of (empty) power, heavily guarded by all clans
- **Undertown**: The depths where the poor and clanless dwell

### Recent History (Last Century)
- **100 years ago**: The Sealing—deepest mines permanently closed after "incident"
- **75 years ago**: Last undisputed High King dies, Crown passes peacefully
- **50 years ago**: Foreign Quarter opened to boost failing trade
- **20 years ago**: High King Thorek dies in "accidental" tunnel collapse
- **6 months ago**: Hammer Crown vanishes from the Royal Vault
- **3 months ago**: Forges begin producing brittle steel, clan blame begins

### The Five Great Clans
1. **Ironfoot** (Red banners, hammer sigil): Military tradition, controls the army. "Strength is sovereignty."
2. **Goldbeard** (Gold banners, coin sigil): Wealth and trade, owns the markets. "Gold flows like water."
3. **Stonehand** (Grey banners, tower sigil): Ancient builders, maintain infrastructure. "The stone remembers."
4. **Fireforge** (Orange banners, anvil sigil): Master smiths, run the great forges. "From fire, perfection."
5. **Deepguard** (Black banners, key sigil): Mystics and lorekeepers, guard sealed tunnels. "Some doors must not open."

### The Power Brokers
- **The Merchant Consortium**: Thora Brightstone leads the only neutral organization. They hired you.
- **The Craft Guilds**: Technically neutral but members have clan loyalties
- **The Undertown Syndicates**: Crime families that profit from chaos
- **The Temple of the Forge-Father**: Tries to maintain peace, increasingly ignored

### Current Crisis
Without the Hammer Crown, no clan can prove legitimate rule. Each has ancient 
claims:
- Ironfoot: "Might makes right, we have the army"
- Goldbeard: "We feed the city, we should lead it"
- Stonehand: "We built it, we know its bones"
- Fireforge: "The forges choose the worthy"
- Deepguard: "The Crown will return to the wise"

The failing forges turned simmering tensions into near-war. The Consortium 
maintains fragile neutrality, but their hiring of outsiders (you) shows 
desperation.

## What No One Knows (Yet)
- Where is the Hammer Crown?
- Why are the forges failing—sabotage or something worse?
- What really happened in the sealed deeps 100 years ago?
- Which clan (if any) orchestrated the King's death?
- Why hire outsiders for a simple forge diagnostic?

Character Creation Guidelines (1-2 pages)

Connect character options directly to your world while maintaining player agency.

Tutorial Example: Character Guidelines

# Creating Your Character

## Core Concept
You are an outsider with skills Ironhold desperately needs. The Merchants' 
Consortium hired you because you have no clan loyalties—you can go places 
and ask questions that locals cannot.

## Ancestry Options
**Common in Ironhold**:
- **Humans**: Traders, scholars, mercenaries from surface kingdoms
- **Halflings**: Merchants, spies, entertainers from the Foreign Quarter
- **Dwarves**: Must be clanless (exile, orphan, or foreigner)

**Uncommon but Accepted**:
- **Elves/Half-elves**: Scholars, mages, diplomats (viewed with suspicion)
- **Gnomes**: Inventors, alchemists, jewelers (useful oddities)

**Rare (Needs Strong Concept)**:
- Other ancestries exist but need explanation for why Ironhold tolerates you

## Class Considerations
**Highly Valued**: 
- Investigators (Rogues, Rangers, Monks)
- Problem-solvers (Wizards, Artificers) 
- Negotiators (Bards, Clerics of trade/knowledge)

**Viewed with Suspicion**:
- Divine casters of non-dwarven gods
- Warlocks (what's your patron's interest?)
- Druids (stone over nature here)

## Starting Bonds
Every character needs:
1. **Why you're in Ironhold**: Trade? Study? Refuge? Opportunity?
2. **What you offer**: Skill that clans lack or won't trust each other with
3. **What you want**: Beyond gold—what drives you?

## Party Connections
During Session Zero, we'll establish deeper connections between PCs. The Starting 
Scenario mentioned recent events—now we'll explore how those created relationships:

- **Professional**: "We're both in the information business. Competitors or occasional partners?"
- **Circumstantial**: "We were both at [event]. Did we work together or just notice each other's competence?"
- **Reputational**: "I've heard of you. What did I hear, and is it true?"
- **Transactional**: "You did a job for me / I owe you a favor / We both got burned by the same employer"

We'll create 2-3 connections per character during Session Zero.

Table Expectations (1 page)

Set clear boundaries and logistics before anyone invests time in characters.

Tutorial Example: Expectations Document

# Table Expectations & Logistics

## Game Style
- **Tone**: Political intrigue with action, not pure combat
- **Rating**: PG-13 (violence yes, graphic descriptions no)
- **Lethality**: Moderate (death possible but not arbitrary)
- **Roleplay**: Expected but not required to do voices

## Safety Tools
- **Lines**: [Topics we won't include at all]
- **Veils**: [Topics we'll "fade to black" on]
- **X-Card**: Anyone can tap/say "X" to skip content
- **Check-ins**: Regular temperature checks on comfort

## Scheduling
- **Day/Time**: Saturdays, 2-6 PM
- **Frequency**: Weekly (skip holiday weekends)
- **Attendance**: Life happens, but please give notice
- **Quorum**: Game runs with 3+ players present

## House Rules
- **Inspiration**: Earned for good RP, clever solutions, making others laugh
- **Drinking Potions**: Bonus action for yourself, action for others
- **Death Saves**: Rolled privately to increase tension
- **PvP**: Only with consent from all involved

## What I Provide
- All rules materials needed
- Maps and handouts  
- Snacks and water
- Dice if you need them

## What You Bring
- Your character sheet
- Note-taking supplies
- Enthusiasm and patience
- Snacks to share (optional)

Preparing for Player Input

Design systems to capture and integrate player ideas during Session Zero.

Character Integration Forms

Create a simple form for players to fill out during character creation:

Tutorial Example: Integration Form

# Character Quick-Build

**Character Name**: _________________
**Ancestry/Class**: _________________

## Three NPCs from Your Past
1. **Name**: _________ **Relationship**: _________ **Status**: _________
2. **Name**: _________ **Relationship**: _________ **Status**: _________  
3. **Name**: _________ **Relationship**: _________ **Status**: _________

## Character Details
**One Goal**: (What are you trying to achieve?)
_________________________________________________

**One Fear**: (What keeps you up at night?)
_________________________________________________

**One Secret**: (Known only to you and DM)
_________________________________________________

**One Connection**: (To another PC—fill out together)
_________________________________________________

## Optional World-Building
**A Place You've Been**: (Location in or around Ironhold)
_________________________________________________

**A Rumor You've Heard**: (May or may not be true)
_________________________________________________

**A Custom or Tradition**: (From your background)
_________________________________________________

Session Zero Agenda

Plan your Session Zero to balance efficiency with relationship building.

Tutorial Example: Session Zero Structure

# Session Zero Agenda (3 hours)

## Welcome & Tone Setting (15 minutes)
- Introductions around the table
- Share excitement about campaign
- Review safety tools
- Set collaborative tone

## World Overview (30 minutes)
- Present world primer (not read aloud!)
- Answer clarifying questions
- Show map of Ironhold
- Explain current crisis

## Character Creation (90 minutes)
- Individual concept discussion (10 min each)
- Mechanical build support
- Fill out integration forms
- Help with rules questions

## Party Formation (30 minutes)
- Establish character connections
- Determine group dynamics
- Create shared backstory element
- Decide on group name (optional)

## Expectations & Logistics (15 minutes)
- Review table expectations
- Confirm schedule
- Exchange contact info
- Set communication channels

## Preview & Questions (15 minutes)
- Tease first adventure
- Address any concerns
- Schedule Session 1
- Group photo (optional)

Phase 2 Artifacts

By Session Zero, prepare:

  1. Starting Scenario (1-2 pages) - Send 1 week before Session Zero
  2. Session Zero Packet (5-6 pages total) - Send 3-4 days before
    • World Primer (builds on Starting Scenario)
    • Character Guidelines
    • Table Expectations
  3. Character Integration Forms - Have ready at Session Zero
  4. Rules Reference Sheet - Have ready at Session Zero
  5. Campaign Calendar (if using)
  6. Name Lists (for improvisation)

Tutorial Example: Quick Rules Reference

# Ironhold Quick Rules

## Skill Checks DCs
- Easy: 10
- Moderate: 15
- Hard: 20
- Nearly Impossible: 25

## Social Standing
- Clan Dwarf: Advantage on Persuasion with same clan
- Clanless: Disadvantage on Persuasion with any clan
- Outsider: Neutral (but watched closely)

## City Districts
- Clan Quarters: Need permission or escort
- Foreign Quarter: Open to all
- Market District: Open daylight hours
- Forge District: Workers and permits only
- Royal Quarter: Invitation only

## Common Knowledge
- Clan colors and symbols (provided)
- Basic dwarvish phrases
- Market day schedules
- Public houses that serve non-dwarves

Time Investment

  • World primer writing: 2-3 hours (builds on existing Starting Scenario)
  • Character guidelines: 1-2 hours
  • Table expectations: 1 hour
  • Forms/worksheets: 1-2 hours
  • Materials preparation: 1-2 hours
  • Total Phase 2: 6-10 hours across a week

Common Pitfalls

“I need to detail everything”

Solution: Players only need enough to make characters. Save deep lore for play.

Example: “I’ve written 47 pages about the economic system of my world, including currency exchange rates between kingdoms.” Cool. Your players need to know: “Gold is gold, most people barter, and the Merchant Consortium controls trade.” Save those exchange rates for when the party inexplicably decides to become fantasy forex traders (which, knowing players, could actually happen).

“My world is too complex”

Solution: Focus on where characters start. Expand outward as needed.

Example: “Players need to understand the Seventeen Years’ War of Succession, the Five Heresies of Saint Balthazar, and the complete genealogy of three royal houses.” No, they need to know: “There’s a city. It has problems. You can help for money.” When the bard inevitably tries to seduce someone important, THEN you can drop that they’re the third cousin of the deposed prince. Until then, it’s just cognitive overload.

“What if players want something I haven’t thought of?”

Solution: Say “Yes, and…” or “Yes, but…” Never just “No.”

Example: Player: “I want to be a ninja in your medieval European setting!” You (internally): “But I don’t have ninjas!” You (externally): “Interesting! Tell me more about this shadow warrior from the Far East who’s traveled to our kingdom. What brought them here?” Boom. Now you have ninjas, they’re rare and exotic, and the player just gave you a plot hook about mysterious Eastern kingdoms. You’re welcome.

Checklist: Ready for Session Zero?

  • World primer explains current situation clearly
  • Character guidelines connect to campaign premise
  • Integration forms ready to capture player input
  • Agenda keeps session focused but flexible
  • Materials printed/digital access confirmed
  • Snacks and drinks planned

Next Step

With your packet prepared, you’re ready for Phase 3: Session Zero Execution, where collaborative magic happens.

Phase 3: Session Zero Execution

The actual Session Zero is where your campaign truly begins. This isn’t just character creation—it’s collaborative world-building that gives players investment from day one.

Setting the Tone

The first 15 minutes establish how your entire campaign will feel. Start strong.

Opening Ritual

Create a simple ritual that signals “we’re beginning something special”:

Tutorial Example: Opening Session Zero

“Welcome to Ironhold! Before we dive into character creation, let’s go around the table. Tell us your name, your experience with D&D, and one thing you’re excited about for this campaign. I’ll start—I’m [Name], I’ve been playing D&D for [X] years, and I’m excited to see how you all navigate the political intrigue I’ve prepared.”

[Light a candle, play theme music, or show campaign art]

“The last great dwarven city stands at a crossroads. Ancient traditions clash with urgent needs. The Hammer Crown is missing, the forges are failing, and five clans circle each other like wary wolves. Into this powder keg, you arrive—outsiders with skills the city needs but perspectives the clans fear. Your choices will determine whether Ironhold enters a new golden age or collapses into civil war.”

“But first, let’s talk about how we’ll play together safely and enjoyably…”

Establishing Safety

Make safety tools feel natural, not awkward:

“Before we create characters, let’s establish our boundaries. Think of this like setting the rating for our collaborative movie. I’m aiming for PG-13—violence happens but we don’t dwell on gore, romance can occur but we fade to black, and while the world has darkness, we’re ultimately telling a heroic story.”

“Does anyone have specific topics they’d like to avoid entirely? Remember, you can also message me privately later if you think of something.”

World Presentation

Don’t lecture—engage in conversation.

The Living Pitch

Instead of reading your world primer aloud, make it interactive:

Tutorial Example: Interactive World Building

DM: “So you’ve all read that Ironhold has five major clans. What I haven’t told you is that each clan has a different district with its own character. As outsiders, which district do you think your character would gravitate toward?”

Player 1: “My rogue would probably hang out in the Foreign Quarter.”

DM: “Perfect! Tell me—what’s one thing about the Foreign Quarter that would appeal to them?”

Player 1: “Probably lots of gambling dens where information flows freely?”

DM: “Absolutely! The Lucky Pickaxe is famous for its high-stakes dice games. What’s the buy-in?”

Player 1: “Has to be expensive enough to keep out riffraff… 50 gold?”

DM: “Done! The Lucky Pickaxe, 50 gold minimum buy-in. I’m writing that down.”

Managing Questions

Players will have questions that could derail worldbuilding. Handle them productively:

Types of Questions:

  • Clarification: “Are there gods in this world?” → Answer directly
  • Expansion: “What’s beyond Ironhold?” → “What do you hope is there?”
  • Challenge: “Why don’t they just make a new crown?” → “Excellent question—what do you think?”

Character Creation

This is where collaboration truly shines.

Individual Concepts

Spend 10 minutes with each player on their concept:

Tutorial Example: Character Concept Discussion

DM: “Sarah, tell me about your character concept.”

Sarah: “I’m thinking a human wizard who came to study dwarven runework.”

DM: “Excellent! Ironhold’s runework is legendary. Which clan do you think would have the most interesting runes?”

Sarah: “Probably Deepguard since they’re the mystics?”

DM: “Yes! Though they’re also the most secretive. How did your wizard gain enough trust to study with them?”

Sarah: “Maybe I helped solve a problem they couldn’t?”

DM: “I love it. What kind of problem would mystical dwarves struggle with?”

Sarah: “Something requiring human perspective… maybe translating texts from an ancient human empire?”

DM: “Perfect! You translated the Scrolls of Ashmark, earning grudging respect. The elder who sponsored you is named…?”

Sarah: “Master Runekeeper Thorek Greystone.”

DM: “Writing him down. He’ll definitely appear in game.”

Mechanical Support

Help with mechanics while maintaining narrative focus:

“For this campaign, I recommend builds that have both combat and social options. Pure damage dealers might feel left out during political scenes, while pure social builds might struggle in the dangerous Undertown. What role do you see your character filling in a diverse team?”

Integration Forms in Action

Watch how players fill out their forms and build on their ideas:

Tutorial Example: Live Integration

Player fills out “One Fear: Being buried alive”

DM: “Interesting fear for someone heading to an underground city. Did something happen in your past?”

Player: “Maybe I was trapped in a mine collapse as a child?”

DM: “That could work! Or perhaps you’ve had prophetic dreams about being buried?”

Player: “Ooh, prophetic dreams! That ties into my warlock patron too.”

DM: “Excellent! Let’s note that your patron sometimes sends visions through earth and stone…”

Party Formation

The most critical part—turning individual characters into a team.

Building Connections

Use structured exercises to create relationships:

Tutorial Example: Connection Web

DM: “Everyone grab a piece of string. We’re creating a physical web of connections. Sarah, you go first—toss the yarn to another player and tell us how your characters know each other.”

Sarah: “Marcus, my wizard hired your fighter as a bodyguard for the journey to Ironhold.” tosses yarn

Marcus: “That works! And I recommended Tom’s rogue when you needed someone who knew the city’s underside.” tosses yarn

Tom: “Right, and I owe Lisa’s cleric a debt from when she healed me after a job went bad.” tosses yarn

Lisa: “Which is why I called in that favor to get your help with this consortium job.” tosses yarn back to Sarah

DM: “Perfect! Look at this web—you’re already interconnected. Now let’s add one shared experience…”

Connection Mad Libs

If players struggle with connections, use these templates:

Professional Connections:

  • “I hired you as a [role] when I needed [service]”
  • “We both worked for [employer] on the [incident]”
  • “You’re my contact for [illegal/gray area activity]”
  • “I’m your [supplier/fence/information broker]”

Circumstantial Connections:

  • “You saved my life when [dangerous event]”
  • “We were both investigating [mystery] and kept running into each other”
  • “We’re the only two [profession/species/belief] in the Foreign Quarter”
  • “We both got cheated by [NPC name]”

Social Connections:

  • “We drink at the same [establishment]”
  • “You’re dating my [relation/friend]”
  • “We play cards together every [day]”
  • “You’re the only one who appreciates [niche interest]”

Obligation Connections:

  • “I owe you for [past favor]”
  • “We made a pact to [shared goal]”
  • “You know my secret about [background element]”
  • “We’re both avoiding [organization/person]”

The Unifying Element

Instead of forcing everyone into the same backstory, build on the Starting Scenario’s recent events.

Important: This is post-hoc justification. The party being hired together is already a foregone conclusion—you’re just explaining why it makes sense. Don’t stress about making it perfectly organic. “The Consortium needed diverse skills and you all seemed competent” is totally sufficient. Players just need enough logic to move forward, not an airtight explanation.

Tutorial Example: Building from Recent Events

DM: “The Consortium has already hired you as a team. Looking at the recent events—the Market Brawl, the Brass Monkey Incident, and the Warehouse Job—what caught their attention about each of you?”

Sarah: “My wizard was taking notes during the Market Brawl, analyzing clan tactics. They need someone who observes rather than reacts.”

Marcus: “I evacuated civilians, including the Brightstone kid. Showed I can protect assets without getting tangled in politics.”

Tom: “I was running the rigged dice game at the Brass Monkey. Maybe they need someone who understands the criminal element?”

Lisa: “I exposed the cheating diplomatically—no violence, no scene. They’d value someone who solves problems cleanly.”

DM: “Excellent. And the Warehouse Job?”

Tom: “I was the one who walked away when it smelled wrong. Good instincts.”

Sarah: “I heard about it afterwards and correctly predicted which clan would retaliate.”

DM: “Perfect. The Consortium saw diverse skills: observation, protection, street knowledge, diplomatic problem-solving, and good judgment. They need outsiders who can navigate Ironhold’s complexity. What convinced them you could work together?”

Player: “Maybe their recruiter saw us all drinking at the same table after these events, not killing each other despite being on different sides?”

DM: “Exactly. In a city tearing itself apart, professionals who can separate business from personal? That’s rare.”

Capturing Everything

During Session Zero, actively document:

The DM’s Session Zero Notes

Keep a simple tracking sheet:

# Session Zero Notes - Ironhold Insurrection

## Party Composition
- Sarah: Human Wizard (Sage), studied with Deepguard
- Marcus: Human Fighter (Soldier), bodyguard/mercenary
- Tom: Halfling Rogue (Criminal), knows the underside
- Lisa: Half-elf Cleric (Acolyte), serves god of commerce

## Created NPCs
- Master Runekeeper Thorek Greystone (Sarah's sponsor)
- "Lucky" Finn Copperwhistle (Tom's underworld contact)
- Merchant Guildmaster Thora Brightstone (hired party)
- Young Dain Brightstone (nephew they saved)

## Created Locations
- The Lucky Pickaxe (gambling den, 50gp buy-in)
- Sanctuary of Scales (Lisa's temple to commerce god)
- The Scroll & Hammer (inn where party stays)

## Party Name: "The Consortium's Hands"

## Established Facts
- Party saved civilians two weeks ago
- Ironfoot/Goldbeard tensions especially high
- Deepguard has human texts needing translation
- Foreign Quarter has underground fighting rings

## Player Interests
- Sarah: Magical mysteries, ancient knowledge
- Marcus: Protecting others, earning respect
- Tom: Underworld politics, making connections
- Lisa: Preventing violence, building bridges

## First Session Seeds
- Consortium job investigating forge failures
- Ironfoot/Goldbeard tension escalating
- Thorek Greystone needs Sarah's help
- Lucky Finn has information to sell

Common Session Zero Challenges

“My character is a loner”

Response: “That’s a great background! What happened recently that made you realize you need allies?”

Example: “Grimdark the Lone Wolf works alone, trusts no one, and needs nobody!” “Cool! So last week when six thugs cornered you in an alley, who saved you? Points to other player Was it their cleric? And now you owe them a life debt? Perfect! Grimdark still doesn’t LIKE working with others, but honor demands it. Reluctant cooperation is great roleplay.”

“I want to play an evil character”

Response: “Selfish works better than evil. What does your character want that requires cooperation?”

Example: “I want to play a serial killer who collects eyeballs!” “Let’s refocus that. You’re a necromancer obsessed with the secrets of death. You ‘collect’ knowledge by studying the last moments people see - which requires fresh subjects. Fortunately, this city is full of people trying to kill the party! You’re not murdering innocents; you’re conducting important research on people who were going to die anyway. For science. Evil-adjacent, but party-compatible.”

“I don’t know what to play”

Response: “What kind of scenes excite you? Combat? Investigation? Negotiation? Let’s build from there.”

Example: “I dunno, I just can’t decide…” “Okay, imagine this: The party faces the corrupt magistrate. Do you want to: A) Punch him in the face, B) Blackmail him with secrets you uncovered, or C) Convince him you’re on his side while plotting his downfall?” “Oh, definitely blackmail!” “Great! You want information power. Rogue? Wizard? Warlock with otherworldly knowledge? Let’s build from there.”

“Can I play a [unusual race/class]?”

Response: “Help me understand how that fits our premise of outsiders investigating forge failures.”

Example: “I want to play a full-blooded demon!” “Interesting! So in this dwarven city that’s already xenophobic… how does a demon walk the streets without causing riots?” “Um… disguise?” “Perfect! You’re posing as a tiefling - already distrusted but technically tolerated. What brought a demon to investigate failing forges? Are you worried the sealed deeps might release something that threatens YOUR plans? Now we’re cooking with hellfire!”

Ending Strong

Close Session Zero with energy and anticipation:

Tutorial Example: Session Zero Closing

DM: “Let’s recap what we’ve built together today. You are the Consortium’s Hands—a human wizard who earned Deepguard respect, a fighter seeking honorable employment, a halfling with underworld connections, and a cleric building bridges between communities.”

“Over the past weeks, you’ve each made your mark in the Foreign Quarter—some as heroes, some as opportunists, all as professionals. The Merchant Consortium took notice. More importantly, they noticed you can work together despite your… varied approaches to problem-solving.”

“Next session opens with you meeting Thora Brightstone at the Brass Monkey Tavern. She has a simple request: investigate why the Royal Forge produced a batch of brittle steel. Easy diagnostic work… except the last team she sent never returned.”

“Session 1 is next Saturday at 2 PM. Bring your character sheets, dice, and prepare for your first taste of Ironhold’s dangers. Any questions?”

“Oh, and one more thing—between now and then, think about this: What’s one thing your character notices about Ironhold that disturbs them? We’ll start there.”

Phase 3 Output

After Session Zero, you have:

  • Completed character sheets with full backstories
  • Party relationship web documented
  • 10-15 new NPCs created by players
  • 5-10 new locations added to your world
  • Clear party dynamic established
  • Player interest notes for future development
  • Shared anticipation for Session 1

Time Investment

  • Actual session: 3-4 hours
  • Post-session notes: 30 minutes
  • Total Phase 3: 3.5-4.5 hours

Success Indicators

You know Session Zero succeeded when:

  • Players talk excitedly after the session
  • Characters feel connected to each other
  • Everyone understands the campaign tone
  • Players added elements to your world
  • The group has inside jokes already
  • Everyone knows when Session 1 happens

Next Step

With characters created and party dynamics established, move to Phase 4: Integration and Launch to transform player input into your first adventure.

Phase 4: Integration and Launch

The final phase transforms Session Zero output into your first module. This module is special—intentionally short (2-3 sessions) to let you observe what excites your players before committing to longer storylines.

The First Module Is Different

Your first module serves as a testing ground:

  • Short: 2-3 sessions (6-10 hours of play)
  • Flexible: Multiple paths to explore player preferences
  • Observable: Built-in decision points reveal what players enjoy
  • Integrated: Weaves in Session Zero discoveries

Integration Principles

Before creating your module, identify how each character connects:

Character Hooks

For each PC, note:

  • Immediate Connection: Why this problem matters to them
  • Unique Advantage: What they bring that others don’t
  • Personal Stakes: What they gain/lose from success/failure
  • Growth Opportunity: How this challenges their beliefs

Player Contributions

From Session Zero, list:

  • NPCs Created: Who can appear in the module
  • Locations Mentioned: Where scenes might occur
  • Backstory Elements: What can become relevant
  • Stated Interests: What types of scenes to include

Your First Module Goals

Design your first module to:

  • Test Engagement: Include combat, investigation, and social scenes
  • Branch Early: Offer meaningful choices by session end
  • Feature Everyone: Each PC gets at least one spotlight moment
  • Plant Seeds: Introduce 3-4 potential future plots
  • Stay Flexible: Don’t commit to one campaign direction yet

Tutorial Example: Understanding Your Party

# Ironhold Insurrection - Character Types & Approaches

## What We Learned from Session Zero

Sarah (Wizard): 
- Scholarly type, studied with Deepguard
- Likely to investigate, research, analyze
- Prepare: Libraries, ancient texts, mystical clues

Tom (Rogue):
- Criminal background, knows the underworld
- Likely to sneak, steal, fight dirty
- Prepare: Chase scenes, shady contacts, back alleys

Marcus (Fighter):
- Military veteran, tactical thinker
- Likely to assess threats, plan assaults
- Prepare: Fortifications, battle maps, soldier NPCs

Lisa (Cleric):
- Serves commerce deity, diplomatic
- Likely to negotiate, build bridges
- Prepare: Social encounters, faction representatives

## Module Design Notes
- Include investigation AND action
- Offer both stealth AND direct approaches  
- Create problems solvable through combat OR diplomacy
- Let different backgrounds shine in different scenes

Creating Your First Module

With your character understanding complete, you’re ready to create your first module. The Module Creation chapter provides the complete workflow for building playable adventures.

Phase 4 Deliverables

By completing Phase 4’s integration planning, you have:

  • Character profiles showing likely approaches
  • Player contributions from Session Zero catalogued
  • Design notes for varied content types
  • Mental preparation for different play styles

Time Investment

  • Phase 4 (Integration): 2-3 hours
  • Module Creation: 8-12 hours (see next chapter)
  • Total for First Module: 10-15 hours

Your first module is intentionally short (2 sessions) to let you observe what works before committing to longer arcs.

Conclusion

Campaign Genesis transforms the overwhelming task of starting a campaign into a manageable, collaborative process. Phase 4 specifically turns Session Zero excitement into actual playable content that reveals what your unique group wants from the campaign.

The complete module you’ve created includes:

  • Scene-by-scene running guides
  • Stat blocks and NPC personalities
  • Player handouts and clues
  • Contingency plans for common problems
  • Branching paths based on player decisions

Your first module is intentionally short—a testing ground that lets you observe and adapt before committing to longer storylines. By the end of Module One, you’ll know:

  • What kind of stories excite your players
  • Which NPCs to develop further
  • What balance of combat/social/exploration works
  • Which themes resonate with the group

The genesis is complete. The real adventure begins now.

Welcome to your new campaign. May it bring years of unforgettable stories.

Module Creation Overview

Building Sustainable Story Arcs

Modules are the backbone of sustainable campaign management—self-contained story arcs spanning 2-6 sessions that advance your campaign while maintaining creative flexibility. Think of them as episodes in a television series: complete stories that contribute to the larger narrative without requiring the entire series to be written in advance.

This chapter introduces module concepts and structure. The following sub-chapters provide detailed workflows, templates, and examples for creating your own modules.

What Makes a Module?

A module is more than just connected sessions—it’s a complete dramatic structure with:

  • Clear Beginning: Inciting incident that launches the action
  • Rising Action: Escalating challenges and revelations
  • Climax: Decisive confrontation or choice
  • Resolution: Consequences and setup for future modules
  • Thematic Unity: Consistent tone and focus throughout

Why Your First Module Is Different

Your first module after Session Zero serves a special purpose: it’s a testing ground to discover what your specific group enjoys. Keep it short (2 sessions), include varied content types, and build in explicit decision points that reveal player preferences. This investment in observation pays off in all future modules.

Module Scope Guidelines

2-Session First Module (6-10 hours of play):

  • Single location with 2-3 areas
  • One clear problem with multiple approaches
  • 2-3 major NPCs plus supporting cast
  • Branching paths to test player preferences
  • Built-in observation points
  • Best for: Campaign launch, learning player preferences

3-Session Modules (12-16 hours of play):

  • Single location or tightly connected areas
  • One primary antagonist or challenge
  • 2-3 major NPCs
  • Linear progression with some branching
  • Best for: Introductory arcs, focused missions

4-Session Modules (16-20 hours of play):

  • Multiple related locations
  • Primary and secondary objectives
  • 4-6 major NPCs
  • Branching paths with convergent climax
  • Best for: Standard campaign arcs

5-6 Session Modules (20-30 hours of play):

  • Regional exploration or complex situations
  • Multiple antagonists or layered challenges
  • 8-10 major NPCs
  • Open structure with multiple solutions
  • Best for: Major campaign turning points

When to Create a New Module

Module creation triggers include:

Natural Triggers

  • Current Module Completion: Players achieved module objectives
  • Narrative Momentum: Story demands new direction
  • Player Goals: Character objectives require new content
  • Campaign Phase: Moving between campaign acts

Warning Signs

  • Aimless Sessions: Players unsure of objectives
  • DM Fatigue: Current content feels stale
  • Scattered Focus: Too many unrelated threads
  • Player Disengagement: Interest visibly waning

Emergency Triggers

  • Total Party Kill: Need reset with consequences
  • Major Derailment: Players completely off-track
  • Real-World Changes: Player availability shifts
  • Creative Block: Current direction isn’t working

How Modules Are Created

The Module Creation Process chapter details the systematic four-phase workflow for building modules:

  1. Concept Development - Transform ideas into actionable concepts
  2. Structure Design - Build the module’s skeleton
  3. Population - Fill with NPCs, locations, and encounters
  4. Pressure Testing - Ensure multiple paths to success

This process typically takes 8-12 hours for a standard 3-4 session module, or 6-8 hours for your first 2-session module.

Module Types

The Module Types and Templates chapter provides detailed templates for:

Core Module Types:

  • Mystery Modules - Investigation and revelation
  • Heist Modules - Planning and execution
  • Dungeon Crawl Modules - Location-based exploration
  • Political Intrigue Modules - Faction navigation
  • Exploration Modules - Journey into the unknown
  • Siege Modules - Defense against overwhelming odds
  • Survival/Horror Modules - Resource depletion and fear
  • War/Military Modules - Large-scale strategic conflicts
  • Rescue/Escort Modules - Protection and extraction
  • Base Building/Domain Modules - Long-term development

Each template includes pacing guides, critical design elements, and common pitfalls to avoid. The chapter also covers module interfaces, failure states, and adaptation guidelines.

Running Modules

The Running Your Module chapter covers:

  • Session management during modules
  • Handling derailments and adjustments
  • Transitioning between modules
  • Common challenges and solutions

Your First Module

The Your First Module chapter provides special guidance for creating your initial 2-session module after Session Zero, including:

  • Observation techniques
  • Integration requirements
  • Simplified structure
  • Analysis methods

Module Creation Summary

Creating effective modules requires:

  • Clear Structure: Beginning, middle, end with rising tension
  • Player Agency: Multiple paths to success
  • Campaign Integration: Connect to themes and backstories
  • Flexible Design: Accommodate different play styles
  • Reasonable Scope: Match content to session count

Time Investment:

  • First module: 6-8 hours for 2 sessions
  • Standard module: 8-12 hours for 3-4 sessions
  • Complex module: 12-16 hours for 5-6 sessions

Each hour of prep typically yields 2-3 hours of gameplay, improving with experience.

Next Steps

With modules as your campaign’s building blocks, the next chapter covers Session Management—the week-to-week process of bringing your modules to life at the table.

The Module Creation Process

Building a module follows a systematic four-phase process that transforms initial ideas into playable content. This workflow ensures you create complete, engaging adventures while respecting your prep time.

The Four-Phase Creation Process

Phase 1: Concept Development (2-3 hours)

Transform triggers into actionable module concepts.

Step 1: Define the Core

  • What’s the central conflict/mystery/challenge?
  • How does it connect to campaign themes?
  • What makes this module memorable?

Step 2: Establish Stakes

  • What happens if players succeed?
  • What happens if they fail?
  • What happens if they don’t engage?

Step 3: Create the Hook

  • How do players learn about this?
  • Why must they act now?
  • What makes it personally relevant?

Concept Template:

Module: [Title]
Core Concept: [One sentence summary]
Stakes: Success = [outcome], Failure = [outcome]
Hook: [How players get involved]
Theme: [What this module is really about]
Estimated Sessions: [2-6]

Phase 2: Structure Design (2-3 hours)

Build the module’s skeleton before adding flesh.

The Five-Room Dungeon Model

This is a structural framework (not literal rooms) that works for any module type:

  1. Entrance/Guardian: Initial challenge establishing tone
  2. Puzzle/Roleplay: Non-combat challenge requiring thought
  3. Setback/Twist: Complication changing the situation
  4. Climax/Boss: Major confrontation or decision
  5. Revelation/Reward: Payoff and future hooks

Think of it as a story structure - whether you’re running a mystery, heist, or dungeon crawl, you still want these dramatic beats. The Module Type Templates (Mystery, Heist, etc.) define WHAT kind of story you’re telling, while the Five-Room structure helps you pace HOW you tell it.

Session Breakdown Planning:

  • Session 1: Hook, introduction, initial challenge
  • Session 2-3: Investigation, development, complications
  • Session N-1: Rising action, point of no return
  • Session N: Climax, resolution, aftermath

Critical Path Mapping: Identify the minimum required elements:

  • Information players MUST discover
  • NPCs they MUST encounter
  • Locations they MUST visit
  • Choices they MUST make

Then add optional content around this spine.

Phase 3: Population (3-4 hours)

Fill your structure with engaging content.

NPC Creation Priorities:

  1. Quest Giver: Who presents the module?
  2. Primary Antagonist: Who opposes the players?
  3. Key Informant: Who provides crucial information?
  4. Wild Card: Who complicates matters?
  5. Supporting Cast: 2-3 minor but memorable NPCs

Location Development:

  • Hub Location: Where players return/resupply
  • Challenge Sites: Where conflicts occur
  • Information Sites: Where clues are found
  • Transition Spaces: How players move between

Encounter Design Mix:

  • 40% Combat (varied difficulty and type)
  • 30% Social (negotiations, investigations)
  • 20% Exploration (discovery, problem-solving)
  • 10% Wildcard (unique to your module)

Information Architecture:

  • Essential Clues: Multiple sources for each
  • Bonus Information: Rewards thorough investigation
  • Red Herrings: 1-2 maximum, must be interesting
  • Foreshadowing: Next module seeds

Phase 4: Pressure Testing (1-2 hours)

Ensure your module survives contact with players.

The Three-Path Test: Can players complete your module if they:

  1. Combat Path: Fight everything possible?
  2. Social Path: Talk their way through?
  3. Stealth Path: Avoid direct confrontation?

The Failure Cascade: What happens when:

  • Players miss crucial information?
  • Key NPCs die unexpectedly?
  • Players skip major locations?
  • Time pressure expires?

The Interest Check:

  • Does each session end with a cliffhanger?
  • Are there meaningful choices throughout?
  • Do player actions visibly matter?
  • Is the climax worth the buildup?

Creating Module Documents

Your final module package should include:

Session Notes (Your Reference Document)

  • Complete NPC stats and personalities
  • Location descriptions and maps
  • Encounter details and alternatives
  • Information/clue placement
  • Contingency plans

Quick Reference Sheets

  • Initiative tracker templates
  • NPC name/voice notes
  • Critical rule references
  • Improvisation tools

Time Management

Total Creation Time: 8-12 hours for a 3-4 session module

Time Breakdown:

  • Concept: 2-3 hours
  • Structure: 2-3 hours
  • Population: 3-4 hours
  • Pressure Testing: 1-2 hours
  • Documentation: 1-2 hours

Efficiency Tips:

  • Reuse NPC templates
  • Build location libraries
  • Create encounter formulas
  • Maintain clue patterns

Common Creation Pitfalls

Over-Planning

Symptom: 40+ pages for a 3-session module Solution: Focus on critical path + improvisation tools

Under-Planning

Symptom: “I’ll just improvise everything” Solution: Minimum viable structure prevents aimless sessions

Railroad Design

Symptom: One solution to every problem Solution: Three-path test ensures flexibility

Kitchen Sink Syndrome

Symptom: Every cool idea crammed into one module Solution: Save ideas for future modules

Module Creation Checklist

Before running your module, verify:

Concept

  • Clear central conflict
  • Meaningful stakes
  • Compelling hook
  • Thematic unity

Structure

  • Session breakdown planned
  • Critical path identified
  • Multiple solution paths
  • Satisfying climax

Content

  • NPCs statted and motivated
  • Locations described
  • Encounters balanced
  • Information redundancy

Testing

  • Three paths work
  • Failure states planned
  • Interest maintained
  • Documents complete

Module Creation Summary

The four-phase process transforms vague ideas into playable content:

  1. Concept (2-3 hours): Core conflict, stakes, hook
  2. Structure (2-3 hours): Session breakdown, critical path
  3. Population (3-4 hours): NPCs, locations, clues
  4. Testing (1-2 hours): Multiple paths, failure states

Total: 8-12 hours for a complete module

Remember: Theory becomes practice through repetition. Each module you create becomes easier as you develop your own templates and understand your players better.

Next Steps

With your module created, the next chapter covers specific templates for different module types, from mysteries to heists to political intrigue. The final chapters address running modules effectively and creating your first 2-session module after Session Zero.

Module Types and Templates

Different story types require different structures. This chapter provides tested templates for the most common module types, helping you match form to function.

Module Templates by Type

The Mystery Module

Structure: Investigation leading to revelation Sessions: 3-4 typically Key Elements:

  • Initial crime/disappearance/phenomenon
  • 3-4 suspects/theories with evidence
  • Red herring that’s still interesting
  • Twist that recontextualizes evidence
  • Confrontation with truth

Pacing:

  • Session 1: Discovery and initial investigation
  • Session 2: Deepening mystery, conflicting evidence
  • Session 3: Breakthrough and pursuit
  • Session 4: Confrontation and resolution

Critical Design Elements:

  • Three-Clue Rule: Every conclusion needs 3+ ways to reach it
  • Proactive NPCs: Suspects act on their own agendas
  • Timeline: Events progress without PC intervention
  • Fair Play: All clues available before reveal

Common Pitfalls:

  • Single solution path
  • Passive waiting for PCs to find clues
  • Twist that invalidates player work
  • Red herrings more interesting than truth

Five-Room Structure Example:

  1. Entrance: Crime scene discovery (body/theft/disappearance)
  2. Puzzle: Interviewing suspects, gathering contradictory stories
  3. Setback: Red herring leads to danger or key witness dies
  4. Climax: Confronting real culprit with evidence
  5. Revelation: Motive exposed, larger conspiracy hinted

The Heist Module

Structure: Planning and execution of complex theft/infiltration Sessions: 3-5 typically Key Elements:

  • Clear target with multiple defenses
  • Preparation phase for gathering intel
  • Execution with complications
  • Escape with consequences

Pacing:

  • Session 1: Job presentation and initial recon
  • Session 2: Deep reconnaissance and planning
  • Session 3-4: Execution with complications
  • Session 5: Escape and aftermath

Critical Design Elements:

  • Multiple Entry Points: Social, stealth, force, deception
  • Layered Defenses: Physical, magical, social, temporal
  • Meaningful Prep: Reconnaissance directly aids execution
  • Complication Clock: Things get worse over time

Common Pitfalls:

  • Over-planning paralysis
  • Single point of failure
  • No time pressure
  • Consequence-free success

Five-Room Structure Example:

  1. Entrance: Job offer meeting, target revealed
  2. Puzzle: Reconnaissance - learning defenses and routines
  3. Setback: Security changes or unexpected complication
  4. Climax: The heist itself - executing the plan
  5. Revelation: Double-cross or true nature of stolen item

The Dungeon Crawl Module

Structure: Location-based exploration with escalating danger Sessions: 2-4 typically Key Elements:

  • Compelling reason to enter
  • Environmental challenges
  • Guardian encounters
  • Treasure/objective
  • Escape complications

Pacing:

  • Session 1: Approach and initial levels
  • Session 2: Deeper challenges and resources
  • Session 3: Core objective/boss
  • Session 4: Escape with complications

Critical Design Elements:

  • Resource Management: Spell slots, HP, equipment matter
  • Environmental Storytelling: The dungeon tells a story
  • Multiple Objectives: Main goal plus optional rewards
  • Dynamic Response: Dungeon reacts to intrusion

Common Pitfalls:

  • Empty rooms and meaningless combat
  • No unifying theme
  • Static environment
  • Anticlimactic treasure

Five-Room Structure Example:

  1. Entrance: Guardian or sealed door requiring solution
  2. Puzzle: Ancient mechanism or riddle blocking progress
  3. Setback: Trap triggered or dungeon inhabitants alerted
  4. Climax: Boss monster or final chamber challenge
  5. Revelation: True purpose of dungeon or awakened threat

The Political Intrigue Module

Structure: Navigating competing factions toward resolution Sessions: 4-6 typically Key Elements:

  • 3+ factions with conflicting goals
  • Public event forcing interaction
  • Hidden agendas and secrets
  • Cascading consequences
  • Power shift resolution

Pacing:

  • Session 1: Introduction to factions and tensions
  • Session 2-3: Deepening involvement, choosing sides
  • Session 4: Crisis point forcing action
  • Session 5-6: Resolution and new order

Critical Design Elements:

  • Faction Clocks: Each group advances their agenda
  • No Perfect Solution: Every choice has downsides
  • Information Economy: Secrets are currency
  • Public vs Private: Different faces for different spaces

Common Pitfalls:

  • Clear good/evil factions
  • Passive factions waiting for PCs
  • No personal stakes
  • Consequence-free diplomacy

Five-Room Structure Example:

  1. Entrance: Invitation to court/summit/negotiation
  2. Puzzle: Navigating social etiquette and hidden agendas
  3. Setback: Assassination attempt or scandal erupts
  4. Climax: Critical vote or confrontation between factions
  5. Revelation: True puppet master or secret alliance exposed

The Exploration Module

Structure: Journey through unknown territory Sessions: 3-5 typically Key Elements:

  • Compelling destination
  • Environmental challenges
  • Discovery moments
  • Resource management
  • Changed return

Pacing:

  • Session 1: Departure and early challenges
  • Session 2-3: Deep wilderness/unknown
  • Session 4: Destination/discovery
  • Session 5: Return journey (changed)

Critical Design Elements:

  • Meaningful Navigation: Choices affect outcomes
  • Environmental Variety: Different terrains, different challenges
  • Discovery Rewards: Exploration yields benefits
  • Living World: Environment has its own agenda

Common Pitfalls:

  • Random encounter slog
  • Featureless wilderness
  • No meaningful choices
  • Identical return journey

Five-Room Structure Example:

  1. Entrance: Crossing threshold into unknown territory
  2. Puzzle: Navigating natural hazard or finding the path
  3. Setback: Lost, weather turns, or supplies compromised
  4. Climax: Reaching destination or major discovery
  5. Revelation: True nature of place or what it guards

The Siege Module

Structure: Defending against overwhelming force Sessions: 3-4 typically Key Elements:

  • Clear threat approaching
  • Limited time to prepare
  • Resources to manage
  • Multiple defensive challenges
  • Climactic assault

Pacing:

  • Session 1: Threat revealed, initial preparations
  • Session 2: Preparations and first probes
  • Session 3: Main assault
  • Session 4 (if used): Aftermath and counterattack

Critical Design Elements:

  • Preparation Matters: Player choices affect defense
  • Resource Scarcity: Every decision has trade-offs
  • Escalating Pressure: Each wave harder than last
  • Multiple Fronts: Can’t defend everywhere

Common Pitfalls:

  • Static defense grind
  • No meaningful preparation
  • Single solution strategy
  • Anticlimactic resolution

Five-Room Structure Example:

  1. Entrance: Enemy army spotted, time to prepare revealed
  2. Puzzle: Fortifying defenses with limited resources
  3. Setback: Spy discovered or defenses breached early
  4. Climax: Main assault on multiple fronts
  5. Revelation: True reason for siege or cost of victory

The Survival/Horror Module

Structure: Resource depletion against environmental or supernatural threats Sessions: 2-4 typically Key Elements:

  • Isolation from help/resources
  • Environmental attrition
  • Psychological pressure building
  • Dwindling supplies
  • Escape as primary victory

Pacing:

  • Session 1: Stranded/trapped, initial threat
  • Session 2: Resource depletion, escalating danger
  • Session 3: Desperation phase, hard choices
  • Session 4: Final push to escape/survive

Critical Design Elements:

  • Resource Tracking: Every item counts
  • Atmosphere Building: Fear through description
  • Death Spiral: Things get progressively worse
  • Hope Management: Glimmers keep players trying

Common Pitfalls:

  • Too bleak/hopeless
  • Resource tracking tedium
  • Predictable scares
  • No player agency

Five-Room Structure Example:

  1. Entrance: Disaster strikes, normal exit cut off
  2. Puzzle: Finding shelter/resources while avoiding threat
  3. Setback: Safe haven compromised or ally lost
  4. Climax: Desperate escape attempt or final stand
  5. Revelation: What caused this and if it can happen again

The War/Military Campaign Module

Structure: Large-scale conflict with strategic elements Sessions: 4-6 typically Key Elements:

  • Mass combat situations
  • Strategic planning
  • Supply line management
  • Morale as resource
  • Victory conditions beyond combat

Pacing:

  • Session 1: War council and initial deployment
  • Session 2-3: Early battles and adjustments
  • Session 4: Turning point battle
  • Session 5-6: Final push and aftermath

Critical Design Elements:

  • Scale Management: Personal stories within war
  • Strategic Choices: Battles affect campaign
  • War Exhaustion: Prolonged conflict costs
  • Multiple Fronts: Can’t be everywhere

Common Pitfalls:

  • Lost in logistics
  • PC agency diminished
  • Combat grind
  • Unclear objectives

Five-Room Structure Example:

  1. Entrance: War council assigns critical mission
  2. Puzzle: Gathering intelligence on enemy movements
  3. Setback: Ambush or betrayal within ranks
  4. Climax: Key battle that turns the tide
  5. Revelation: War’s true cost or hidden enemy revealed

The Rescue/Escort Module

Structure: Protecting or retrieving vulnerable NPCs Sessions: 2-4 typically Key Elements:

  • Vulnerable charge(s)
  • Mobile challenges
  • Time pressure
  • Moral dilemmas
  • Safe delivery objective

Pacing:

  • Session 1: Acquire charge, initial dangers
  • Session 2: Journey complications
  • Session 3: Major obstacle/betrayal
  • Session 4: Final push to safety

Critical Design Elements:

  • NPC Personality: Make them worth saving
  • Mobile Defense: Different from static protection
  • Resource Drain: Protecting others costs
  • Emotional Stakes: Beyond mechanical success

Common Pitfalls:

  • Annoying NPCs
  • Escort as burden only
  • No emotional investment
  • Static challenges

Five-Room Structure Example:

  1. Entrance: Urgent plea or kidnapping witnessed
  2. Puzzle: Tracking captors or navigating to prison
  3. Setback: Hostage moved or escort ambushed
  4. Climax: Rescue attempt or final leg of journey
  5. Revelation: Why they were taken or who they really are

The Base Building/Domain Module

Structure: Establishing and developing a stronghold or settlement Sessions: 5+ (often campaign-spanning) Key Elements:

  • Location selection/acquisition
  • Resource gathering
  • Defense planning
  • Political relationships
  • Growth milestones

Pacing:

  • Sessions 1-2: Site acquisition and clearing
  • Sessions 3-4: Initial construction and challenges
  • Sessions 5-6: First major threat
  • Ongoing: Expansion and development

Critical Design Elements:

  • Investment Mechanics: Progress feels earned
  • Threat Scaling: Challenges grow with base
  • NPC Integration: Settlement comes alive
  • Multiple Paths: Military, economic, diplomatic

Common Pitfalls:

  • Bookkeeping overload
  • Disconnected from adventure
  • No meaningful threats
  • Progress too slow/fast

Five-Room Structure Example:

  1. Entrance: Discovering or claiming the site
  2. Puzzle: Securing resources and skilled workers
  3. Setback: Sabotage, raids, or natural disaster
  4. Climax: Major threat to nascent settlement
  5. Revelation: Ancient claim or strategic importance revealed

Choosing Your Module Type

Match Type to Campaign Needs

Use Mystery When:

  • Players enjoy investigation
  • You need to reveal campaign information
  • Changing pace from combat-heavy arc
  • Building paranoia/suspense

Use Heist When:

  • Players need specific item/information
  • Emphasizing planning and teamwork
  • Introducing new faction/location
  • Rewarding clever thinking

Use Dungeon Crawl When:

  • Players want classic adventure
  • Testing resource management
  • Hiding important campaign elements
  • Providing clear win conditions

Use Political Intrigue When:

  • Campaign reaches faction conflicts
  • Players enjoy social challenges
  • Setting up long-term consequences
  • Exploring moral complexity

Use Exploration When:

  • Expanding campaign geography
  • Emphasizing wonder/discovery
  • Building survival tension
  • Transitioning between regions

Use Siege When:

  • Players have something to protect
  • Testing resource management
  • Building desperation/heroism
  • Creating time pressure

Use Survival/Horror When:

  • Emphasizing vulnerability
  • Building tension and fear
  • Testing resource conservation
  • Changing tone to darker

Use War/Military When:

  • Campaign reaches large conflicts
  • Players command forces
  • Strategic gameplay desired
  • Epic scale needed

Use Rescue/Escort When:

  • Creating emotional investment
  • Adding protection challenge
  • Building NPC relationships
  • Time pressure without combat focus

Use Base Building/Domain When:

  • Players want permanent impact
  • Transitioning to leadership
  • Long-term campaign investment
  • Combining multiple play styles

Hybrid Modules

Most modules benefit from mixing types:

Common Combinations:

  • Mystery + Heist: Investigate to find target, then steal evidence
  • Dungeon + Politics: Ancient ruins hold political leverage
  • Exploration + Mystery: Journey reveals larger conspiracy
  • Heist + Dungeon: Infiltrate to reach dungeon entrance
  • Politics + Exploration: Navigate hostile territory diplomatically

New Type Combinations:

  • Survival + Exploration: Lost in hostile wilderness
  • Rescue + Heist: Extract prisoner from fortress
  • War + Politics: Navigate alliances during conflict
  • Base Building + Siege: Establish then defend position
  • Horror + Mystery: Investigate supernatural threat
  • Escort + War: Civilians through battlefield
  • Domain + Politics: Rule requires diplomacy

Module Type by Campaign Phase

Early Campaign (Levels 1-5):

  • Dungeon Crawls (clear objectives)
  • Simple Mysteries (local scope)
  • Exploration (establishing geography)
  • Rescue Missions (build empathy)
  • Survival Scenarios (teach resource management)

Mid Campaign (Levels 6-10):

  • Complex Mysteries (campaign connections)
  • Heists (specific objectives)
  • Political Intrigue (faction introduction)
  • War Campaigns (command small forces)
  • Base Building (establish presence)
  • Horror Modules (raise stakes)

Late Campaign (Levels 11+):

  • Grand Heists (impossible targets)
  • Political Intrigue (world-shaking)
  • War Campaigns (massive conflicts)
  • Domain Management (rule territories)
  • Epic Sieges (defend kingdoms)
  • Hybrid Modules (all skills needed)

Quick-Start Templates

The Three-Session Mystery

Session 1: The Crime
- Opening: Discovery of crime/problem
- Investigation: 3 initial suspects/leads
- Cliffhanger: First suspect murdered

Session 2: The Web
- Opening: Deal with murder fallout
- Investigation: Deeper connections revealed
- Cliffhanger: PCs framed/threatened

Session 3: The Truth  
- Opening: Escape/clear names
- Confrontation: Real villain revealed
- Resolution: Justice served/escaped

The Four-Session Heist

Session 1: The Job
- Opening: Employer presentation
- Planning: Target overview
- Preparation: Initial reconnaissance

Session 2: The Plan
- Intel: Deep reconnaissance
- Resources: Acquiring tools/allies
- Finalization: Choosing approach

Session 3: The Heist
- Infiltration: Entering target
- Complications: Plans go wrong
- Adaptation: New solutions

Session 4: The Escape
- Acquisition: Securing objective
- Pursuit: Escaping consequences
- Resolution: Payment/betrayal

The Two-Session Dungeon

Session 1: The Delve
- Hook: Reason to enter
- Exploration: Upper levels
- Discovery: Hints at deeper threat
- Resource Drain: Test management

Session 2: The Heart
- Descent: Reaching core
- Confrontation: Boss/objective
- Revelation: Larger implications
- Escape: Complications arising

The Three-Session Survival

Session 1: The Catastrophe
- Opening: Disaster strikes
- Inventory: What resources remain
- First Night: Initial threats
- Realization: No easy escape

Session 2: The Struggle
- Rationing: Hard choices
- Exploration: Seeking escape
- Setback: Route blocked/failed
- Desperation: New dangers

Session 3: The Escape
- Final Push: Last resources
- Sacrifice: What's left behind
- Resolution: Freedom or doom
- Aftermath: Changed forever

The Two-Session Rescue

Session 1: The Taking
- Discovery: Someone missing
- Investigation: Trail and obstacles
- Pursuit: Following leads
- Confrontation: Finding captors

Session 2: The Escape
- Infiltration: Reaching prisoner
- Complications: Unexpected problems
- Flight: Getting out alive
- Resolution: Safe or lost

Customizing Templates

Every template should be adjusted for:

Your Players

  • Combat lovers: Add more encounters
  • Roleplayers: Expand NPC interactions
  • Puzzle solvers: Include more mysteries
  • Explorers: Add discoverable secrets

Your Campaign

  • Tie to ongoing plots
  • Use established NPCs
  • Reference past events
  • Foreshadow future arcs

Your Constraints

  • Session length varies: Adjust pacing
  • Player absence: Critical path flexibility
  • Prep time limited: Focus on essentials
  • Virtual/In-person: Emphasize strengths

Module Interface Patterns

Connection Points Between Modules

Each module should define clear interface patterns for seamless campaign flow:

Entry Conditions:

  • Party State: Level range, resource expectations
  • Knowledge Requirements: What they should know
  • Relationship Status: NPC/faction standings
  • Geographic Position: Where they should be
  • Emotional Temperature: Expected tone/mood

Exit Conditions:

  • Achievement State: What they accomplished
  • Resource Changes: Gains and losses
  • Knowledge Gained: New information acquired
  • Relationship Changes: Altered standings
  • Geographic Changes: New locations accessible
  • Narrative Hooks: 2-3 threads for next module

Handoff Mechanisms

Direct Handoff (Same Session):

  • Cliffhanger ending leads immediately to next module
  • No downtime between modules
  • Maintains momentum and urgency
  • Entry: High tension | Exit: Higher tension

Bridged Handoff (Between Sessions):

  • Downtime activities connect modules
  • Players make preparations
  • Background events develop
  • Entry: Resolution | Exit: New beginning

Delayed Handoff (Multiple Sessions):

  • Other modules intervene
  • Long-term consequences develop
  • Callback to previous events
  • Entry: Completed arc | Exit: Ripple effects

Module Transition Templates

From Mystery → Heist:

Exit Mystery: Villain identified but protected
Bridge: Planning to steal evidence
Enter Heist: Target fortified, time pressure

From Dungeon → Survival:

Exit Dungeon: Collapse during escape
Bridge: Trapped with dwindling resources
Enter Survival: Find new way out

From Politics → War:

Exit Politics: Negotiations failed
Bridge: Factions mobilize forces
Enter War: First battles begin

From Rescue → Base Building:

Exit Rescue: Refugees need home
Bridge: Search for safe location
Enter Base: Establish settlement

Framework Elements

Pacing Variants

One-Shot Conversions: Each module type can compress to single session:

  • Focus on single decisive scene
  • Pre-generate situation in media res
  • Skip preparation phases
  • Accelerate to climax
  • Provide epilogue narration

Extended Campaign Versions: Each module type can expand indefinitely:

  • Add subplots and complications
  • Deepen NPC relationships
  • Layer multiple challenges
  • Include downtime scenes
  • Build toward epic conclusions

Emergency Compression: When time runs short:

  • Jump to decision points
  • Summarize transitions
  • Combine encounters
  • Accelerate timeline
  • Resolve through narration

Failure States

Failure Forward Design:

  • Mystery: Wrong accusation creates new enemies
  • Heist: Capture leads to prison break module
  • Dungeon: Retreat leaves threat growing
  • Politics: Bad deals haunt future modules
  • Exploration: Lost leads to survival module
  • Siege: Defeat forces desperate escape
  • Survival: Death isn’t end (rescue possible)
  • War: Lost battles change campaign map
  • Rescue: Failure creates revenge motivation
  • Base: Destruction scatters resources

Partial Success Framework:

  • Primary objective failed, secondary gained
  • Victory with severe costs
  • Success but wrong target
  • Win battle, lose war
  • Saved some, lost others

Player Agency Patterns

Railroad Prevention:

  • Multiple paths to every objective
  • “No” leads to complications, not walls
  • Player ideas become canonical
  • Quantum elements adjust to choices
  • Failure creates new opportunities

Decision Point Architecture:

  • Minimum 3 meaningful choices per session
  • Choices affect immediate and future scenes
  • Telegraph decision importance
  • Show consequences quickly
  • Build on previous choices

Player-Driven Module Selection:

  • End modules with 3+ hooks
  • Let players choose next type
  • Respond to stated interests
  • Follow character goals
  • React to player theories

Resource Economy Design

Module Resource Patterns:

  • Mystery: Information rich, combat light
  • Heist: Preparation heavy, execution focused
  • Dungeon: Attrition-based depletion
  • Politics: Reputation as currency
  • Exploration: Supply management critical
  • Siege: Everything scarce
  • Survival: Constant drain
  • War: Mass resource logistics
  • Rescue: Time as primary resource
  • Base: Investment and return

Cross-Module Planning:

  • Track resources between modules
  • Some modules drain, others restore
  • Create resource storylines
  • Balance scarcity and abundance
  • Reward conservation

Enhancement Patterns

Module Combination Matrix

Highly Compatible (Flow naturally together):

  • Mystery → Heist (investigate then steal)
  • Exploration → Survival (get lost)
  • Politics → War (diplomacy fails)
  • Rescue → Escort (extract then protect)
  • Base Building → Siege (create then defend)
  • Dungeon → Horror (delve too deep)

Interesting Tensions (Create dramatic shifts):

  • War → Politics (violence to diplomacy)
  • Survival → Base Building (scarcity to growth)
  • Heist → Rescue (theft becomes liberation)
  • Horror → Mystery (fear to understanding)
  • Siege → Exploration (defense to expansion)

Challenging Combinations (Require careful bridging):

  • Base Building → Heist (stability to crime)
  • War → Mystery (macro to micro focus)
  • Survival → Politics (desperation to negotiation)
  • Dungeon → War (personal to epic scale)

Tone Variants

Each module type can support different emotional registers:

Heroic Fantasy:

  • Mysteries have clear justice
  • Heists target tyrants
  • Dungeons hold ancient evils
  • Wars defend the innocent
  • Survival proves heroism

Grimdark:

  • Mysteries reveal corruption
  • Heists involve moral compromise
  • Dungeons corrupt explorers
  • Wars have no winners
  • Survival demands sacrifice

Comedy/Lighthearted:

  • Mysteries involve silly misunderstandings
  • Heists become capers
  • Dungeons have pun traps
  • Politics involve absurd bureaucracy
  • Escorts protect comic relief

Horror-Tinged:

  • Every type emphasizes dread
  • Unknown threats lurk
  • Victories feel temporary
  • Costs mount psychologically
  • Hope remains fragile

Scaling Guidelines

Party Size Adjustments:

  • 3 Players: Reduce encounter difficulty 25%, add NPC ally
  • 4 Players: Run as written
  • 5 Players: Add 25% more enemies or HP
  • 6+ Players: Add legendary actions, split objectives

Power Level Modifications:

  • Low Magic: Reduce supernatural elements
  • High Magic: Add magical complications
  • Gritty Realism: Emphasize resource tracking
  • Superheroic: Increase scope and stakes

Complexity Dials:

  • Simple: Single objective, clear path
  • Standard: Multiple approaches, some complexity
  • Complex: Layered objectives, many variables
  • Labyrinthine: Wheels within wheels

Virtual Table Adaptations

Best for Online Play:

  • Mystery: Easy to share clues digitally
  • Political Intrigue: Private messaging enhances
  • Base Building: Shared documents work well
  • Heist: Digital planning tools help

Challenging Online:

  • Dungeon Crawl: Mapping can be difficult
  • War Campaigns: Large battles need tools
  • Survival Horror: Atmosphere harder to build

Online Enhancements:

  • Use breakout rooms for split parties
  • Digital handouts for clues/maps
  • Mood music/soundscapes more accessible
  • Shared planning documents
  • Asynchronous downtime activities

Module Quality Checklist

Before running any module, verify:

Structure:

  • Clear beginning, middle, end
  • Multiple paths to success
  • Meaningful decision points
  • Appropriate scope for sessions

Content:

  • Varied encounter types
  • Interesting NPCs with motives
  • Environmental storytelling
  • Rewards match effort

Flexibility:

  • Handles player creativity
  • Adjusts for party composition
  • Scales to time available
  • Connects to campaign

Engagement:

  • Every player has spotlight
  • Pacing varies appropriately
  • Stakes feel meaningful
  • Fun trumps everything

Conclusion

These module types and templates provide frameworks, not prescriptions. The best modules often blend elements from multiple types, adjusted for your specific players and campaign. Use these patterns as starting points, then customize ruthlessly based on what you learn about your group.

Remember: The perfect module is one that engages your specific players in your unique campaign. These templates help you build that faster, not replace your creativity.

Next Steps

With templates chosen and customized, the next chapter covers running modules effectively—managing pacing, handling derailments, and transitioning between modules smoothly.

Running Your Module

Creating a module is only half the battle—running it effectively requires different skills. This chapter covers session management during modules, handling the unexpected, and smoothly transitioning between modules.

Session Management During Modules

Pre-Session Rituals

15 Minutes Before Start:

  • Review session outline and key NPCs
  • Check previous session notes
  • Prepare initiative trackers
  • Queue music/ambiance
  • Set out maps/handouts

Session Opening Routine:

  1. Recap previous session (or ask a player to)
  2. Address any between-session actions
  3. Set the scene with strong imagery
  4. Ask a leading question to engage players
  5. Begin with action or decision

Pacing Within Sessions

The Heartbeat Method:

  • Action (combat, chase, intense negotiation)
  • Breathing Room (exploration, planning, roleplay)
  • Action (different type than before)
  • Reflection (process events, make plans)
  • Cliffhanger (set up next session)

Time Management Tools:

  • Set phone timer for scene transitions
  • Use “camera cuts” to skip dead time
  • “Montage” repetitive activities
  • Call for breaks at natural stopping points
  • End on time with cliffhanger

Reading the Room:

  • Energy dropping? Add immediate threat
  • Too much combat? Introduce social challenge
  • Players confused? NPC provides clarity
  • Rushing through? Add complication
  • Overthinking? Force time pressure

Mid-Module Adjustments

After Each Session, Evaluate:

  • Are players engaged with the main plot?
  • Which NPCs resonate most?
  • What unexpected directions emerged?
  • Is pacing too fast/slow?
  • Do stakes still feel meaningful?

Common Adjustments:

Module Too Short:

  • Add subplot from player backstory
  • Complicate existing challenge
  • Introduce rival party
  • Expand travel/exploration
  • Deepen NPC relationships

Module Too Long:

  • Cut planned encounters
  • Combine multiple NPCs
  • Accelerate timeline
  • Skip to dramatic moments
  • Resolve subplots quickly

Players Off-Track:

  • Move important content to where they’re going
  • Have NPCs seek them out
  • Create consequences that redirect
  • Embrace new direction if interesting
  • Use cliffhangers to refocus

Managing Module Resources

Information Flow:

  • Track what players know vs. assume
  • Note which clues they’ve found
  • Mark which NPCs they’ve met
  • Record their current theories
  • Plan next information reveals

NPC Management:

  • Keep voice/mannerism notes handy
  • Track relationship changes
  • Note promises made/broken
  • Update NPC goals based on events
  • Plan NPC actions between sessions

Continuity Tracking:

  • Maintain timeline of events
  • Note resource expenditure
  • Track faction reputation
  • Record environment changes
  • Update maps as explored

Handling Derailments

Types of Derailments

The Murder Hobo: Observable Signs:

  • “I attack the questgiver”
  • Violence as first solution to every problem
  • Killing NPCs mid-conversation
  • No interest in NPC names or motivations
  • “Are there any witnesses?”

Solution: Information has backups, consequences follow

The Speedrun: Observable Signs:

  • “We fly directly to the boss”
  • Skipping all investigation/preparation
  • Meta-gaming with player knowledge
  • “Can we just roll to solve this?”
  • Avoiding all optional content

Solution: Complications arise from shortcuts

The Turtle: Observable Signs:

  • 2-hour planning for 10-minute task
  • Analysis paralysis over simple decisions
  • “But what if…” spirals
  • Drawing elaborate plans nobody follows
  • Sessions ending with no progress

Solution: World moves without them

The Revolt: Observable Signs:

  • “Why would we help them?”
  • Active opposition to every plot hook
  • Trying to join the villain
  • “This is stupid” comments
  • Complete disengagement from premise

Solution: Find what they want instead

Derailment Recovery Tools

The Quantum Ogre: Important content appears wherever players go, reskinned to fit

The Consequence Cascade: Their choices create new problems requiring attention

The Rival Party: Other adventurers pursue missed opportunities

The Timeline Pressure: Events happen with or without PC involvement

The Mirror Match: Their approach creates opposite reaction

When to Abandon Module

Clear Signals with Observable Signs:

Consistent Player Disengagement:

  • Phones out more than dice
  • “Are we almost done?” every session
  • Cancellations increasing
  • No between-session discussion
  • Forgetting major plot points

Fundamental Premise Rejection:

  • “I don’t care about saving the town”
  • Actively working against module goals
  • Creating their own unrelated objectives
  • “Can we do something else instead?”
  • Zero investment in NPCs or stakes

Real-World Circumstances Changed:

  • Lost half the players
  • Session length cut dramatically
  • Tone mismatch with group mood
  • External stress affecting game
  • Schedule no longer works

Better Opportunity Emerged:

  • Players obsessed with throwaway detail
  • Side quest generating more excitement
  • Character backstory taking center stage
  • “Can we explore that instead?”
  • Natural story evolution demands it

Module No Longer Serves Campaign:

  • Original purpose obsolete
  • Stakes resolved differently
  • Characters outgrew challenges
  • Tone shifted dramatically
  • Better conclusion available

Graceful Exits:

  • Resolve current scene/session
  • Summarize remaining events
  • Extract useful elements
  • Transition to player interests
  • Mine module for future content

Module Transitions

Ending Strong

Final Session Elements:

  • Climactic confrontation/resolution
  • Immediate consequences shown
  • Loose ends addressed (or noted)
  • Rewards distributed
  • Future hooks planted

The Debrief:

  • What worked well?
  • Favorite moments?
  • Unresolved interests?
  • Character development?
  • Campaign direction preferences?

Between Modules

Downtime Activities:

  • Let players pursue personal goals
  • Advance background events
  • Heal wounds/restore resources
  • Develop relationships
  • Foreshadow next module

Campaign Housekeeping:

  • Update character sheets
  • Resolve advancement
  • Distribute rewards
  • Note reputation changes
  • Plan next arc

Connecting Modules

Direct Connection:

  • Cliffhanger leads immediately to next module
  • Same antagonist in new situation
  • Consequences require immediate action

Indirect Connection:

  • Time passes between modules
  • New threat emerges from victory
  • Different location but connected theme

Anthology Connection:

  • Modules share world but not direct plot
  • Recurring NPCs provide continuity
  • Themes echo across adventures

Common Running Challenges

Challenge: Split Party

Observable Signs:

  • Half the table sitting silent while others play
  • Players pulling out phones during other group’s scenes
  • “Are we done yet?” body language
  • Scenes taking 20+ minutes per group
  • Players forgetting what the other group is doing

Solutions:

  • Run concurrent short scenes (5-10 minutes max)
  • Create external reuniting force
  • Use cliffhangers to build tension
  • Have NPCs coordinate reunion
  • Let split create interesting complications

Challenge: Rules Arguments

Observable Signs:

  • Same rule discussion lasting >5 minutes
  • Multiple players looking up rules on phones
  • Heated voices or defensive postures
  • Other players disengaging from the argument
  • “But that’s not realistic!” or “The book says…”

Solutions:

  • Make quick ruling, research later
  • Let player make case (30 seconds)
  • Roll for edge cases
  • Note for between-session resolution
  • Keep game moving forward

Challenge: Absent Players

Observable Signs:

  • Last-minute “can’t make it” texts
  • Regular pattern of specific player missing
  • Other players asking “Where’s [Name]?”
  • Story momentum stalling without key character
  • Combat balance thrown off

Solutions:

  • NPC their character minimally
  • Character has other mission
  • Mysterious disappearance (if dramatic)
  • Other player runs them in combat
  • Adjust difficulty accordingly

Challenge: Energy Mismatch

Observable Signs:

  • One player super excited while others look tired
  • Joking/sidebar conversations during serious scenes
  • Players wanting different scene types (“More combat!” vs “More roleplay!”)
  • Physical restlessness (getting up frequently, fidgeting)
  • Mismatched expectations (“I thought this was a silly game”)

Solutions:

  • Call break to reset
  • Switch activity type
  • Engage different players
  • Acknowledge and address directly
  • Consider early session end

Module Success Metrics

Immediate Indicators

  • Players discussing events after session
  • Asking when next session is
  • Making plans between sessions
  • Referencing module events later
  • Character growth evident

Long-term Indicators

  • Module NPCs become recurring characters
  • Events referenced sessions later
  • Changed player behavior patterns
  • New campaign directions emerged
  • Stories told months later

Learning from Each Module

Post-Module Questions:

  • What prep was most/least useful?
  • Which improvisations worked?
  • What would you change?
  • What will you reuse?
  • How did it serve the campaign?

Running Your First Module

Special considerations for your first 2-session module after Session Zero:

Session 1 Focus

  • Reestablish tone and expectations
  • Give everyone spotlight time
  • Include varied activity types
  • End with clear decision point
  • Note player preferences

Session 2 Focus

  • Follow through on decision
  • Escalate to climax quickly
  • Resolve initial storyline
  • Plant multiple future hooks
  • Debrief player interests

Information Gathering

  • Which NPCs did they remember?
  • What activities energized them?
  • Which rules gave them trouble?
  • What surprised you?
  • Where do they want to go?

Module Running Checklist

Pre-Session:

  • Review notes and NPCs
  • Prepare physical materials
  • Check player availability
  • Set personal session goals

During Session:

  • Strong opening
  • Varied activity types
  • Track information flow
  • Note player interests
  • End with cliffhanger

Post-Session:

  • Update notes immediately
  • Plan next session opening
  • Address rules questions
  • Communicate with players

Module Completion:

  • Gather player feedback
  • Extract reusable elements
  • Note lessons learned
  • Plan next module

Conclusion

Running modules is a skill that improves with practice. Each module teaches you more about your players, your style, and your campaign. The key is maintaining flexibility while keeping the game moving forward.

Remember: A module is a framework, not a script. The best moments often come from unexpected player choices and your creative responses. Trust the structure you’ve built, but be ready to follow the fun wherever it leads.

Your First Module

This chapter walks through the complete planning process for the first module of our tutorial campaign, The Ironhold Insurrection. We’ll create “The Brittle Steel Mystery” step-by-step, showing exactly how to build a 2-session module that integrates Session Zero results and sets up your campaign.

Why This Module Works as a First Adventure

Before we dive into planning, understand why we’re building this specific module:

It’s Short: 2 sessions lets us test and adjust quickly It’s Integrated: Uses NPCs and locations from Session Zero
It’s Flexible: Three different endings based on player choices It’s Observable: Built-in moments to learn player preferences It’s Connected: Introduces larger campaign mysteries

Module Planning Overview

Let’s build this module using the four-phase process from the Module Creation chapter, applying each step to create our 2-session mystery.

Quick Module Summary

  • Title: The Brittle Steel Mystery
  • Sessions: 2 (6-8 hours total)
  • Type: Mystery with combat, investigation, and social elements
  • Core Problem: The Royal Forge is producing brittle steel, threatening clan war
  • Three Possible Villains: Depending on which path players choose
  • Integration: Uses 3 NPCs and 2 locations from Session Zero

First Module Creation Process

Let’s create an actual first module using our tutorial campaign, The Ironhold Insurrection, to demonstrate each step.

Step 1: Review Session Zero (1 hour)

Extract actionable elements from our Session Zero:

# Session Zero Review - Ironhold Insurrection

## Character Profiles
- Sarah (Human Wizard): Studied with Deepguard, analytical
- Marcus (Human Fighter): Bodyguard, tactical, protective
- Tom (Halfling Rogue): Criminal contacts, knows underworld
- Lisa (Half-elf Cleric): Commerce deity, diplomatic

## Player-Created Elements
NPCs:
- Master Runekeeper Thorek Greystone (Sarah's sponsor)
- "Lucky" Finn Copperwhistle (Tom's contact)
- Young Dain Brightstone (nephew saved)

Locations:
- The Lucky Pickaxe (gambling den, 50gp buy-in)
- The Brass Monkey (where party stays/meets)

## Observed Interests
- Sarah: Magical mysteries, ancient knowledge
- Marcus: Protecting innocents, earning respect
- Tom: Underworld politics, making connections
- Lisa: Preventing violence, building bridges

## Campaign Tone
- Political thriller in fantasy setting
- Moral ambiguity welcomed
- Consequences matter

Step 2: Design the Problem (1 hour)

Our first module: “The Brittle Steel Mystery”

## The Problem

The Royal Forge - pride of Ironhold - has produced a batch of 
brittle steel. Weapons shatter, armor cracks, tools break.

Why This Works:
- Immediate threat (failing forges = city dies)
- Affects all clans (everyone needs steel)
- Multiple suspects (clan rivalry)
- Various solutions (investigate, negotiate, infiltrate)
- Connects to larger mystery (why are forges failing?)

The Hook:
Merchant Consortium hires party to investigate quietly.
Their last team vanished in Undertown.
1,000gp each for answers before the clan moot (3 days).

Step 3: Build Decision Points (2 hours)

Structure explicit choices throughout:

## Key Decision Points

SESSION 1 DECISIONS:
1. Opening: How to approach Torin Ironfoot?
   - Diplomatic (Lisa leads)
   - Deceptive (Tom leads)
   - Scholarly (Sarah leads)
   - Direct (Marcus leads)

2. Investigation: What to examine first?
   - The forge itself (magical/technical)
   - The workers (social/intimidation)
   - The materials (exploration/tracking)

3. Cliffhanger: Which lead to pursue?
   - Path A: Goldbeard apprentice acting suspicious
   - Path B: Deepguard mystics performing rituals
   - Path C: Strange noises from sealed tunnels

SESSION 2 DECISIONS:
4. Approach: How to handle chosen lead?
   - Confront directly
   - Investigate secretly
   - Seek allies first

5. Resolution: How to stop the threat?
   - Combat solution
   - Social solution
   - Clever solution

Step 4: Create Modular Scenes (3-4 hours)

Build flexible encounters that can be inserted based on player choices:

## Modular Scene Toolkit

### Combat Encounters
1. **Corrupted Elemental** (Medium)
   - Forge guardian driven mad
   - Screams clues in Primordial
   - Environmental hazards (heat, collapsing equipment)

2. **Cultist Ambush** (Hard)
   - 4-6 Duergar cultists
   - Darkness + poisoned weapons
   - One tries to flee with evidence

3. **Clan Thugs** (Easy)
   - 3-4 warriors from rival clan
   - Want to intimidate, not kill
   - Can be talked down

### Social Encounters
1. **Torin Ironfoot** (Master Smith)
   - Proud, devastated, defensive
   - Key info: Sabotage methods
   - Wants: Forge honor restored

2. **Dain Goldbeard** (Apprentice)
   - Nervous, eager to please
   - Key info: Strange shipments
   - Secret: In love across clans

3. **Keeper Morak** (Deepguard Mystic)
   - Whispers, quotes scripture
   - Key info: Ancient warnings
   - Agenda: Purify traditions

### Exploration Scenes
1. **Forge Investigation**
   - Find alchemical residue
   - Discover sabotage evidence
   - Elemental acts strangely

2. **Undertown Tracking**
   - Follow suspicious shipments
   - Navigate criminal territories
   - Find cult meeting place

3. **Archive Research**
   - Ancient texts about forge magic
   - Prophecies about failing metal
   - Maps of sealed tunnels

Step 5: Prepare Observation Tools (1 hour)

Create simple tracking sheets:

## Session Observation Sheet

ENGAGEMENT TRACKING:
□ Combat Scene: Low / Medium / High
□ Social Scene: Low / Medium / High  
□ Investigation: Low / Medium / High
□ Planning Time: Too Short / Just Right / Too Long

NPC REACTIONS:
□ Torin: Connected / Neutral / Rejected
□ Dain: Befriended / Suspicious / Hostile
□ Morak: Intrigued / Dismissive / Threatened

APPROACH PREFERENCES:
□ Preferred: Combat / Stealth / Diplomacy
□ Information gathering: Systematic / Chaotic
□ Problem solving: Direct / Clever / Cautious

PACING NOTES:
□ Session felt: Rushed / Balanced / Dragging
□ Players wanted: More RP / More Action / More Mystery

The Complete First Module

Here’s how all the pieces come together for “The Brittle Steel Mystery”:

Note how we’re using the Five-Room Dungeon structure for our Mystery module:

  1. Entrance: Meeting with Thora (establishes tone)
  2. Puzzle: Investigating the forge (non-combat challenge)
  3. Setback: Elemental attack (complication)
  4. Climax: Confronting the villain (varies by path)
  5. Revelation: Truth exposed, larger threat hinted

The Mystery template tells us WHAT to include (clues, suspects, investigation), while the Five-Room structure tells us HOW to pace it dramatically.

Complete Session Notes: Session 1

# Session 1: The Investigation

## Opening Scene (30 min)
**Location**: Brass Monkey Tavern, late afternoon

*Read aloud*: 
"The Foreign Quarter reeks of coal smoke and anxiety. Inside the 
Brass Monkey, dice clatter at Lucky's table while merchants argue 
in six languages. Thora Brightstone waits in a corner booth, her 
fingers drumming against a sealed letter."

**Thora's Briefing**:
- Royal Forge produced brittle steel yesterday
- Ironfoot clan blames Goldbeard sabotage  
- Last investigation team found dead in Undertown
- 1,000gp each for answers before clan moot (3 days)
- Bonus 1,000gp each if violence prevented

**Key Information**:
- "Master Smith Torin Ironfoot runs the Royal Forge. He's... proud, traditional, but honest. He'll be devastated by this failure."
- "Tell him I sent you. He respects the Consortium, even if he doesn't like outsiders."
- "The Royal Forge is in the Ironfoot district. You can't miss it - largest chimney in the city."

**Key Responses**:
- Previous team: "Empty eyes, no wounds. Like their souls were... extracted."
- Why outsiders: "Clan investigators would start a war, not prevent one."
- Time pressure: "The moot is in three days. After that..." *shakes head*
- About Torin: "He's been Master Smith for forty years. The forge is his life."

## The Royal Forge (45 min)

**Approaching Torin Ironfoot**:
- DC 15 Persuasion: Full cooperation
- DC 10: Grudging access
- Failure: Must sneak in later

**If They Must Sneak In**:
- Wait until shift change at dusk (workers tell them)
- DC 13 Stealth to avoid guards (advantage if Tom scouts first)
- DC 10 Thieves' Tools on side entrance OR DC 15 Athletics to climb
- Inside: Same investigation opportunities but rushed
- If caught: Guards summon Torin, very suspicious (-5 to future social rolls)
- Auto-triggers elemental if approaching sacred flame (Option C)

**Investigation Opportunities** (either approach):
- DC 12 Investigation: Find alchemical residue
- DC 18 Arcana: Identify as Underdark compound
- DC 14 History: Recall forge's 800-year history
- DC 10 Perception: Notice elemental agitation

**Torin Ironfoot Roleplay**:
- Voice: Deep, slow, mournful
- Mannerism: Touches equipment like old friends
- Key phrases: "The forge never lies" / "Iron remembers"
- If asked who might know about forge magic/corruption: "Well... my daughter Thera works at the Deepguard archive. She might have seen texts about forge guardians. Though she mentioned Keeper Morak has been restricting access lately. Very strict about 'maintaining purity.' Strange behavior, even for Deepguard."

**Triggering the Elemental** (any of these):

**Option A - Torin's Assistance** (if investigation going well):
*"Let me wake the guardian to help your investigation. It's witnessed every forging for eight centuries..."*

**Option B - Time Pressure** (if investigation stalling):
*"We need to restart the forge for the afternoon shift. Let me just check with the guardian first..."*

**Option C - Failed Stealth** (if they sneak in):
The guardian automatically activates when non-dwarves approach the sacred flame without proper introduction.

**Option D - Worker Accident** (if ignoring everything):
A panicked apprentice runs in: *"Master Torin! The guardian's acting strange! It won't let us near the—"*

**The Activation**:
Regardless of trigger, the temperature spikes. The elemental emerges—but wrong. Where it should be controlled flame, it's wild, glass-edged, screaming.

*"No! What's happened to you, old friend?"* (or if Torin's not present: Workers flee screaming)

## Corrupted Elemental Attack (30 min)

**Modified Fire Elemental** (CR 5, adjusted for level 3 party)
AC: 13, HP: 75, Speed: 50 ft
Fire Form: Creatures ending turn within 5 ft take 1d10 fire damage
Multiattack: Two touch attacks, +6 to hit, 2d6 fire damage
NEW - Brittle Aura: Metal weapons hitting it must save DC 13 or crack

**Combat Dynamics**:
- Screams "POISON! BETRAYAL! THE DEEP HUNGERS!" in Primordial
- Explodes into glass shards when defeated (clue!)
- Workers to protect (failure = reputation loss)

**Environmental Hazards**:
- Extreme heat: DC 12 CON save or 1 exhaustion
- Collapsing equipment: DC 14 DEX saves
- Smoke: Heavily obscured areas

## Post-Combat Investigation (15 min)

**Immediate Aftermath**:
- Torin devastated: "The forge guardian... it protected us for centuries"
- Glass shards contain alchemical residue (same as sabotage)
- Workers whisper about "the old warnings"

**Quick Investigation Reveals**:
- DC 10 Investigation: Elemental was summoned recently, not original
- DC 12 Arcana: Corruption matches Underdark magical signatures
- DC 15 History: Similar to records of the "Deep Hunger" incidents

**Three Witnesses Approach** (separately):
- Nervous apprentice: "I saw Dain Goldbeard here at midnight..."
- Devout smith: "Keeper Morak warned this would happen if we strayed from the old ways. He's been holding purification rituals every night this week..."
- Veteran guard: "Strange sounds from the sealed tunnels for weeks..."

**Additional Path B Clues** (if witness missed):
- Glass shards have religious symbols etched in them (DC 12 Religion)
- A Deepguard acolyte was seen blessing forge tools yesterday (worker mentions)
- Sarah's sponsor Thorek arrives: "This corruption... it matches warnings in restricted Deepguard texts. What has Morak been doing?"

## Session 1 Cliffhanger (15 min)

Players must choose which lead to investigate. Present all three, then let them debate:

**Path A - Goldbeard Workshop** (Clan District):
- Lead: "Dain Goldbeard was seen at the forge at midnight, carrying strange bottles"
- Location: Goldbeard clan workshop, rival district
- Contact: The nervous apprentice offers to guide them
- Cliffhanger: Arrive to find Dain frantically destroying evidence. He sees the party, panics: "It's not what it looks like! They made me—" *CRASH* as the door splinters open...
- *End session*

**Path B - Deepguard Archive** (Temple District):
- Lead: "Keeper Morak's been performing forge purification rituals nightly"
- Location: Deepguard Archive beneath the Temple of Stone
- Contact: Thorek Greystone (Sarah's sponsor) can get them inside
- Cliffhanger: Descending into the archive, they hear chanting. Through a doorway, Morak stands before a ritual circle, raising a hammer over a forge-flame replica: "Tonight, we cleanse the corruption forever!" The hammer begins to glow...
- *End session*

**Path C - Sealed Tunnels** (Undertown):
- Lead: "Strange sounds from the sealed tunnels, like whispers in the dark"
- Location: Ancient tunnel entrance in Undertown
- Contact: Lucky Finn (Tom's contact) knows a way past the guards
- Cliffhanger: Breaking through old boards, they find the seal cracked, darkness beyond. Tom's character recognizes fresh Duergar runes. Then from the depths: "Finally... visitors. Come closer, let me see you properly..." 
- *End session*

Session 2 Preparation Notes

Session 2: Just-In-Time Creation

Based on which path the players chose, you’ll create Session 2 between games. This is intentional - don’t over-prepare what might not be used!

## Path-Specific Prep Notes

**If They Chose Path A (Goldbeard Workshop)**:
Key Elements to Develop:
- Dain's actual innocence and frame job
- Who's framing him and why
- Love story with Ironfoot daughter
- Combat encounter with real villains
- Evidence pointing to larger conspiracy

**If They Chose Path B (Deepguard Archive)**:
Key Elements to Develop:
- Morak's religious justification
- The purification ritual mechanics
- How to stop/redirect it
- Deepguard tests and puzzles
- Consequences of success/failure

**If They Chose Path C (Sealed Tunnels)**:
Key Elements to Develop:
- The Whisper Man's identity
- What's actually imprisoned
- Duergar cult motivations
- Environmental dangers in tunnels
- Long-term threat implications

## Universal Elements (Prepare Regardless)

**Resolution Mechanics**:
- How to prove innocence/guilt
- Rewards from Consortium
- Reputation changes with clans
- Seeds for next module

**Contingency Plans**:
- What if they split the party?
- What if they bring unexpected allies?
- What if they try to combine paths?
- What if they abandon the investigation?

## Between-Session Prep Time: 2-3 hours
Focus only on the chosen path plus universal elements.

Quick Reference Sheet

## NPC Quick Reference

**Thora Brightstone** (Quest Giver)
Voice: Crisp, efficient, worried
Wants: Quick, quiet resolution
"Time is gold, and we're spending both."

**Torin Ironfoot** (Master Smith)
Voice: Deep, slow, mournful
Wants: Forge honor restored
"Eight hundred years... never failed before."

**Dain Goldbeard** (Red Herring)
Voice: Young, stutters when nervous
Secret: Loves Ironfoot daughter
"I-I can explain everything!"

**Keeper Morak** (Possible Villain)
Voice: Whispers, quotes constantly
Agenda: Return to pure traditions
"As the First Smiths wrote in stone..."

**The Whisper Man** (True Threat)
Voice: Telepathic, cold, patient
Wants: Freedom from imprisonment
"Such small minds... let me in..."

## Clue Flowchart

Sabotage Confirmed →
├── Alchemical residue (Forge)
├── Torin mentions smell (Interview)
└── Elemental screams "poison" (Combat)

Method Identified →
├── Underdark compounds (Arcana check)
├── Thorek recognizes it (NPC help)
└── Shipping records (Underworld info)

Culprit Found →
├── Path A: Frame job + cultists
├── Path B: Morak's ritual  
└── Path C: Duergar breaking seals

Running Your First Module

Session 1 Priorities

Opening Strong (30 minutes):

  • Recap Session Zero briefly
  • Jump into Thora’s briefing
  • Get to forge within 45 minutes
  • Keep energy high

Testing Engagement (2 hours):

  • Note who takes lead in social scenes
  • Watch combat tactics and preferences
  • Track investigation methods
  • Observe planning time needed

Clear Cliffhanger (30 minutes):

  • Present three distinct paths
  • Each appeals to different play styles
  • Let them debate approach
  • End immediately after choice

Session 2 Priorities

Quick Start (15 minutes):

  • Recap choice made
  • Jump to consequences
  • Maintain momentum

Escalating Action (2.5 hours):

  • Build to climax steadily
  • Give everyone moments
  • Test lessons from Session 1
  • Note continuing patterns

Multiple Endings (30 minutes):

  • Resolve immediate problem
  • Show consequences
  • Plant future seeds
  • Gauge interest directions

Between Sessions

Analyze Session 1 immediately:

  • Which scenes energized players?
  • What approaches did they favor?
  • Which NPCs sparked interest?
  • Where did pacing lag?
  • What surprised you?

Adjust Session 2 accordingly:

  • Emphasize successful elements
  • Minimize draggy parts
  • Develop interesting NPCs
  • Follow player interests
  • Test new variations

Observation Techniques

Engagement Tracking

High Engagement Signs:

  • Leaning forward
  • Taking notes
  • Asking questions
  • Making plans
  • Laughing/emotional reactions

Low Engagement Signs:

  • Checking phones
  • Side conversations
  • “Whatever you think”
  • Long rules discussions
  • Bathroom parade

Decision Analysis

When players make choices, note:

  • How long they deliberate
  • What factors they consider
  • Who influences decisions
  • What they worry about
  • What excites them

NPC Response Tracking

For each significant NPC:

  • Do players remember their name?
  • Do they seek them out?
  • Do they reference them later?
  • Do they care about their fate?
  • Do they want more interaction?

Common First Module Pitfalls

Too Ambitious

Observable Signs:

  • Your notes are 20+ pages for a 2-session module
  • You’ve created 15+ named NPCs with full backstories
  • The plot requires players to visit 6+ locations
  • You’re explaining the villain’s motivation for 10 minutes
  • Multiple subplots that “might come up”

Solution: Cut scope ruthlessly, save ideas for future modules

Too Linear

Observable Signs:

  • You panic when players suggest an unexpected approach
  • Your notes read like a movie script with specific scenes
  • NPCs exist only to deliver specific information
  • “They have to talk to Bob first or nothing works”
  • Combat encounters that must be won to proceed

Solution: Add alternate approaches to every obstacle

Too Cautious

Observable Signs:

  • Could swap this into any generic fantasy setting
  • No references to your specific campaign world
  • “You meet in a tavern and kill rats in the basement”
  • Zero connection to the Big Three from Phase 1
  • Players asking “Wait, which campaign is this?”

Solution: Include at least 3 unique campaign elements

Too Complex

Observable Signs:

  • You need a flowchart to explain the plot
  • Players constantly ask “Wait, who is that again?”
  • The villain’s plan requires a 5-step explanation
  • Multiple betrayals and counter-betrayals
  • Information overload in first 30 minutes

Solution: Simple problem, complex implications

Too Disconnected

Observable Signs:

  • None of the Session Zero NPCs appear
  • New locations instead of established ones
  • Ignoring character backstories completely
  • Players asking “Why would my character care?”
  • Feels like a published module dropped into your world

Solution: Use at least 3 elements from Session Zero

Post-Module Analysis

Immediate Debrief

Right after Session 2:

  • What moments generated excitement?
  • Which choices felt meaningful?
  • What do players want more of?
  • What confused or frustrated them?
  • Where do they want to go next?

Pattern Recognition

From your observations:

  • Combat: How much? How complex?
  • Social: Which NPCs work? What tone?
  • Exploration: How much detail?
  • Pacing: Faster or slower?
  • Tone: Lighter or darker?

Future Direction

Based on results:

  • Which plot threads to develop?
  • Which NPCs to bring back?
  • Which factions to emphasize?
  • Which themes resonate?
  • Which rules need clarification?

From First to Second Module

Applying Lessons

Your second module should:

  • Double down on successful elements
  • Minimize unsuccessful parts
  • Build on established NPCs
  • Follow player-indicated interests
  • Match discovered pacing preferences

Expanding Scope

Now you can:

  • Plan 3-4 sessions confidently
  • Create more complex plots
  • Develop deeper NPC relationships
  • Build on established facts
  • Trust your instincts

Building Momentum

Use first module success to:

  • Generate player investment
  • Establish campaign rhythms
  • Create recurring elements
  • Develop inside jokes
  • Build anticipation

What Makes This Module Work

Integration Success

Looking at “The Brittle Steel Mystery,” notice how it:

  • Uses NPCs from Session Zero (Thorek, Lucky Finn, Young Dain)
  • Takes place in established locations (Brass Monkey, Foreign Quarter)
  • Connects to character interests (magic for Sarah, underworld for Tom)
  • Tests different approaches without forcing any single one

Three-Path Design

Each path appeals to different players:

  • Path A (Goldbeard): Social and combat, personal drama
  • Path B (Deepguard): Puzzles and philosophy, magical mystery
  • Path C (Tunnels): Stealth and horror, campaign mythology

Observation Built In

The module naturally reveals:

  • Combat preferences (elemental fight)
  • Investigation style (forge examination)
  • Social approach (Torin interaction)
  • Decision making (path choice)
  • Pacing preferences (how long they investigate)

Failure States That Work

If things go wrong:

  • Alienate Torin? Break into forge at night
  • Kill Dain? Find evidence of innocence
  • Ignore everything? Forge explodes at moot
  • Take too long? Riots begin

Each failure creates new adventures, not dead ends.

Putting It All Together

This complete module plan for “The Brittle Steel Mystery” demonstrates:

  1. How to integrate Session Zero elements (Thorek, Lucky Finn, Brass Monkey)
  2. How to structure for observation (combat, social, investigation scenes)
  3. How to build in player choice (three distinct paths)
  4. How to create flexible outcomes (three different villains)
  5. How to plant campaign seeds (The Whisper Man, Deep Hunger)

What You’ve Created

Following this planning process, you now have:

  • Complete session notes for both sessions
  • NPC stats and personalities
  • Three different module endings
  • Observation tools to track preferences
  • Seeds for future adventures

Running This Module

When you run this module:

  • Session 1 takes 3-4 hours, ending on the path choice
  • Session 2 takes 3-4 hours, resolving based on their decision
  • Track which approaches excite players most
  • Note which NPCs they connect with
  • Observe their preferred pacing

Your second module will build on everything you learn from running this one.

Running the Game

Great sessions don’t happen by accident. This section covers the skills and techniques for running modules effectively—the preparation, execution, and continuity work that transforms written content into memorable play.

Modules vs Sessions

Modules are the content unit—complete, runnable adventures with everything needed to play: encounters, NPCs, locations, and narrative structure. You’ve already created these using the module templates.

Sessions are the play time—the 3-4 hours when you and your players actually meet. A single module might span multiple sessions, or you might run through portions of different modules in one session.

This section focuses on the DM skills needed to bridge that gap: turning prepared content into live play.

The Three Phases

Every game session involves:

Pre-Session Preparation

The time between sessions determines success. Learn the workflow that turns focused prep into engaging play. Covers reviewing your module, preparing for the specific session, and your pre-game ritual.

Running the Session

Where preparation meets improvisation. Master the techniques for strong openings, reading the room, managing different player types, and landing satisfying cliffhangers. Your guide to actual play.

Post-Session & Campaign Continuity

The 30 minutes after a session shapes the next one. Capture what matters, track the living world, and maintain campaign momentum. Tools for managing continuity without drowning in notes.

Core Principles

Modules provide structure, sessions provide energy - Your module is the foundation; your session skills bring it alive.

One hour of prep creates four hours of play - if you prep the right things.

The world moves without the players - NPCs pursue goals, events unfold, consequences ripple.

Tools over memory - Simple tracking systems beat trying to remember everything.

Energy management matters - Both yours and your players’ energy must be sustained.

Start Here

To see these principles in action, we’ll follow a complete example throughout this section:

Interlude: Session 1 Play-Through - See what happened in Session 1 of our Brittle Steel mystery module, establishing the foundation we’ll build on.

New DMs: After reading the interlude, begin with Pre-Session Preparation to build sustainable habits.

Experienced DMs: Jump to whichever phase challenges you most.

The three phases work together—master all three for consistently excellent sessions.

Pre-Session Preparation

Good sessions are built during the week, not improvised at the table. One hour of focused prep creates four hours of engaging play.

Now that you’ve seen what happened in Session 1, let’s prepare for Session 2 using our systematic approach.

The 8-Step Session Prep Process

At the heart of effective session preparation is a proven 8-step process that ensures you cover everything needed for a great game:

  1. Review Characters - Current status and personal goals
  2. Create a Strong Start - Hook players immediately
  3. Outline Potential Scenes - Plan the session’s flow
  4. Define Secrets and Clues - Information management
  5. Develop Fantastic Locations - Memorable settings
  6. Outline Important NPCs - Bring the world to life
  7. Choose Relevant Monsters - Appropriate challenges
  8. Select Magic Item Rewards - Treasure and progression

This process takes 60-90 minutes to complete all 8 steps and create your working notes. With practice, veterans often finish in 60 minutes while new DMs may need the full 90.

The Weekly Workflow

Sunday (20 minutes): Capture Raw Notes

Right after the session, write down:

  • What happened (player choices)
  • Player reactions and theories
  • Dangling threads
  • What you forgot
  • What surprised you

Example from Ironhold Session 1:

- Chose Path B (Deepguard Archive)
- Tom thinks Whisper Man = dragon
- Lisa wants to negotiate, not fight
- Forgot 3-day deadline until asked
- Marcus felt left out during investigation

Monday (30 minutes): Create Prep Plan

Turn notes into actionable tasks:

MUST PREP:
- Deepguard Archive layout
- Keeper Morak stats & personality
- Negotiation mechanics for Lisa
- Deadline consequences

NICE TO HAVE:
- Torin's family details
- Dragon lore (if Tom asks)

SKIP:
- Path A and C content
- Random encounters

Tuesday (15 minutes): Optional Touch Base

Light communication maintains momentum:

  • Text: “Torin’s daughter works at the Archive!”
  • Discord: Share Morak character art
  • Email: “Found those negotiation rules”

Skip if your group doesn’t engage between sessions.

Wednesday (60-90 minutes): Core Prep Work - The 8-Step Process

This is when you complete the 8-step session prep process. This creates your working notes:

Steps 1-2 (10-15 minutes) - Foundation:

  1. Review Characters: Check HP, resources, personal goals
  2. Create Strong Start: Design your opening scene with immediate decision

Steps 3-4 (15-20 minutes) - Story Structure: 3. Outline Potential Scenes: Plan 3-5 scenes sized for your session length 4. Define Secrets and Clues: Ensure critical info has multiple discovery paths

Steps 5-6 (20-30 minutes) - World Elements: 5. Develop Fantastic Locations: Create memorable spaces with interactive elements 6. Outline Important NPCs: Define appearance, personality, wants, and info

Steps 7-8 (15-25 minutes) - Mechanical Elements: 7. Choose Relevant Monsters: Select encounters and tactics 8. Select Magic Item Rewards: Plan treasure and story rewards

Total time varies based on complexity and experience. New DMs may need 90 minutes, veterans often finish in 60.

Example from Session 2 prep:

Step 1 - Review Characters:

Lisa (Cleric): Full HP, all spells, wants peaceful resolution
Marcus (Fighter): Down 8 HP, wants combat after being sidelined
Tom (Wizard): Full resources, theorizing about dragon connection
Sarah (Rogue): Full HP, needs more spotlight time

Step 2 - Create Strong Start:

Open mid-ritual! Morak raising glowing hammer, 3 rounds to impact
PCs must decide: interrupt, attack, or watch?

Step 3 - Outline Scenes:

1. Ritual Interruption (15 min) - Crisis decision
2. Confrontation/Investigation (45 min) - Learn truth
3. Vault Discovery (30 min) - Find evidence
4. Cliffhanger (10 min) - Seal weakening

Step 4 - Define Secrets:

Critical: Morak mistranslated "shatter" as "strengthen"
- Found via: Persuasion, examining books, or ritual completion
Critical: Goldbeards have a key-stone
- Found via: Vault letter, Morak's confession, or investigation

Step 5 - Develop Locations:

Ritual Chamber: Glowing circle, ancient tomes, cold draft
Hidden Vault: Behind tapestry, prayer-locked, contains truth

Step 6 - Outline NPCs:

Keeper Morak: Gaunt, whispers scripture, wants to purify
2 Acolytes: Nervous, flee if combat starts

Step 7 - Choose Monsters:

Animated Armor (if vault entered without prayer)
Environmental hazard: Disrupted ritual energy

Step 8 - Select Rewards:

Information: Truth about seals and Whisper Man
Letter: Goldbeard conspiracy evidence
Potions: 2 healing potions in vault

Thursday (30 minutes): Transform Notes into One-Page Plan

This is when you convert your 8-step notes into the polished one-page session plan:

First 10 minutes - Compile and Organize:

  • Combine all 8 steps into flowing narrative
  • Arrange scenes in likely order
  • Group NPCs and monsters together
  • Consolidate clues into scene descriptions

Next 10 minutes - Add Specifics:

  • Write opening narration
  • Add DC numbers for all checks
  • Include HP/AC for combat encounters
  • Note page references for rules

Final 10 minutes - Polish and Prepare:

  • Print handouts (riddle, letter)
  • Bookmark/tab stat blocks
  • Draw quick reference map
  • Practice key NPC voices
  • Create initiative tracker

Friday: No Prep

Let your subconscious work.

Saturday Morning (30 minutes): Pre-Game Ritual

10:00 - Review notes
10:10 - Set up space
10:15 - Queue music
10:20 - Practice voices
10:25 - Text players
10:30 - Breathe

Emergency Prep (15 minutes)

When life happens, hit the essential elements from the 8-step process:

  1. Quick Character Check (1 min) - Who’s hurt? Who needs spotlight?
  2. Strong Start (2 min) - Where are they? What’s the immediate situation?
  3. Three Scenes (6 min) - One combat, one social, one discovery
  4. One Critical Clue (1 min) - What must they learn? Three ways to find it
  5. One Cool Location (2 min) - Where’s the interesting place?
  6. Two NPCs (2 min) - Names, wants, one secret each
  7. One Combat (1 min) - Who might they fight?
  8. One Reward (1 min) - Treasure or information

This compressed version ensures you don’t miss anything critical.

From Notes to One-Page Plan

The 8-step process creates your raw notes (Wednesday). Thursday’s transformation turns those notes into this polished one-page document—everything you need at the table.

Here’s how the Session 2 notes became the final plan:

SESSION 2: Saturday Oct 14 - The Deepguard Archive

LAST TIME: Party descended into Deepguard Archive. Session ended with 
Morak raising glowing hammer over forge-flame replica: "Tonight, we 
cleanse the corruption forever!" 3 days remain until clan moot.

OPENING: 
"The ritual chamber glows with ethereal light. Keeper Morak stands 
before the forge-flame replica, the hammer pulsing with divine energy. 
He hasn't noticed you yet. The chanting grows louder: 'Ancestors, 
purify your children!' The hammer rises higher..."
→ "What do you do?"

LIKELY SCENES:

1. Immediate Intervention (10-15 min)
   MORAK'S RITUAL IN PROGRESS:
   - 3 rounds until hammer strikes
   - 2 acolytes chanting in corners
   - Ritual circle glowing (don't break it!)
   - Ancient tomes open on pedestals around the circle
   - One massive book beside Morak with visible runes
   
   IMMEDIATE OPTIONS:
   - Shout/Interrupt (Morak pauses, demands explanation)
   - Rush forward (Initiative! But Morak not hostile yet)
   - Watch and wait (Ritual completes - see below)
   - Lisa's diplomacy (Persuasion with advantage if respectful)
   
   IF RITUAL COMPLETES:
   - Hammer strikes forge-flame with thunderous crack
   - Building shakes violently (DEX save DC 12 or fall prone)
   - Cracks spider-web across floor toward the north
   - Deep rumbling from below, then eerie silence
   - Morak collapses, weakened but alive
   - "What... what have I done? That's not... the ancestors..."
   - First seal is cracked (not shattered), Whisper Man stirs
   
2A. The Confrontation (45-60 min) - IF INTERRUPTED
   KEEPER MORAK:
   - "You dare interrupt sacred work?"
   - Genuinely believes he's saving Ironhold
   - WANTS: Strengthen failing seals through purification ritual
   - KNOWS: Ancient seals exist, brittle steel means they're weakening
   - WRONG: His ritual will shatter seals, not strengthen them (mistranslation)
   
   NEGOTIATION PATH (Lisa's preference):
   - Explain the real danger (DC 13 Persuasion)
   - Use scripture against him (DC 15 Religion)
   - Offer alternative ritual (need to find correct one)
   - Success: Morak horrified, becomes ally
   
   COMBAT PATH (if it goes bad):
   - Morak: Priest stats, casts spiritual weapon round 1
   - 2 Acolytes: Will flee if Morak loses half HP
   - Environmental: Disrupted ritual energy (random target, 2d6 radiant)
   - Victory: Must safely discharge ritual circle (Arcana DC 13)

2B. Emergency Investigation (45-60 min) - IF RITUAL COMPLETED
   MORAK COLLAPSED:
   - Weakened, confused, not hostile
   - "The seals... they cracked, not strengthened... what have I done?"
   - Willing to help if approached carefully
   - Can reveal: "The old texts... behind the Hammer of Founding..."
   
   THE RITUAL CHAMBER:
   - Perception DC 10: Ancient tapestry shows dwarves sealing a door
   - Perception DC 15: Tapestry hangs oddly, draft behind it
   - Investigation DC 12: Tapestry conceals stone door with prayer inscription
   - Arcana DC 12: Cracks pulse with otherworldly cold
   - Arcana DC 15: Seal magic is pre-imperial, binding something IN
   
   THE HIDDEN VAULT:
   Door inscription: "Let none enter save those who speak the Watcher's Oath"
   - Religion DC 13: Recognize ancient guardian prayer
   - Without prayer: Glyph triggers (3d8 thunder) when door opens
   
   INSIDE THE VAULT:
   - 15x15 room, walls covered in proto-dwarvish runes
   - Center: Pedestal with iron-bound tome
   - Corner: Ancient dwarven armor (eyes glow if tome touched)
   
   THE ANIMATED ARMOR:
   - Dormant until someone touches/takes the tome
   - Morak knows: "Speak your purpose to the Guardian"
   - If stated honestly: Guardian makes Insight check at disadvantage (DC = speaker's Deception/Persuasion)
   - Success: Armor nods, returns to dormancy
   - Failure: "DECEPTION!" Attacks (perfect for Marcus's combat need)
   - If defeated: Crumbles, whispers "The seals... must... hold..."
   
   ARMOR COMBAT:
   - Initiative: Armor animates with grinding metal sound
   - Round 1: Moves to block exit, attacks nearest person
   - Tactics: Focuses on whoever holds/touched the tome
   - Environment: Confined space (difficult to flank)
   - Special: If reduced to half HP, helm falls off revealing emptiness
   - Victory: Can take tome, armor becomes inert pile
   - Combat length: Design for 3-4 rounds (Marcus gets spotlight)
   
   TOME REVELATIONS:
   - Title: "The Binding of the Whisper Man"
   - Reveals: Entity of pure corruption, turns hearts to evil
   - Shows: Three seal locations (one directly below archive!)
   - Critical: Each seal has a key-stone, all three needed
   - Recent addition: Loose paper with Goldbeard seal
     * "Brother, the first key is secured in our vault"
     * "The fools think we seek only treasure"
     * Dated three weeks ago, signed "G.G."
   
   COUNTER-RITUAL REQUIREMENTS:
   - Must be performed at each seal
   - Needs: Sacred forge-flame (not corrupted)
   - Needs: Willing sacrifice of something precious
   - Needs: All three key-stones properly aligned
   
   TIME PRESSURE:
   - Every 20 minutes: CON save DC 10 or level of exhaustion
   - Whispers getting louder (WIS save DC 12 or disadvantage)
   - 6 hours until crack widens beyond repair

3. Aftermath & Next Steps (30-45 min)
   IF MORAK CONVERTED:
   - Shows hidden vault with true histories
   - Reveals other factions want seals broken
   - Offers modified ritual to strengthen seals
   - Mentions sensing "something stirring below"
   
   IF MORAK DEFEATED:
   - Acolytes can be questioned
   - Journal reveals his research
   - Archive contains seal locations
   - Tremor hits - seal damaged but not broken
   
   URGENT DISCOVERIES:
   - Goldbeard Clan has been seeking the key-stones!
   - "G.G." = Grimnar Goldbeard (rival clan leader)
   - They already have one key, need all three
   - Other cities reporting similar steel failures
   - Timeline: 2 days until irreversible damage
   - Next lead: The Sunken Seal (closest one)

INFORMATION DELIVERY:
✓ Whisper Man identity (ancient corruption entity)
✓ Seal locations (three total, one beneath city)
✓ Morak's misunderstanding (thought seals trapped impurity)
✓ Goldbeard conspiracy (they have one key already)
□ Counter-ritual requirements (if they investigate fully)
□ Other cities affected (if they ask around)

CLIFFHANGERS:
- EARLY (2.5 hrs): Discovery of Goldbeard letter, "They're heading for the second seal tonight!"
- ON TIME (3.5 hrs): Deep rumbling below, Morak: "The Sunken Seal... something's testing it from below"
- RUNNING LATE (4 hrs): Temperature plummets, frost spreads, whispers echo: "Free... soon... free..."

STABILIZATION ENDING (if appropriate):
- Morak: "Wait! I may not have the full counter-ritual, but..."
- Emergency seal reinforcement (requires group effort)
- Tom channels arcane energy (Arcana DC 12)
- Lisa leads prayer components (Religion DC 10)
- Marcus holds circle stable (Athletics DC 13)
- Sarah provides divine focus (Medicine DC 11)
- Success: Buys 3 days (maybe less - roll secretly)
- Morak exhausted: "The Goldbeards have three weeks head start..."

COMBAT STATS READY:
- Keeper Morak: Priest (MM 348) + 3rd level spells
- Acolytes: Standard (MM 342)
- Animated Armor: Standard (MM 19) - guards the vault
- Glyph of Warding: 3d8 thunder, DC 15 Dex save - protects vault entrance

MARCUS FOCUS:
- Animated armor fight (he wanted combat)
- Let him lead temple guard interaction
- Physical challenge: Crumbling archive section

REMINDERS:
- Lisa wants to negotiate (give her the chance)
- Tom suspects dragon connection (leave hints)
- Marcus felt left out (include action moments)
- Mention the 3-day deadline again
- Morak is sympathetic, not evil

IF PLAYERS FLEE:
- Ritual completes if they don't return within 10 minutes
- Thunderous CRACK echoes across district
- Street cracks in spiderweb pattern northward
- Archive windows shatter outward
- Temperature drops 20 degrees instantly
- Crowds panic: "The deep cold! Just like the old stories!"
- Guards arrive, establish perimeter
- Morak staggers out, horrified: "What have I done?"
- Party can re-enter as "concerned citizens" or reveal involvement

This is what you actually bring to the table—your complete session kit:

The One-Page Plan: Everything above, printed or on screen, always visible.

NPC Cards (one per major NPC):

KEEPER MORAK
Wants: Purify corruption through ritual
Voice: Whispers, quotes scripture constantly  
Key Info: Thinks seals trap evil, not contain it
Stats: Priest (MM 348), spiritual weapon, hold person
If pressed: "The ancestors demand purity!"

Maps (if your group uses them):

  • Archive layout: Entry hall → Ritual chamber → Hidden vault
  • Simple relationship map: Morak ← serves → Deepguard Faith
  • Seal locations marked on city map

Quick Reference:

  • Bookmark: Priest stats in Monster Manual
  • Sticky note: Page with glyph of warding rules
  • Index card: Archive riddle written out
  • Phone/tablet: Atmospheric music queued

The key is everything stays accessible without shuffling papers mid-scene.

The 8-Step Process in Practice

Notice how the raw notes transform into the polished plan:

From Step 1 Notes: “Marcus down 8 HP, wants combat” → Becomes environmental attack opportunity and animated armor encounter

From Step 2 Notes: “Open mid-ritual, 3 rounds” → Becomes full opening narration with immediate decision

From Step 3 Notes: “4 scenes planned” → Becomes structured scenes with time estimates and contingencies

From Step 4 Notes: “Morak mistranslated” → Becomes embedded clues in dialogue and book descriptions

From Step 5 Notes: “Ritual chamber, hidden vault” → Becomes detailed location descriptions with interactive elements

From Step 6 Notes: “Morak: gaunt, whispers” → Becomes full NPC card with dialogue and reactions

From Step 7 Notes: “Animated armor” → Becomes tactical encounter with environment details

From Step 8 Notes: “Letter, potions” → Becomes integrated rewards within scene flow

The transformation from notes to one-page plan is what makes your prep usable at the table. Your module provides the content foundation; this process creates your session-specific action plan.

Weekly Time Investment Summary

Total weekly prep time: 2.5-3 hours

  • Sunday: 20 minutes (capture raw notes)
  • Monday: 30 minutes (create prep plan)
  • Tuesday: 15 minutes (optional touch base)
  • Wednesday: 60-90 minutes (8-step process)
  • Thursday: 30 minutes (transform to one-page plan)
  • Friday: No prep (let it percolate)
  • Saturday: 30 minutes (pre-game ritual)

This creates 4 hours of engaging play. With practice, many DMs complete the core Wednesday prep in 60 minutes.

Next: Running the Session

With prep complete, you’re ready for game time.

Running the Session

Let’s run Session 2 of “The Brittle Steel Mystery” using our prep. This shows how preparation transforms into actual play.

The Opening (First 15 Minutes)

11:00 - Setting Up

Players arrive, catching up while you arrange materials. Your one-page plan sits center, Morak’s NPC card to the left, dice to the right.

11:05 - The Recap Question

“Alright everyone, let’s dive back into Ironhold. Who wants to recap where we left off?”

Tom volunteers: “We discovered the brittle steel crisis at the Royal Forge, met Torin who was desperate, and chose to investigate the Deepguard Archive. We descended into the archive and saw Keeper Morak about to perform some kind of purification ritual with a glowing hammer!”

“Perfect! And you have about 3 days before the clan moot…”

11:08 - The Scene

“The ritual chamber glows with ethereal light. Keeper Morak stands before the forge-flame replica, the hammer pulsing with divine energy. He hasn’t noticed you yet. The chanting grows louder: ‘Ancestors, purify your children!’ The hammer rises higher…”

“What do you do?”

11:10 - Immediate Crisis

The players react:

  • Lisa: “I shout ‘Wait! Stop!’”
  • Marcus: “I ready my sword”
  • Tom: “I’m preparing Counterspell”
  • Sarah: “I step forward respectfully”

You know from your prep: 3 rounds until the hammer strikes. Time for initiative? No—Lisa shouted first, giving them a chance to talk.

Managing the Confrontation

The Interruption (11:15)

“Morak freezes, hammer suspended. He turns, eyes wild. ‘You DARE interrupt sacred work? The ancestors—’”

Lisa cuts in: “Keeper, please! We come seeking wisdom about the brittle steel. Torin sent us!”

Reading the room: Everyone’s leaning forward. Lisa’s taking lead (as you hoped from prep notes). Marcus looks antsy—remember he needs action soon.

The Negotiation Path (11:20-11:45)

Your prep says: Will listen if they show respect, quote scripture

Sarah (picking up the cue): “Keeper Morak, we seek understanding. The ancient texts speak of purity, but also of wisdom. What drives this ritual?”

The Scene: Ancient tomes lie open on stone pedestals around the ritual circle. Candlelight flickers across pages of proto-dwarvish runes. One massive book sits beside Morak, bookmarked with prayer ribbons.

Morak’s Response (checking NPC card):

  • Voice: Whispered urgency
  • Want: Strengthen the ancient seals
  • Mistaken belief: His ritual will reinforce them (actually weakens them)

“The corruption spreads! Can’t you see?” He gestures to the open tome. “The steel fails because we have fallen from the ancestors’ path. The old seals are failing—they’re too weak! This ritual will purify and strengthen them, cleanse the corruption before it escapes!”

Party Reaction:

  • Tom (wizard): “Wait, seals? What seals?”
  • Lisa: “But what if the seals trap something else?”
  • Marcus: Growing impatient
  • Sarah: Trying to stay diplomatic

Adding Pressure (11:35)

Time for Marcus’s moment. From your prep: Environmental: Ritual energy lashes out

“As you debate, the suspended ritual energy crackles. A bolt of pure light lashes toward Marcus!”

Marcus finally gets to roll: Dex save (DC 15)—makes it!

“You dodge aside as the energy scorches the floor. Morak struggles to control the hammer. ‘It must complete! Or all is lost!’”

The Revelation (11:45)

Lisa succeeds on Persuasion (DC 13, rolled 16): “Keeper, what if your ritual doesn’t strengthen the seals but weakens them? What if the old texts have been mistranslated?”

Morak wavers, then frantically flips back through the massive tome:

“Weakens? No, the purification should…” His finger stops on a specific rune. “Wait. This word—I translated it as ‘purify through breaking’… but in Old Dwarvish it could mean… ‘shatter utterly.’”

Tom steps closer to see: “And this passage here—it’s not about corruption to be cleansed…”

Morak’s face drains of color: “It’s about the Whisper Man—an entity to be contained! By the ancestors, what have I almost done?”

The Investigation Phase (11:45-12:30)

Transitioning Scenes

With Morak converted to ally, shift from confrontation to investigation. The ritual energy needs to be safely discharged (Tom’s Arcana check—success!).

“The chamber settles. Morak, shaken, whispers: ‘If you’re right… the old vault. Behind the Hammer of Founding tapestry. But beware the Guardian.’”

The Vault Discovery

Players investigate:

  • Sarah: Perception 15—notices the tapestry hangs oddly
  • Tom: Detect Magic—senses abjuration (the glyph) and transmutation (animated armor)
  • Marcus: Just wants to pull the tapestry aside
  • Lisa: “Wait! Let Morak tell us about this Guardian”

Managing Different Approaches:

  • Let Tom’s magic detection warn about the glyph
  • Use Morak to explain the prayer needed
  • Give Marcus the animated armor fight he wants

The Armor Combat (12:00)

Tom reaches for the tome. The ancient armor’s eyes flare red!

Morak shouts: “Wait! Speak your purpose to the Guardian!”

Tom pauses, then declares: “I seek knowledge to save Ironhold from the corruption!”

The Guardian’s Test:

  • Tom rolls Persuasion: 14
  • Guardian’s Insight (at disadvantage): rolls 6 and 15, must use 6
  • DC 14 vs 6… the Guardian doesn’t believe him!

“DECEPTION! NONE MAY STEAL THE SACRED KNOWLEDGE!”

The armor animates with a grinding metal sound—Marcus grins and draws his sword!

Running the Fight:

  • Initiative rolled quickly
  • Round 1: Armor moves to block the vault exit, swings at Tom
  • Tactics: It focuses on Tom (who touched the tome), forcing others to protect him
  • Environmental challenge: 15x15 vault, hard to maneuver
  • Marcus gets his spotlight protecting the wizard
  • Cool moment at half HP: Helmet falls off, revealing nothing inside
  • Round 4: Victory! Armor crumbles, whispers: “The seals… must… hold…”

Information Revealed (12:15)

Post-combat investigation of the tome:

  • Title: “The Binding of the Whisper Man”
  • Three seal locations (one directly below!)
  • The Goldbeard letter (players gasp—internal threat!)
  • Counter-ritual requirements

Building to the Climax (12:30-1:00)

Rising Tension

With information gained, add time pressure. From prep: Strange whispers, temperature dropping

“As you study the tome, the temperature plummets. Your breath mists. From the cracks in the floor, whispers rise: ‘Soon… soon… soon…’”

Tom: “How long do we have?” “The texts suggest six hours once a seal cracks. It’s been one.”

The Choice Point

Players debate:

  • Fix this seal first?
  • Warn the city?
  • Pursue Goldbeards?
  • Find the other seals?

Managing Analysis Paralysis: “As you debate, Morak staggers. ‘The nearest seal—below us. I can feel it weakening. Whatever you decide, decide quickly.’”

The Stabilization Ritual (12:50)

“Suddenly, deep rumbling shakes the archive. Dust falls from the ceiling. Morak’s eyes widen in horror, then determination: ‘Wait! I may not know the full counter-ritual, but I found something—an emergency reinforcement!’”

He frantically flips pages: “Here! But I need all of you. This won’t last long, but it might buy us time!”

Running the Group Ritual:

  • Lisa leads prayers (Religion DC 10): “Guide these ancient words…”
  • Tom channels arcane energy (Arcana DC 12): “I’m redirecting the residual power…”
  • Marcus holds the circle stable (Athletics DC 13): “This floor is cracking!”
  • Sarah provides divine focus (Medicine DC 11): “Keeping Morak conscious…”

Each success adds stability. With all four:

“The cracks stop spreading. The temperature stabilizes—still cold, but not plummeting. The whispers fade to barely audible. Morak collapses against the wall.”

The New Cliffhanger (12:58)

“We’ve bought time,” Morak gasps. “Three days, maybe less. The seal could fail at any moment.” He looks at you with haunted eyes. “There are two more seals. And the Goldbeards have a three-week head start.”

“What’s your next move?”

Players declare intentions—less panicked, more strategic:

  • Lisa: “We need to research the proper ritual”
  • Marcus: “Let’s track down these Goldbeards”
  • Tom: “Can we reinforce the other seals?”
  • Sarah: “The city needs to know”

“And that’s where we’ll pick up next week!”

Session Wrap-Up (1:00-1:10)

Immediate Feedback

“Great session everyone! Favorite moments?”

  • Lisa: “Converting Morak instead of fighting!”
  • Marcus: “That armor fight in close quarters”
  • Tom: “The Goldbeard conspiracy twist”
  • Sarah: “Being part of the stabilization ritual!”

Confirm Next Session

“Same time next week? You’ve got three days before the patch fails. What’s your priority—research, pursuing Goldbeards, or checking the other seals?”

Let Excitement Linger

Players naturally start planning as they pack up. Don’t interrupt—this enthusiasm carries to next session.

Techniques in Action

Throughout this session, we used:

Reading the Room:

  • Noticed Marcus getting antsy during negotiation → added environmental attack (ritual energy)
  • Saw Lisa taking diplomatic lead → let her drive the persuasion
  • Tom engaged with visible books → incorporated him into the translation revelation
  • Sarah staying respectful → rewarded with Morak responding positively

Managing Pacing:

  • Opened mid-crisis (3 rounds to disaster!)
  • Quick negotiation backed by mechanics (Persuasion DC 13)
  • Transitioned smoothly to investigation via Morak’s help
  • Combat encounter perfectly timed for restless players
  • Built to new crisis (seal weakening) for cliffhanger

Using Prep Effectively:

  • One-page plan stayed visible throughout
  • Morak’s NPC card kept his voice consistent (whispers, scripture)
  • Used both paths: 2A (negotiation) flowed into 2B elements (investigation)
  • Guardian’s Insight check at disadvantage created “natural” combat
  • Hit all information checkboxes while following player choices

Mechanical Decisions:

  • No initiative for interruption (Lisa spoke first)
  • Called for Persuasion at the right dramatic moment
  • Used disadvantage cleverly to nudge toward desired outcome
  • Environmental details (15x15 vault) affected tactical choices

Handling Curveballs:

  • Tom wanted to examine books → “Yes, and here’s what you see”
  • Players might bypass combat → created roll that likely fails
  • Marcus needed action → environmental attack, then armor fight
  • Time pressure (“6 hours remaining”) prevented analysis paralysis

Key Lessons

  1. Strong openings create momentum - Jump straight into the crisis
  2. Prep enables flexibility - Knowing multiple paths let us follow player choices
  3. Individual spotlight moments matter - Everyone got their time
  4. Cliffhangers write themselves - When you have clear stakes and time pressure
  5. One-page visibility works - No shuffling, no lost information

Next: Post-Session

With the session complete, you have 10 minutes of crucial work to capture what happened and prepare for next time.

Post-Session & Campaign Continuity

The 30 minutes after a session shapes the next one. Here’s how to capture momentum and maintain campaign continuity.

Immediate Capture (10 minutes)

Right after players leave, write:

What Happened

Ironhold Session 2 - Deepguard Archive:
- Interrupted Morak's ritual (Lisa's diplomacy)
- Discovered his mistranslation of ancient texts
- Tom examined books, triggered translation revelation
- Fought animated armor guardian (Marcus got spotlight)
- Found Goldbeard conspiracy letter
- Performed emergency stabilization ritual (whole party)
- Bought 3 days before seal fails (maybe less)

Player Reactions

- Lisa: Proud of converting Morak peacefully
- Marcus: Happy about armor fight, wants more
- Tom: Excited about Goldbeard conspiracy
- Sarah: Finally got spotlight in stabilization ritual!
- All: Relief at buying time, but worried about what's next

Dangling Threads

- Stabilization could fail any time (roll secretly?)
- Goldbeards have one key-stone, 3-week head start
- Need all three keys for permanent solution
- Two other seals location known but status unknown
- Counter-ritual requirements still unclear
- Other cities having similar problems

DM Notes

- Guardian's disadvantage roll worked perfectly
- Environmental attack gave Marcus early action
- Books as props paid off in revelation
- Stabilization ritual gave everyone a moment
- Good stopping point - crisis resolved but threat remains
- Secret rolls for seal stability could add tension

The Week After (20 minutes Monday)

Transform notes into improvements:

What Worked

  • Opening mid-crisis grabbed attention
  • Books as Chekhov’s gun for revelation
  • Guardian disadvantage created “natural” combat
  • Environmental attack for Marcus
  • Cliffhanger with everyone engaged

What Didn’t

  • Sarah present but not central to action
  • Could have used the glyph trap
  • Pacing rushed at the end
  • Didn’t clarify counter-ritual needs

Next Session Needs

  • Let players choose direction (research/pursue/explore)
  • Continue Sarah’s momentum from ritual success
  • More combat opportunities for Marcus
  • Clarify key-stone mechanics
  • Secret stability rolls behind screen

Chaos Monkey Mechanic

Every in-game hour, roll d20 secretly:

  • 1: Seal weakens noticeably (describe environmental signs)
  • 2-19: Holds steady
  • 20: Actually strengthens slightly (stabilization working better than expected)

Continuity Management

The Living World

In the hour since the ritual was interrupted:

Immediate Reactions:
- Guards rushing to archive (tremor was felt)
- Acolytes fled when ritual went wrong
- Temperature dropping near the cracks
- Whispers audible to those who listen closely
- Morak frantically searching for counter-ritual

NPC Actions (Next Hour)

While party heads to Sunken Seal:

  • Torin: Won’t know what happened yet
  • Morak: Searching archives for correct ritual
  • Grimnar Goldbeard: Unknown location (letter was 3 weeks old)
  • City Guard Captain: Demanding explanations
  • Citizens: Starting to panic about the cold

Unknown Factors

  • Where are the Goldbeards now?
  • Do they know the seal cracked?
  • Who else felt the tremor?
  • Is anyone else racing to the seals?

Timeline Tracking

Day 1: Brittle steel discovered
Day 2 Morning: Met Torin at forge (Session 1)
Day 2 Afternoon: Archive crisis, stabilization ritual (Session 2)
Day 2 Evening: [Party can rest, plan, research]
Day 3-4: [Available for next module]
Day 5: Clan moot deadline

Current time: ~3 PM, Day 2
Stabilization duration: 3 days (maybe less - DM rolls secretly)

Campaign Tools

The Continuity Doc

One document tracking:

ESTABLISHED FACTS:
- Whisper Man imprisoned below
- Forge guardian 800 years old
- Three seals keeping evil trapped
- Morak trying to help

PLAYER THEORIES:
- Tom: Whisper Man is dragon
- Lisa: Religious corruption
- Sarah: Ancient curse
- Marcus: Clan sabotage

COMMITMENTS MADE:
- Help Morak with ritual
- Report to Thora in 2 days
- Keep Goldbeards innocent
- Protect the seals

Consequence Tracking

Every choice creates ripples:

Interrupted Ritual Instead of Watching:
- Seal only cracked, not shattered (+)
- Morak survived to help (+)
- Learned about threat in time (+)
- Whisper Man now stirring (-)

Stabilization Ritual Success:
- Everyone contributed to solution (+)
- Bought 3 days to plan (+)
- Sarah got key spotlight moment (+)
- Temporary fix only (-)
- Could fail at any moment (-)

Future Impact:
- Morak actively researching proper ritual
- Party can plan instead of panic
- Multiple paths available (research/pursue/explore)
- Secret stability rolls create tension
- Clear transition point for next module

Between Modules

Downtime Activities

Let players pursue personal goals:

  • Sarah: Research at library
  • Marcus: Training guards
  • Tom: Underworld contacts
  • Lisa: Temple services

Quick resolution: “Sarah, you find three references to similar seal failures. All ended badly.”

Background Events

Roll or choose:

  1. Rival party succeeds/fails
  2. Political shift occurs
  3. NPC needs help
  4. Threat grows stronger
  5. Opportunity expires
  6. New faction arrives

Connecting Modules

From Mystery to Next:

Brittle Steel Mystery revealed:
- Whisper Man threat (→ Dungeon Module)
- Clan tensions high (→ Political Module)
- Seals weakening (→ Race Against Time)
- Morak's knowledge (→ Research Module)

Player Interest: Whisper Man
Next Module: "The Sunken Seal"

Quick Reference Sheets

Session Summary Template

SESSION #: [Date]
EVENTS: [Bullet points]
DECISIONS: [What players chose]
CONSEQUENCES: [What changed]
THREADS: [Unresolved elements]
NEXT: [Opening scene]

NPC Status Tracker

NAME: Status | Location | Attitude
Torin: Desperate | Royal Forge | Grateful
Morak: Preparing | Archive | Cautious ally
Thora: Worried | Brass Monkey | Impatient

Thread Priority

URGENT: Seal ritual (2 days)
ACTIVE: Clan tensions, forge crisis
BREWING: Whisper Man awakening
DORMANT: Goldbeard romance

Metrics That Matter

Energy Levels

  • Post-game chatter = success
  • Immediate departure = problem
  • Between-session texts = very engaged

Story Progress

  • Threads resolving = good pacing
  • Threads multiplying = slow down
  • Threads ignored = refocus

Common Pitfalls

“I Forgot What Happened”

Example: Three weeks later, you can’t remember if Morak knows about the Goldbeards.

Fix: Start with player recap: “Who remembers what we discovered last time?”

  • Player: “We found out Morak was doing a ritual…”
  • You: “Right! And you found that letter about the Goldbeards having a key.”
  • Your notes fill gaps: “Morak was horrified when he realized his mistake”

“Continuity Errors”

Example: You say Grimnar Goldbeard is at the Sunken Seal, but the letter said they were going to the Eastern Mountains.

Fix: “You’re right. Let’s say the letter mentioned multiple seal locations—they could be at any of them.” Turn the mistake into mystery.

“Too Many Threads”

Example: You’re tracking:

  • Brittle steel crisis
  • Whisper Man threat
  • Goldbeard conspiracy
  • Clan politics
  • Torin’s family drama
  • City guard investigation
  • Other cities’ problems

Fix: Let some resolve off-screen:

  • “News arrives: The neighboring city found a temporary fix for their steel”
  • “Torin sends word—his daughter Thora discovered something but needs time to verify”
  • Keep focus on immediate threat (seals) while others simmer

“Nothing Feels Connected”

Example: Players feel like random things keep happening with no throughline.

Fix: Show connections explicitly:

  • “The tremor you caused at the archive? The Goldbeards felt it at the second seal.”
  • “Remember that brittle steel? Now you know why—the seals weakening affects the forge’s divine blessing.”
  • “Morak’s mistranslation? Turns out three other cities made the same error.”

Make coincidences feel like conspiracy, random events feel orchestrated.

Sustainable Practices

The 80/20 Rule

  • 80% of continuity comes from 20% of details
  • Track what matters, forget the rest
  • Names and promises matter most
  • Exact words rarely matter

Tools Not Memory

  • Write it down immediately
  • Use templates consistently
  • Reference sheets during play
  • Players help track too

Campaign Health Check

Monthly questions:

  1. Are players still excited?
  2. Is the story progressing?
  3. Am I enjoying this?
  4. What needs adjustment?
  5. Where are we heading?

Prep Self-Assessment

After a few sessions, you’ll notice patterns in your preparation style. Here’s how to recognize and adjust:

Signs You’re Over-Preparing: You spent three hours detailing the archive’s history, but the session ended with unused pages of notes. Players solved the Morak situation in an unexpected way, and you felt frustrated about “wasted” work. If you regularly finish sessions with 70%+ of your prep untouched, shift focus from creating content to preparing flexible tools—NPC motivations over monologues, situation dynamics over scripted scenes.

Signs You’re Under-Preparing: You found yourself stalling multiple times, frantically flipping through books for stats, or making up critical plot details that contradict earlier sessions. If players frequently catch continuity errors or you’re exhausted from constant improvisation, you need more structure. The one-page plan isn’t restrictive—it’s your safety net for confident improvisation.

Signs You’re Too Rigid: You feel anxiety when players make unexpected choices. You find yourself steering conversations back to your planned scenes. Players comment that outcomes feel predetermined. If deviation from your prep causes panic rather than excitement, practice preparing multiple branches rather than single paths. Think “if/then” scenarios rather than story beats.

Moving Forward

Each session builds your campaign:

  • Immediate notes capture momentum
  • Weekly analysis improves play
  • Continuity tools maintain coherence
  • Regular check-ins ensure health

The campaign is a living thing. These practices keep it thriving.

Summary

Post-session work takes 30 minutes:

  • 10 minutes immediate capture
  • 20 minutes weekly analysis
  • Ongoing: simple tracking tools

This investment pays dividends in campaign coherence and player engagement. Your future self will thank you.

Developer Documentation

This section contains documentation for developers who want to contribute to Mimir or understand its technical architecture.

Getting Started

Technical Reference


Looking for user documentation? Head back to the main documentation.

Contributing to Mimir

Welcome to the Mimir contributor guide! This comprehensive guide covers everything you need to know about contributing to the project.

Table of Contents

  1. Getting Started
  2. Development Workflow
  3. Code Style and Standards
  4. Testing Guidelines
  5. Pull Request Process
  6. Architecture Overview
  7. Design Principles
  8. Release Process

Getting Started

First-Time Contributors

Welcome! Here’s how to make your first contribution:

  1. Find an issue - Look for issues labeled good first issue or help wanted
  2. Comment on the issue - Let us know you’re working on it
  3. Fork and clone - Create your own fork and clone it locally
  4. Set up your environment - Follow the Development Setup guide
  5. Make your changes - Implement your fix or feature
  6. Submit a PR - Create a pull request with your changes

Finding Work

  • Good First Issues - Tagged issues suitable for newcomers
  • Help Wanted - Issues where we’d appreciate community help
  • Bug Reports - Always welcome to fix reported bugs
  • Feature Requests - Check if a feature request needs implementation
  • Documentation - Help improve our docs

Development Workflow

Branch Strategy

  • main - Stable release branch
  • Feature branches - feature/description or fix/description
  • Always branch from main
git checkout main
git pull origin main
git checkout -b feature/my-new-feature

Making Changes

  1. Write code following our style guidelines
  2. Test your changes locally
  3. Commit frequently with clear messages
  4. Push to your fork regularly
  5. Keep your branch updated with main
# Keep your branch up to date
git fetch origin
git rebase origin/main

# Or merge if you prefer
git merge origin/main

Before Submitting

Checklist before creating a pull request:

  • All tests pass locally
  • Code follows style guidelines
  • New tests added for new functionality
  • Documentation updated if needed
  • Commit messages follow conventions
  • No merge conflicts with main
  • Changes are focused and minimal

Code Style and Standards

Rust Code Style

Formatting:

# Format all Rust code
cargo fmt

# Check formatting without changing
cargo fmt -- --check

Linting:

# Run clippy
cargo clippy --all-targets --all-features

# Fix auto-fixable warnings
cargo clippy --fix

Best Practices:

  • Use meaningful variable and function names
  • Write doc comments for public APIs
  • Keep functions focused and reasonably sized
  • Prefer explicit error handling over unwrap()
  • Use Result<T, E> for operations that can fail
  • Follow the Rust API Guidelines

Example:

#![allow(unused)]
fn main() {
/// Retrieves a campaign by ID from the database.
///
/// # Arguments
/// * `conn` - Database connection
/// * `id` - Campaign ID to retrieve
///
/// # Returns
/// * `Ok(Campaign)` - The campaign if found
/// * `Err(String)` - Error message if not found
pub fn get_campaign(conn: &mut SqliteConnection, id: i32) -> Result<Campaign, String> {
    campaigns::table
        .find(id)
        .first(conn)
        .map_err(|e| format!("Failed to get campaign: {}", e))
}
}

TypeScript/Vue Code Style

Type Safety:

  • Always use TypeScript, not JavaScript
  • Define interfaces for all data structures
  • Avoid any type unless absolutely necessary
  • Use strict mode in tsconfig.json

Vue Best Practices:

  • Use Composition API with <script setup>
  • Keep components focused and single-purpose
  • Props should have types and validators
  • Emit events with proper typing
  • Use composables for reusable logic

Example:

<script setup lang="ts">
import { ref, computed } from 'vue';
import type { Campaign } from '@/types/campaigns';

interface Props {
  campaign: Campaign;
  editable?: boolean;
}

const props = withDefaults(defineProps<Props>(), {
  editable: false
});

const emit = defineEmits<{
  save: [campaign: Campaign];
  cancel: [];
}>();

const localCampaign = ref({ ...props.campaign });

const hasChanges = computed(() => {
  return JSON.stringify(localCampaign.value) !== JSON.stringify(props.campaign);
});

function handleSave() {
  emit('save', localCampaign.value);
}
</script>

General Conventions

Naming:

  • Rust: snake_case for functions/variables, PascalCase for types
  • TypeScript: camelCase for variables/functions, PascalCase for classes/interfaces
  • Files: Match the primary export name

Comments:

  • Write self-documenting code
  • Add comments for complex logic
  • Doc comments for public APIs
  • No commented-out code in commits

Prohibited:

  • No emojis in code, comments, or commit messages
  • No references to Claude or Anthropic in commit messages
  • No hardcoded secrets or credentials
  • No console.log in production code (use logging frameworks)

Testing Guidelines

Rust Testing

Unit Tests:

#![allow(unused)]
fn main() {
#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_campaign_creation() {
        let campaign = Campaign::new("Test Campaign");
        assert_eq!(campaign.name, "Test Campaign");
        assert_eq!(campaign.stage, CampaignStage::Spark);
    }
}
}

Integration Tests: Place in tests/ directory:

#![allow(unused)]
fn main() {
use mimir_dm_core::{establish_connection, run_migrations};

#[test]
fn test_database_integration() {
    let mut conn = establish_connection(":memory:").unwrap();
    run_migrations(&mut conn).unwrap();
    // Test database operations
}
}

Frontend Testing

Component Tests:

import { describe, it, expect } from 'vitest';
import { mount } from '@vue/test-utils';
import CampaignCard from '@/components/CampaignCard.vue';

describe('CampaignCard', () => {
  it('renders campaign name', () => {
    const wrapper = mount(CampaignCard, {
      props: {
        campaign: { id: 1, name: 'Test Campaign' }
      }
    });
    expect(wrapper.text()).toContain('Test Campaign');
  });
});

Running Tests

# All tests
cargo test --workspace
cd crates/mimir/frontend && npm test

# Unit tests only
angreal test unit

# With coverage
npm run test:coverage

# Specific test
cargo test test_campaign_creation

Pull Request Process

1. Prepare Your PR

  • Ensure all tests pass
  • Update documentation
  • Write a clear PR description
  • Reference related issues

2. PR Description Template

## Description
Brief description of what this PR does

## Related Issues
Fixes #123
Related to #456

## Changes Made
- Added feature X
- Fixed bug Y
- Updated documentation for Z

## Testing
- [ ] Unit tests added/updated
- [ ] Integration tests added/updated
- [ ] Manually tested on macOS/Windows/Linux

## Checklist
- [ ] Code follows style guidelines
- [ ] Self-review completed
- [ ] Documentation updated
- [ ] No new warnings
- [ ] Tests pass locally

3. Review Process

  • Maintainers will review your PR
  • Address feedback and requested changes
  • Keep discussion focused and professional
  • Be patient - reviews may take a few days

4. After Approval

  • PR will be merged to main
  • Your contribution will be included in the next release
  • Thank you for contributing!

Architecture Overview

System Architecture

Mimir follows a clean architecture pattern with clear separation of concerns:

┌─────────────────────────────────────────┐
│         Frontend (Vue 3 + TS)          │
│  ┌──────────────────────────────────┐  │
│  │ Components, Views, Stores        │  │
│  └──────────────────────────────────┘  │
└─────────────────┬───────────────────────┘
                  │ Tauri IPC
┌─────────────────▼───────────────────────┐
│      Tauri Desktop Shell (Rust)        │
│  ┌──────────────────────────────────┐  │
│  │ Commands, Services, State        │  │
│  └──────────────┬───────────────────┘  │
└─────────────────┼───────────────────────┘
                  │
┌─────────────────▼───────────────────────┐
│      mimir-core (Business Logic)    │
│  ┌──────────────────────────────────┐  │
│  │ Services, DAL, Domain Models     │  │
│  └──────────────┬───────────────────┘  │
└─────────────────┼───────────────────────┘
                  │
┌─────────────────▼───────────────────────┐
│      Database (SQLite + Diesel)        │
└─────────────────────────────────────────┘

Key Crates

  • mimir - Tauri app shell and command handlers
  • mimir-core - Business logic, domain models, database
  • mimir-mcp - MCP server for Claude Code integration
  • mimir-print - PDF generation via Typst

Design Principles

  1. Local-First - All data stored locally, no cloud dependencies
  2. Privacy-First - No telemetry, no tracking, user data stays local
  3. Type Safety - Strong typing in both Rust and TypeScript
  4. Separation of Concerns - Clear boundaries between layers
  5. Testability - Write testable code with good test coverage
  6. Domain-Driven Design - Model the D&D campaign management domain
  7. Progressive Enhancement - Core features work without LLM
  8. Cross-Platform - Native experience on Windows, macOS, Linux

Release Process

Version Numbering

We follow Semantic Versioning:

  • MAJOR.MINOR.PATCH (e.g., 0.1.0)
  • MAJOR: Breaking changes
  • MINOR: New features, backwards compatible
  • PATCH: Bug fixes, backwards compatible

Release Steps

  1. Update version in all Cargo.toml files
  2. Update version in package.json
  3. Update version in tauri.conf.json
  4. Create git tag: git tag vX.Y.Z
  5. Push tag: git push origin vX.Y.Z
  6. GitHub Actions builds and creates release

Questions and Help

Getting Help

  • Documentation - Check this guide and DEVELOPMENT.md
  • Issues - Search existing issues or create a new one
  • Discussions - Use GitHub Discussions for questions
  • Pull Requests - Ask questions in PR comments

Maintainer Response Times

  • Issues: Usually within 1-3 days
  • PRs: Usually within 3-7 days
  • Critical bugs: Within 24 hours when possible

Recognition

Contributors are recognized in:

  • Git commit history
  • Release notes
  • Project documentation
  • GitHub contributors page

Thank you for contributing to Mimir!

Development Setup and Guide

This comprehensive guide covers everything you need to know about developing Mimir, from initial setup to advanced development workflows.

Table of Contents

  1. Environment Setup
  2. Building and Running
  3. Project Architecture
  4. Development Workflows
  5. Testing Strategy
  6. Debugging Techniques
  7. Database Management
  8. Frontend Development
  9. Tauri-Specific Considerations
  10. Common Tasks

Environment Setup

System Requirements

  • macOS: 10.15 (Catalina) or later
  • Windows: Windows 10 or later
  • Linux: Any modern distribution with glibc 2.31+

Required Tools

Rust Toolchain

# Install rustup (Rust version manager)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Verify installation
rustc --version
cargo --version

Node.js and npm

# macOS (via Homebrew)
brew install node

# Windows (via installer)
# Download from https://nodejs.org

# Linux (via package manager)
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs

# Verify installation
node --version  # Should be v18 or higher
npm --version

Platform-Specific Dependencies

macOS Setup

# Install Xcode Command Line Tools
xcode-select --install

# Install Homebrew (if not already installed)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Optional: Install additional development tools
brew install git gh

Linux Setup (Ubuntu/Debian)

# Update package lists
sudo apt-get update

# Install required dependencies
sudo apt-get install -y \
  libwebkit2gtk-4.1-dev \
  build-essential \
  curl \
  wget \
  file \
  libssl-dev \
  libgtk-3-dev \
  libayatana-appindicator3-dev \
  librsvg2-dev \
  patchelf

# Optional: Install git and gh
sudo apt-get install -y git gh

Linux Setup (Fedora)

sudo dnf install \
  webkit2gtk4.1-devel \
  openssl-devel \
  curl \
  wget \
  file \
  libappindicator-gtk3-devel \
  librsvg2-devel \
  patchelf

sudo dnf groupinstall "C Development Tools and Libraries"

Windows Setup

  1. Install Visual Studio Build Tools
  2. Install Git for Windows
  3. Install Node.js
  4. Install Rust via rustup-init.exe

Optional Development Tools

# Tauri CLI (faster startup for dev mode)
cargo install tauri-cli

# Angreal (test runner)
pip install 'angreal>=2'

# Diesel CLI (database migrations)
cargo install diesel_cli --no-default-features --features sqlite

# GitHub CLI (for PR management)
brew install gh  # macOS
# or download from https://cli.github.com/

IDE Setup

Install these extensions:

  • rust-analyzer - Rust language support
  • Tauri - Tauri development tools
  • Volar - Vue 3 language support
  • ESLint - JavaScript/TypeScript linting
  • Error Lens - Inline error messages

Settings:

{
  "rust-analyzer.checkOnSave.command": "clippy",
  "editor.formatOnSave": true,
  "[rust]": {
    "editor.defaultFormatter": "rust-lang.rust-analyzer"
  },
  "[typescript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[vue]": {
    "editor.defaultFormatter": "Vue.volar"
  }
}

IntelliJ IDEA / CLion

  • Install Rust plugin
  • Install Vue.js plugin
  • Enable Tauri support

Building and Running

Initial Build

# Clone repository
git clone https://github.com/mimir/mimir.git
cd mimir

# Build Rust workspace
cargo build

# Install frontend dependencies
cd crates/mimir/frontend
npm install
cd ../../..

Development Mode

# Run with hot reload (from project root)
cd crates/mimir
cargo tauri dev

# Or using installed tauri-cli
cd crates/mimir
tauri dev

This starts:

  • Vite dev server for frontend (hot reload)
  • Rust backend in debug mode
  • Application window with DevTools available

Production Build

# Build optimized release
cd crates/mimir
cargo tauri build

# Output locations:
# macOS: target/release/bundle/dmg/
# Windows: target/release/bundle/msi/
# Linux: target/release/bundle/deb/ and target/release/bundle/appimage/

Project Architecture

Workspace Structure

mimir/
├── Cargo.toml                 # Workspace configuration
├── crates/
│   ├── mimir/             # Main application
│   ├── mimir-core/        # Business logic
│   ├── mimir-mcp/         # MCP server for Claude Code
│   └── mimir-print/       # PDF generation
├── docs/                      # Documentation
├── data/                      # D&D reference data
└── .metis/                   # Project management

Architecture Layers

Frontend Layer (Vue 3 + TypeScript)

  • Views: Page-level components
  • Components: Reusable UI components
  • Stores: Pinia state management
  • Services: API wrappers for Tauri commands

Application Layer (Tauri + Rust)

  • Commands: IPC handlers
  • Services: Application-level business logic
  • State: Application state management

Domain Layer (mimir-core)

  • Models: Domain entities
  • Services: Business logic
  • DAL: Data access layer
  • Migrations: Database schema

Infrastructure Layer

  • Database: SQLite with Diesel ORM
  • LLM: Ollama integration
  • File System: Campaign data storage

Data Flow

User Interaction
      ↓
Vue Component
      ↓
Pinia Store / API Service
      ↓
Tauri Command (IPC)
      ↓
Command Handler
      ↓
Core Service
      ↓
Repository (DAL)
      ↓
Database

Development Workflows

Feature Development

  1. Create Feature Branch
git checkout -b feature/my-feature
  1. Implement Feature
  • Add backend logic in mimir-core
  • Add Tauri command in mimir/src/commands
  • Add frontend UI in mimir/frontend/src
  1. Test Locally
cargo test --workspace
cd crates/mimir/frontend && npm test
  1. Commit and Push
git add .
git commit -m "Add feature description"
git push origin feature/my-feature

Bug Fix Workflow

  1. Reproduce the Bug
  • Create a failing test
  • Document reproduction steps
  1. Fix the Issue
  • Implement fix
  • Verify test passes
  1. Test Edge Cases
  • Add additional tests
  • Manual testing
  1. Submit PR

Adding a New Page

  1. Create Vue Component
# In crates/mimir/frontend/src/views/
touch MyNewView.vue
  1. Add Route
// In crates/mimir/frontend/src/app/router.ts
{
  path: '/my-new-page',
  name: 'MyNewPage',
  component: () => import('@/views/MyNewView.vue')
}
  1. Add Navigation
<!-- In layout component -->
<router-link to="/my-new-page">My New Page</router-link>

Adding a New Tauri Command

  1. Create Command Function
#![allow(unused)]
fn main() {
// In crates/mimir/src/commands/my_commands.rs
#[tauri::command]
pub async fn my_new_command(
    db_service: State<'_, Arc<DatabaseService>>,
    param: String,
) -> Result<String, String> {
    let mut conn = db_service.get_connection()
        .map_err(|e| format!("Database error: {}", e))?;

    // Business logic here
    Ok(format!("Processed: {}", param))
}
}
  1. Register Command
#![allow(unused)]
fn main() {
// In crates/mimir/src/main.rs
.invoke_handler(tauri::generate_handler![
    commands::my_new_command,
    // ... other commands
])
}
  1. Call from Frontend
// In frontend service
import { invoke } from '@tauri-apps/api/core';

export async function myNewCommand(param: string): Promise<string> {
  return await invoke<string>('my_new_command', { param });
}

Testing Strategy

Rust Testing

Unit Tests

#![allow(unused)]
fn main() {
// In same file as implementation
#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_feature() {
        let result = my_function();
        assert_eq!(result, expected);
    }
}
}

Integration Tests

#![allow(unused)]
fn main() {
// In tests/integration_test.rs
use mimir_dm_core::*;

#[test]
fn test_database_workflow() {
    let mut conn = establish_connection(":memory:").unwrap();
    run_migrations(&mut conn).unwrap();

    // Test full workflow
}
}

Running Rust Tests

# All tests
cargo test --workspace

# Specific crate
cargo test -p mimir-core

# Specific test
cargo test test_campaign_creation

# With output
cargo test -- --nocapture

# Unit tests only (via angreal)
angreal test unit

Frontend Testing

Component Tests

// In crates/mimir/frontend/src/components/__tests__/
import { describe, it, expect } from 'vitest';
import { mount } from '@vue/test-utils';
import MyComponent from '../MyComponent.vue';

describe('MyComponent', () => {
  it('renders correctly', () => {
    const wrapper = mount(MyComponent, {
      props: { title: 'Test' }
    });
    expect(wrapper.text()).toContain('Test');
  });
});

Running Frontend Tests

cd crates/mimir/frontend

# Run tests
npm test

# Watch mode
npm test -- --watch

# Coverage
npm run test:coverage

# UI mode
npm run test:ui

Debugging Techniques

Rust Debugging

#![allow(unused)]
fn main() {
use tracing::{info, debug, warn, error};

debug!("Variable value: {:?}", my_var);
info!("Operation started");
warn!("Unusual condition: {}", condition);
error!("Operation failed: {}", err);
}

VS Code Debugging

  1. Install CodeLLDB extension
  2. Add .vscode/launch.json:
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "lldb",
      "request": "launch",
      "name": "Debug Tauri",
      "cargo": {
        "args": ["build", "--manifest-path=crates/mimir/Cargo.toml"]
      },
      "cwd": "${workspaceFolder}"
    }
  ]
}

Frontend Debugging

Browser DevTools

  • Right-click in app → “Inspect Element”
  • Console tab for logs
  • Network tab for Tauri commands
  • Vue DevTools for component inspection

Console Logging

console.log('Debug:', variable);
console.warn('Warning:', condition);
console.error('Error:', error);

Database Debugging

# Open development database (macOS)
sqlite3 ~/Library/Application\ Support/com.mimir.app/dev/mimir.db

# Common commands
.tables                # List tables
.schema campaigns      # Show table structure
SELECT * FROM campaigns;  # Query data
.quit                  # Exit

Database Management

Migrations

Creating a Migration

cd crates/mimir-core
diesel migration generate add_new_feature

# Edit migrations/YYYY-MM-DD-HHMMSS_add_new_feature/up.sql
# Edit migrations/YYYY-MM-DD-HHMMSS_add_new_feature/down.sql

Running Migrations

# Apply migrations
diesel migration run

# Rollback last migration
diesel migration revert

# Test migration cycle
diesel migration redo

Development Database Location

  • macOS: ~/Library/Application Support/com.mimir.app/dev/mimir.db
  • Linux: ~/.local/share/com.mimir.app/dev/mimir.db
  • Windows: %APPDATA%\com.mimir.app/dev\mimir.db

Resetting Development Database

# macOS
rm -rf ~/Library/Application\ Support/com.mimir.app/dev/

# Linux
rm -rf ~/.local/share/com.mimir.app/dev/

# Windows
# Delete folder: %APPDATA%\com.mimir.app/dev\

# Restart app to recreate
cargo tauri dev

Frontend Development

Hot Reload

Changes to Vue components, TypeScript, and CSS hot reload automatically:

  • Save file
  • Browser refreshes automatically
  • State may reset depending on change

State Management (Pinia)

// Define store
import { defineStore } from 'pinia';

export const useCampaignStore = defineStore('campaign', () => {
  const campaigns = ref<Campaign[]>([]);

  async function loadCampaigns() {
    campaigns.value = await invoke('list_campaigns');
  }

  return { campaigns, loadCampaigns };
});

// Use in component
const campaignStore = useCampaignStore();
await campaignStore.loadCampaigns();

Calling Tauri Commands

import { invoke } from '@tauri-apps/api/core';

// Basic invocation
const result = await invoke<string>('command_name', { param: value });

// With error handling
try {
  const data = await invoke<Campaign>('get_campaign', { id: campaignId });
} catch (error) {
  console.error('Failed to get campaign:', error);
}

Tauri-Specific Considerations

IPC Communication

Commands run in separate thread from UI:

  • Always async
  • Data must be serializable
  • Large data may have performance impact

File System Access

#![allow(unused)]
fn main() {
// Use tauri::api::path for cross-platform paths
use tauri::api::path::{app_data_dir, app_config_dir};

let data_dir = app_data_dir(&config).unwrap();
}

Window Management

import { getCurrent } from '@tauri-apps/api/window';

const appWindow = getCurrent();
await appWindow.setTitle('New Title');
await appWindow.maximize();

Common Tasks

Updating Dependencies

# Rust dependencies
cargo update

# Frontend dependencies
cd crates/mimir/frontend
npm update

Formatting Code

# Rust
cargo fmt

# TypeScript/Vue
cd crates/mimir/frontend
npm run lint

Running Clippy

cargo clippy --all-targets --all-features

# Fix auto-fixable issues
cargo clippy --fix

Type Checking Frontend

cd crates/mimir/frontend
npm run type-check

Performance Optimization

Profiling Rust Code

cargo build --release --profile=profiling
# Use profiling tools like flamegraph or perf

Frontend Performance

  • Use Vue DevTools performance tab
  • Check bundle size: npm run build -- --analyze
  • Lazy load routes and heavy components

Additional Resources

Getting Help

  • Check CONTRIBUTING.md for contribution guidelines
  • Search GitHub Issues
  • Review crate READMEs for detailed architecture info
  • Ask questions in pull request comments

Mimir Architecture

This document provides a high-level overview of the Mimir codebase architecture for developers.

Crate Overview

Mimir is organized as a Cargo workspace with 4 crates:

┌─────────────────────────────────────────────────────────┐
│                    mimir (Main App)                      │
│                   Tauri Desktop Application              │
└─────────────────────────┬───────────────────────────────┘
                          │
        ┌─────────────────┼─────────────────┐
        ▼                 ▼                 ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│  mimir-core   │ │  mimir-mcp    │ │  mimir-print  │
│  Core Logic   │ │  MCP Server   │ │  PDF Export   │
└───────────────┘ └───────────────┘ └───────────────┘

mimir-core

The heart of the system containing:

  • Models: Domain types for campaigns, characters, D&D catalog data
  • Services: Business logic (28 services)
  • DAL: Data Access Layer with repository traits
  • Migrations: 35 Diesel migrations for SQLite schema

mimir-mcp

MCP (Model Context Protocol) server for Claude Code integration:

  • Campaign, module, character, and catalog tools
  • Uses DAL directly for database access

mimir-print

PDF generation using Typst:

  • Character sheets
  • Campaign documents
  • Markdown to Typst conversion

mimir

Tauri desktop application:

  • Commands: 50+ Tauri command handlers
  • Services: LLM integration, context management
  • State: Consolidated AppState struct

Request Flow

┌──────────┐    ┌─────────────┐    ┌─────────────┐    ┌──────────┐
│ Frontend │───▶│   Tauri     │───▶│   Service   │───▶│ Database │
│ (Vue 3)  │    │  Command    │    │   Layer     │    │ (SQLite) │
└──────────┘    └─────────────┘    └─────────────┘    └──────────┘
     ▲                │                   │
     │                ▼                   │
     │         ┌─────────────┐           │
     └─────────│  AppState   │◀──────────┘
               │  (db, paths) │
               └─────────────┘

Typical Command Flow

  1. Frontend invokes Tauri command (e.g., get_campaign)
  2. Tauri Command extracts State<AppState> and parameters
  3. Service performs business logic, accesses database
  4. Response returned to frontend as JSON

Example:

#![allow(unused)]
fn main() {
#[tauri::command]
pub async fn get_campaign(
    campaign_id: i32,
    state: State<'_, AppState>,
) -> Result<ApiResponse<Campaign>, ApiError> {
    let mut conn = state.db.get_connection()?;
    let campaign = CampaignService::get_by_id(&mut conn, campaign_id)?;
    Ok(ApiResponse::success(campaign))
}
}

Database Design

See ADR-0001 for denormalized design rationale.

Key Design Decisions

  • Denormalized: Child entities (subclasses, subraces) contain full parent data
  • JSON Columns: Complex/variable data stored as JSON (see ADR-0003)
  • Multi-Ruleset: Content organized by rule system and source (see ADR-0002)

Schema Overview (37 tables)

Campaign Management:

  • campaigns, modules, sessions
  • documents, template_documents
  • workflow_cards

D&D Catalog:

  • catalog_* tables for each entity type (spells, monsters, items, etc.)
  • uploaded_books, catalog_sources

Characters:

  • players, characters, character_versions
  • campaign_players (links players to campaigns)

Service Layer

Services follow the stateful pattern per ADR-0005:

#![allow(unused)]
fn main() {
pub struct SpellService<'a> {
    pub conn: &'a mut SqliteConnection,
}

impl<'a> SpellService<'a> {
    pub fn new(conn: &'a mut SqliteConnection) -> Self {
        Self { conn }
    }

    pub fn search(&mut self, filters: SpellFilters) -> Result<Vec<SpellSummary>> {
        // Query logic
    }
}
}

Service Categories

CategoryServicesPurpose
CampaignCampaignService, ModuleService, SessionServiceCampaign management
CatalogSpellService, MonsterService, ItemService, etc.D&D reference data
CharacterCharacterService, CharacterCreationServicePC/NPC management
ContentDocumentService, TemplateServiceDocument management

Key Patterns

Error Handling

#![allow(unused)]
fn main() {
// Application-level errors
pub enum MimirError {
    Database(DbError),
    Print(String),
    Llm(String),
    NotFound(String),
    // ...
}

// Database-level errors
pub enum DbError {
    NotFound { entity_type, id },
    ConstraintViolation { field, message },
    Query(diesel::result::Error),
    // ...
}
}

State Management

AppState consolidates all shared state:

#![allow(unused)]
fn main() {
pub struct AppState {
    pub db: Arc<DatabaseService>,       // Database connection pool
    pub paths: Arc<AppPaths>,           // Application paths
}
}

Directory Structure

crates/
├── mimir/                    # Main Tauri app
│   ├── src/
│   │   ├── main.rs             # Entry point
│   │   ├── state.rs            # AppState
│   │   ├── commands/           # Tauri commands
│   │   │   ├── catalog/        # D&D reference commands
│   │   │   ├── campaign/       # Campaign management
│   │   │   ├── character/      # Character operations
│   │   │   └── chat/           # LLM chat commands
│   │   └── services/           # Business logic
│   │       ├── llm/            # LLM integration
│   │       └── tools/          # LLM tool implementations
│   └── frontend/               # Vue 3 frontend
│
├── mimir-core/              # Core business logic
│   ├── src/
│   │   ├── models/             # Domain models
│   │   │   ├── catalog/        # D&D entity types
│   │   │   └── campaign/       # Campaign types
│   │   ├── services/           # Business logic services
│   │   ├── dal/                # Data access layer
│   │   └── migrations/         # Database migrations
│
├── mimir-mcp/                  # MCP server for Claude Code
│   ├── src/
│   │   ├── context.rs          # Database context
│   │   └── tools/              # MCP tool handlers
│   └── plugin/                 # Claude Code plugin definition
│
└── mimir-print/                # PDF generation
    └── src/
        └── sections/           # PDF section renderers

Development Guidelines

Adding a New Catalog Entity

  1. Create model in mimir-core/src/models/catalog/
  2. Add migration in mimir-core/migrations/
  3. Create service in mimir-core/src/services/
  4. Add Tauri commands in mimir/src/commands/catalog/
  5. Update schema.rs after migration

Testing

# Run all tests
cargo test --workspace

# Run core tests only
cargo test -p mimir-core

# Run specific test
cargo test test_name