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:
- Your First Campaign - Create a campaign and explore the dashboard
- Your First Module - Build an adventure with maps and monsters
- Running Your First Session - Use Play Mode to run an encounter
- 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:
| Section | Purpose |
|---|---|
| Tutorials | Step-by-step learning guides |
| How-To Guides | Task-focused instructions |
| Reference | Detailed feature documentation |
| Understanding Mimir | Concepts and design philosophy |
Download
Get the latest release from GitHub Releases.
Supported Platforms: macOS, Windows, Linux
Getting Help
- Issues: Report bugs on GitHub Issues
- Discussions: Ask questions on GitHub Discussions
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.”

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
- Click the Campaign Selector dropdown in the header
- Click + New Campaign
Option B: Direct Navigation
- Navigate to
/campaigns/newin 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:
- Create the campaign in the database
- 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.

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:
- Create your first module - Build an adventure with maps and encounters
- Add characters - Create PCs for your players
- Explore the Reference - Browse monsters, spells, and items for inspiration
Quick Reference
| Action | How To |
|---|---|
| Create campaign | Campaign Selector → + New Campaign |
| Switch campaigns | Campaign Selector dropdown |
| Access dashboard | Click campaign name in selector |
| Export backup | Dashboard → Export Archive |
| Return home | Click 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
- Open your campaign from the Campaign Selector
- Click the Modules tab in the dashboard
You’ll see the module sidebar (left) and the main panel (right).

Step 2: Create a Module
- Click the + button in the Modules section
- 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
- 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
-
In the Maps section, click the + button
-
Choose your map file:
- Image files (PNG, JPG, WebP) - Standard map images
- UVTT files - Universal VTT format with embedded grid data
-
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
-
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.
- Click a map card in the Maps section
- 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 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
- In the Token Palette, click Monster
- Search for a monster by name (e.g., “Goblin”, “Wolf”, “Bugbear”)
- Select a monster from the search results
- Configure token options (size, color, visibility)
- 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:
-
In the Token Palette, find the Light Sources section
-
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
-
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:
-
Click the Grid button in the canvas controls
-
Adjust settings:
- Grid Size - Pixels per square
- X Offset - Horizontal shift
- Y Offset - Vertical shift
-
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:
- Run your first session - Use Play Mode to run an encounter
- Add more content - Upload additional maps, add NPCs, create documents
- Prepare multiple modules - Create the next chapter of your adventure
Quick Reference
| Action | How To |
|---|---|
| Create module | Modules tab → + button |
| Upload map | Maps section → + button |
| Open token setup | Click a map card |
| Add monsters | Token Setup → Monster → search → click map |
| Place token | Select in palette → click map |
| Add light source | Light Sources → select → click map |
| Toggle light | Token Inventory → Lit/Unlit button |
| Configure grid | Grid 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
- Open your campaign and go to the Modules tab
- Select your module from the sidebar
- Click the Play button in the module header
From the Maps List
- In the module dashboard, find your map in the Maps section
- 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
Left Sidebar
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
- Click and hold a token
- Drag to the new position
- 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
- PC tokens reveal fog - Only PCs with “visible to players” reveal areas
- NPCs don’t reveal - NPC tokens don’t create vision
- 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
- Click Player Display in the header
- A new window opens (drag to your player-facing screen)
- 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
- Click Session Notes bar to expand
- Type your notes
- Notes auto-save as you type
- 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:
- Click End Session in the header
- You return to the module dashboard
- Session notes are saved
- 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
| Action | How To |
|---|---|
| Enter Play Mode | Module dashboard → Play button |
| Exit Play Mode | End Session button |
| Switch maps | Click map in sidebar |
| Move token | Drag and drop |
| View monster stats | Click monster in sidebar |
| Toggle fog mode | LOS toggle (Fog/Token) |
| Set ambient light | Light dropdown |
| Open player display | Player Display button |
| Blackout display | Eye icon (when display open) |
| Take notes | Session 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 tokens | Fog of war applied |
| Monster names and stats | Token images only |
| Hidden tokens visible | Hidden tokens invisible |
| All controls and tools | Clean, 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:
- Open display settings
- Set to “Extend” (not “Mirror”)
- Arrange screens to match physical layout
- Note which screen is secondary
Step 2: Enter Play Mode
- Open your campaign
- Go to the Modules tab
- Select a module and click Play
- Make sure a map is active (click one in the sidebar)
Step 3: Open the Player Display
In the Play Mode header:
- Click the Player Display button
- A new window opens
- The button changes to show “Display Open”

Position the Window
Drag the Player Display window to your secondary screen:
- Click and hold the window title bar
- Drag to the player-facing screen
- 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)

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


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:
- Find the Reveal Map toggle in the toolbar
- Enable it to bypass fog of war
- 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:
| Level | Effect |
|---|---|
| Bright | Normal visibility, full colors |
| Dim | Reduced visibility, muted colors |
| Dark | Only 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:
- Click Blackout to hide everything from players
- The player screen goes completely black
- 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
- Click the Sync button to disable auto-sync
- Navigate freely on your screen
- Click Push View when ready to update players
Use Cases
| Scenario | Sync Setting |
|---|---|
| Guided dungeon crawl | Auto-sync ON |
| Combat positioning | Auto-sync OFF, push when ready |
| Looking ahead secretly | Auto-sync OFF |
| Theater of the mind | Blackout ON |
Step 8: Closing the Display
When your session ends:
- Click Player Display button again, or
- Close the player display window directly
- 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
| Action | How To |
|---|---|
| Open player display | Play Mode → Player Display button |
| Close player display | Click button again or close window |
| Blackout | Eye icon (when display open) |
| Reveal entire map | Reveal Map toggle |
| Change lighting | Ambient light dropdown |
| Sync views | Sync button (toggle) |
| Push current view | Push 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 - Start a new campaign
- Manage Documents - Organize campaign documents
- Export Campaign - Backup and transfer campaigns
Create a Campaign
This guide shows you how to create a new campaign in Mimir.

Steps
- Open the Campaign Selector in the header bar
- Click + New Campaign
- Fill in the campaign details:
- Campaign Name (required) - A descriptive name
- Description (optional) - Notes about your campaign
- 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
- Go to the Campaign Dashboard
- Click the Campaign tab
- Use the document sidebar to create new documents
Module Documents
- Open a module from the Modules tab
- Documents appear in the module dashboard
- 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
- Click a document to open the editor
- Use the rich text editor to write content
- Changes save automatically
- 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
- Open your campaign dashboard
- Click Export in the campaign header
- Choose a save location
- The campaign exports as a
.tar.gzarchive
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:
- From the Home Screen, click Import Campaign
- Select the
.tar.gzfile - The campaign appears in your campaign list
See Also
- Create a Campaign
- Print Maps - For PDF output
Maps
How-to guides for working with battle maps.
- Upload a Map - Add map images and UVTT files
- Configure Grid - Align the grid overlay
- Place Tokens - Add tokens to your map
- Manage Light Sources - Set up dynamic lighting
- Print Maps - Export maps for printing
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
- Open a module from the Modules tab
- Find the Maps section in the module dashboard
- Click the + button
- Choose your map file
- 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
- 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:
- Determine the grid size (pixels per square)
- Measure or estimate from the image
- 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
- Open the Token Setup modal (click a map)
- Click Grid in the canvas controls
- Adjust settings:
- Grid Size - Pixels per square
- X Offset - Horizontal shift in pixels
- Y Offset - Vertical shift in pixels
- Watch the grid overlay update in real-time
- Click Save when aligned
Finding the Right Grid Size
Method 1: Count Squares
- Measure the map width in pixels
- Count the number of squares horizontally
- Divide:
width ÷ squares = grid size
Method 2: Trial and Error
- Start with common values: 70, 100, or 140
- Adjust until the overlay matches
- 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.

Open Token Setup
- Navigate to a module (Modules tab → select module)
- Find your map in the Maps section
- 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
- Click a token in the palette
- Configure options (size, color, visibility)
- Click on the map where you want to place it
- 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
- Click and drag a token
- Move to the new position
- 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
| Type | Bright Light | Dim Light |
|---|---|---|
| Torch | 20 ft | 40 ft |
| Lantern | 30 ft | 60 ft |
| Candle | 5 ft | 10 ft |
Placing Light Sources
- Open Token Setup (click a map)
- Find Light Sources in the Token Palette
- Click a light type (Torch, Lantern, or Candle)
- 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
- Open Play Mode for your module
- Select the map you want to print
- Click Print in the toolbar
- Configure print options
- Click Export PDF
- Choose a save location
Print Options
- 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:
- Enable tiled mode
- Set your paper size
- Mimir generates pages that align when assembled
Token Cutouts
Generate circular token images:
- Enable token cutouts
- Choose cutout size
- 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 - Build a PC
- Create an NPC - Add non-player characters
- Assign to Campaign - Link characters to campaigns
- Print Character Sheet - Export character sheets
Create a Player Character
Create player characters using the character creation wizard.
Access the Character Creator
- Click Characters in the header
- Click + New Character
- 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
- Click a character in the list
- Open the character sheet
- Edit sections directly
- 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
- Click Characters in the header
- Click + New Character
- Select NPC
NPC Creation
NPC creation is simplified — only a name is required:
- Enter the NPC Name
- 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
| Type | Use Case |
|---|---|
| NPC | Named characters with personality |
| Monster | Combat 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
- Open your campaign
- Go to the PCs tab
- Click Add Character
- Select characters from the list
- Click Assign
From the Character List
- Click Characters in the header
- Find the character
- Click the character to open details
- Select a campaign from the dropdown
- Save changes
Assigning NPCs
Campaign-Level NPCs
- Open your campaign dashboard
- Go to the NPCs tab
- Click Add NPC
- Select or create an NPC
Module-Level NPCs
- Open a module
- Find the NPCs section
- Click + to add an NPC
- 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
- Find the character in the campaign tab
- Click the remove button
- 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
- Click Characters in the header
- Find and click the character
- Click Print or Export PDF
- Configure print options
- Save the PDF
Print Options
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 - Start a new adventure module
- Add Monsters - Add monsters from the catalog
- Module Documents - Organize module content
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.

Steps
- Open your campaign dashboard
- Go to the Modules tab
- Click the + button
- 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
- 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.

Steps
- Open a module from the Modules tab
- Click a map card to open Token Setup
- In the Token Palette, click Monster
- Search by name (e.g., “Goblin”, “Dragon”, “Zombie”)
- Select a monster from the results
- Configure token options (size, color, visibility)
- Click on the map to place the monster token
Monster Search
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:
- Search and select the monster
- Click on the map to place each one
- 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
- Open a module from the Modules tab
- Find the Documents section
- Click to create a new document
- Choose a template or start blank
Document Templates
Templates provide structure:
- Pre-filled sections
- Prompts for common content
- Consistent formatting
Editing Documents
- Click a document to open the editor
- Write your content
- Changes auto-save
- 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
- Manage Encounters - Run combat encounters
- Fog of War - Control visibility
- Use Player Display - Set up a second screen
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
- Open your campaign
- Go to the Modules tab
- Find your module in the modules table
- Click the Play button in the module’s row
You’re now in Play Mode.
Play Mode Interface

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:
- Select the starting map from the sidebar
- Position PC tokens on the map
- Open the Player Display (if using second screen)
- 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
- Click Add Token in the toolbar
- Search for a monster
- Click to add to the module
- 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
- Drag tokens to new positions
- Tokens snap to the grid
- 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.

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

- 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:
| Level | Effect |
|---|---|
| Bright | Full visibility within range |
| Dim | Muted colors, reduced perception |
| Dark | Only 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.

Opening the Display
- Enter Play Mode
- Click Player Display in the header
- A new window opens
- Drag the window to your player-facing screen
What Players See

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:
- Click the Blackout button (eye icon)
- Player screen goes black
- 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
- Disable Sync in the toolbar
- Navigate freely on your screen
- Click Push View to update player display
Switching Maps
- Click a different map in the sidebar
- Player display updates automatically
- 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 main landing page
- Campaign Dashboard - The central hub for campaign management
- Module Prep View - Preparing adventure modules
- Play Mode - Running game sessions
- Token Setup Modal - Placing and configuring tokens on maps
- Player Display - The player-facing display window
Home Screen
The Home Screen is your starting point in Mimir. From here you can access campaigns, characters, and reference materials.

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
| Action | How To |
|---|---|
| Open campaign | Campaign Selector dropdown → select campaign |
| Create campaign | Campaign Selector → + New Campaign |
| Access characters | Click “Characters” in header |
| Access reference | Click “Reference” in header |
| Open settings | Click 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.

Header
- Campaign Name - Displayed prominently at the top
- Export - Export campaign as
.tar.gzarchive - 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:
| Stage | Purpose |
|---|---|
| Pre-Production | Early ideas and planning |
| Production | Active development |
| Post-Production | Refinement and polish |
| Archive | Completed or retired content |
See Also
Module Prep View
The Module Prep View is where you prepare adventure content before running it in Play Mode.

Layout
Sidebar (Left)
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
| Action | How To |
|---|---|
| Create module | Click + next to “Modules” header |
| Select module | Click module in sidebar |
| Enter Play Mode | Click “Play” button |
| Upload map | Maps section → + button |
| Open Token Setup | Click a map card |
| Add document | Documents 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.

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
Sidebar (Left)
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:
| Control | Function |
|---|---|
| Zoom | +/- buttons, percentage display |
| Reset | Fit map to view |
| Add Token | Quick-add monster to map |
| Add PCs | Place all campaign PCs |
| Reveal Map | Toggle to bypass fog of war |
| LOS Toggle | Switch between Fog and Token modes |
| Debug | Visualize line of sight |
| Ambient Light | Bright, Dim, or Dark |
| Sync | Auto-sync view to player display |
| Push View | Manual 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.

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:
| Option | Description |
|---|---|
| Size | Tiny, Small, Medium, Large, Huge, Gargantuan |
| Color | Border color for identification |
| Visible | Whether 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
- Open Token Setup (click map)
- Select token type from palette
- Configure options if needed
- Click on map to place
- Repeat for all tokens
- Add light sources as needed
- 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.

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

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

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:
| Control | Function |
|---|---|
| Blackout | Show black screen to players |
| Reveal Map | Bypass fog of war entirely |
| Sync | Auto-mirror your pan/zoom |
| Push View | Manual view update |
| Ambient Light | Affects 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
- Disable Sync toggle
- Navigate freely on your screen
- 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
| Issue | Solution |
|---|---|
| Window on wrong screen | Drag to correct display, then maximize |
| Players see hidden tokens | Check token visibility settings |
| Fog not updating | Verify PCs are marked visible |
| No window opens | Check popup blocker settings |
See Also
Keyboard Shortcuts
Quick reference for keyboard shortcuts in Mimir.
Global Shortcuts
| Shortcut | Action |
|---|---|
Cmd/Ctrl + , | Open Settings |
Escape | Close modal/panel |
Map Navigation
| Shortcut | Action |
|---|---|
Scroll | Zoom in/out |
Click + Drag | Pan the map |
Cmd/Ctrl + 0 | Reset view (fit map) |
+ / - | Zoom in/out |
Token Manipulation
| Shortcut | Action |
|---|---|
Click | Select token |
Drag | Move token |
Right-click | Token context menu |
Delete | Delete selected token |
Play Mode
| Shortcut | Action |
|---|---|
Space | Toggle play/pause (if applicable) |
F11 | Toggle fullscreen (player display) |
B | Toggle blackout |
Document Editor
| Shortcut | Action |
|---|---|
Cmd/Ctrl + S | Save (auto-saves anyway) |
Cmd/Ctrl + B | Bold |
Cmd/Ctrl + I | Italic |
Cmd/Ctrl + Z | Undo |
Cmd/Ctrl + Shift + Z | Redo |
Notes
Cmdis used on macOS,Ctrlon 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:
| Format | Extension | Notes |
|---|---|---|
| PNG | .png | Best for maps with transparency |
| JPEG | .jpg, .jpeg | Good for photographic maps |
| WebP | .webp | Efficient compression |
UVTT Format
Universal Virtual Tabletop format:
| Extension | .uvtt, .dd2vtt |
|---|---|
| Source | Dungeondraft, other VTT tools |
| Contents | Map 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.gzarchive 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.
Recommended Workflows
Map Creation
- Create in Dungeondraft
- Export as UVTT
- Import to Mimir (grid auto-configured)
Backup
- Use Export Archive regularly
- Store
.tar.gzfiles externally - 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:
| Level | Description | Effect |
|---|---|---|
| Bright | Daylight, well-lit rooms | Full visibility |
| Dim | Twilight, torchlit | Reduced visibility |
| Dark | Underground, night | Darkvision or light required |
Light Sources
Light sources create areas of illumination:
| Source | Bright Light | Dim Light |
|---|---|---|
| Candle | 5 ft | 10 ft |
| Torch | 20 ft | 40 ft |
| Lantern | 30 ft | 60 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
- For each PC token, calculate vision radius
- Apply darkvision if applicable
- Add light source bonuses
- Check wall obstructions (UVTT)
- Union all PC vision areas
- 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:
- Campaign-level - The overarching story, recurring characters, world lore
- 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:
- Create campaign with basic info
- Add first module with first session content
- Expand as you play
- 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
- Create key documents as drafts
- Fill in essential content
- Mark complete when ready
Ongoing Preparation
- Add drafts as ideas come
- Review and polish before sessions
- Complete what you’ll need
During Play
- Session notes auto-save
- Add observations and outcomes
- 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:
- Base vision from ambient light
- Extended by darkvision (if applicable)
- Extended by light sources
- 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
-
Intrinsic Load: The inherent complexity of running D&D
- Rules adjudication
- NPC roleplay
- Combat management
-
Extraneous Load: Unnecessary mental burden
- Searching for information
- Remembering plot details
- Tracking campaign continuity
-
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:
- Start small: Implement just the Two-Board System
- Build habits: Establish your weekly workflow
- Add tools: Introduce templates as needed
- 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
| Stage | Purpose | Exit Criteria | Activities/Artifacts |
|---|---|---|---|
| Concept | Ideas and possibilities | • Spark defined • Potential identified | • Define campaign spark • Brainstorm Big Three • Sketch major arcs |
| Session Zero | Player-facing preparation | • Pitched to players • Player buy-in confirmed | • Write Campaign Pitch • Create Starting Scenario • Prepare handouts |
| Integration | Weaving into active play | • Connected to PC goals • Hooks planted in modules | • Connect PC backstories • Plant arc hooks in modules • Update Campaign Bible |
| Active | Currently affecting play | • Driving current events • Players engaged | • Track arc progress • Monthly reviews • Update thread status |
| Concluding | Wrapping 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
| Stage | Purpose | Exit Criteria | Activities/Artifacts |
|---|---|---|---|
| Backlog | Future possibilities | • Concept clear • General scope known | • Sketch module concepts • Identify potential hooks |
| Planning | Active development | • Hook established • Front matter complete | • Write Module Overview • Add catalog references • Design critical path |
| Development | Detailed creation | • Adventure content written • Encounters detailed | • Create adventure scenes • Write read-aloud text • Add DM notes |
| Ready | Prepared to run | • Complete and runnable • Materials synced | • Final review • Sync front matter to files • Prepare handouts |
| Active | Currently running | • In play now • Tracking progress | • Run the module • Capture play notes • Track consequences |
| Completed | Finished 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
- Review where you are in the active module
- Note which scenes/encounters are likely next
- Pull NPC information from your synced files
- 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:
- Start a new campaign: Follow the Campaign Genesis Process to build from spark to first session
- Create your first module: Use the Module Creation Workflow to design sustainable story arcs
- Master running the game: Apply Running the Game techniques for consistent quality
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:
- Core Conflict: The fundamental tension driving the campaign
- 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!)
- 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:
- Campaign Pitch (1 page): Elevator pitch for players
- Big Three Document (1 page): Core elements defined
- First Adventure Outline (1-2 pages): Your notes for the opening sessions
- 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:
- Starting Scenario (sent first): Immediate situation, where they are, recent events
- World Primer (sent with packet): Deeper context, history, factions, cultures
- 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:
- Starting Scenario (1-2 pages) - Send 1 week before Session Zero
- Session Zero Packet (5-6 pages total) - Send 3-4 days before
- World Primer (builds on Starting Scenario)
- Character Guidelines
- Table Expectations
- Character Integration Forms - Have ready at Session Zero
- Rules Reference Sheet - Have ready at Session Zero
- Campaign Calendar (if using)
- 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:
- Concept Development - Transform ideas into actionable concepts
- Structure Design - Build the module’s skeleton
- Population - Fill with NPCs, locations, and encounters
- 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:
- Entrance/Guardian: Initial challenge establishing tone
- Puzzle/Roleplay: Non-combat challenge requiring thought
- Setback/Twist: Complication changing the situation
- Climax/Boss: Major confrontation or decision
- 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:
- Quest Giver: Who presents the module?
- Primary Antagonist: Who opposes the players?
- Key Informant: Who provides crucial information?
- Wild Card: Who complicates matters?
- 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:
- Combat Path: Fight everything possible?
- Social Path: Talk their way through?
- 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:
- Concept (2-3 hours): Core conflict, stakes, hook
- Structure (2-3 hours): Session breakdown, critical path
- Population (3-4 hours): NPCs, locations, clues
- 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:
- Entrance: Crime scene discovery (body/theft/disappearance)
- Puzzle: Interviewing suspects, gathering contradictory stories
- Setback: Red herring leads to danger or key witness dies
- Climax: Confronting real culprit with evidence
- 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:
- Entrance: Job offer meeting, target revealed
- Puzzle: Reconnaissance - learning defenses and routines
- Setback: Security changes or unexpected complication
- Climax: The heist itself - executing the plan
- 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:
- Entrance: Guardian or sealed door requiring solution
- Puzzle: Ancient mechanism or riddle blocking progress
- Setback: Trap triggered or dungeon inhabitants alerted
- Climax: Boss monster or final chamber challenge
- 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:
- Entrance: Invitation to court/summit/negotiation
- Puzzle: Navigating social etiquette and hidden agendas
- Setback: Assassination attempt or scandal erupts
- Climax: Critical vote or confrontation between factions
- 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:
- Entrance: Crossing threshold into unknown territory
- Puzzle: Navigating natural hazard or finding the path
- Setback: Lost, weather turns, or supplies compromised
- Climax: Reaching destination or major discovery
- 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:
- Entrance: Enemy army spotted, time to prepare revealed
- Puzzle: Fortifying defenses with limited resources
- Setback: Spy discovered or defenses breached early
- Climax: Main assault on multiple fronts
- 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:
- Entrance: Disaster strikes, normal exit cut off
- Puzzle: Finding shelter/resources while avoiding threat
- Setback: Safe haven compromised or ally lost
- Climax: Desperate escape attempt or final stand
- 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:
- Entrance: War council assigns critical mission
- Puzzle: Gathering intelligence on enemy movements
- Setback: Ambush or betrayal within ranks
- Climax: Key battle that turns the tide
- 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:
- Entrance: Urgent plea or kidnapping witnessed
- Puzzle: Tracking captors or navigating to prison
- Setback: Hostage moved or escort ambushed
- Climax: Rescue attempt or final leg of journey
- 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:
- Entrance: Discovering or claiming the site
- Puzzle: Securing resources and skilled workers
- Setback: Sabotage, raids, or natural disaster
- Climax: Major threat to nascent settlement
- 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:
- Recap previous session (or ask a player to)
- Address any between-session actions
- Set the scene with strong imagery
- Ask a leading question to engage players
- 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:
- Entrance: Meeting with Thora (establishes tone)
- Puzzle: Investigating the forge (non-combat challenge)
- Setback: Elemental attack (complication)
- Climax: Confronting the villain (varies by path)
- 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:
- How to integrate Session Zero elements (Thorek, Lucky Finn, Brass Monkey)
- How to structure for observation (combat, social, investigation scenes)
- How to build in player choice (three distinct paths)
- How to create flexible outcomes (three different villains)
- 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:
- Review Characters - Current status and personal goals
- Create a Strong Start - Hook players immediately
- Outline Potential Scenes - Plan the session’s flow
- Define Secrets and Clues - Information management
- Develop Fantastic Locations - Memorable settings
- Outline Important NPCs - Bring the world to life
- Choose Relevant Monsters - Appropriate challenges
- 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:
- Review Characters: Check HP, resources, personal goals
- 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:
- Quick Character Check (1 min) - Who’s hurt? Who needs spotlight?
- Strong Start (2 min) - Where are they? What’s the immediate situation?
- Three Scenes (6 min) - One combat, one social, one discovery
- One Critical Clue (1 min) - What must they learn? Three ways to find it
- One Cool Location (2 min) - Where’s the interesting place?
- Two NPCs (2 min) - Names, wants, one secret each
- One Combat (1 min) - Who might they fight?
- 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
- Strong openings create momentum - Jump straight into the crisis
- Prep enables flexibility - Knowing multiple paths let us follow player choices
- Individual spotlight moments matter - Everyone got their time
- Cliffhangers write themselves - When you have clear stakes and time pressure
- 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:
- Rival party succeeds/fails
- Political shift occurs
- NPC needs help
- Threat grows stronger
- Opportunity expires
- 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:
- Are players still excited?
- Is the story progressing?
- Am I enjoying this?
- What needs adjustment?
- 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
- Contributing - Guidelines for contributing to Mimir
- Development Setup - Setting up your development environment
- Architecture - Technical architecture overview
Technical Reference
- Frontend Architecture - Vue 3 / Tauri frontend structure
- 5e Tools Processing - D&D data processing
- Source Data - Catalog data management
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.
Quick Links
- Main Contributing Guide - Quick reference for contributors
- Development Setup - Detailed development environment setup
- GitHub Repository
- Issue Tracker
Table of Contents
- Getting Started
- Development Workflow
- Code Style and Standards
- Testing Guidelines
- Pull Request Process
- Architecture Overview
- Design Principles
- Release Process
Getting Started
First-Time Contributors
Welcome! Here’s how to make your first contribution:
- Find an issue - Look for issues labeled
good first issueorhelp wanted - Comment on the issue - Let us know you’re working on it
- Fork and clone - Create your own fork and clone it locally
- Set up your environment - Follow the Development Setup guide
- Make your changes - Implement your fix or feature
- 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/descriptionorfix/description - Always branch from
main
git checkout main
git pull origin main
git checkout -b feature/my-new-feature
Making Changes
- Write code following our style guidelines
- Test your changes locally
- Commit frequently with clear messages
- Push to your fork regularly
- 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
anytype 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_casefor functions/variables,PascalCasefor types - TypeScript:
camelCasefor variables/functions,PascalCasefor 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
- Local-First - All data stored locally, no cloud dependencies
- Privacy-First - No telemetry, no tracking, user data stays local
- Type Safety - Strong typing in both Rust and TypeScript
- Separation of Concerns - Clear boundaries between layers
- Testability - Write testable code with good test coverage
- Domain-Driven Design - Model the D&D campaign management domain
- Progressive Enhancement - Core features work without LLM
- 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
- Update version in all
Cargo.tomlfiles - Update version in
package.json - Update version in
tauri.conf.json - Create git tag:
git tag vX.Y.Z - Push tag:
git push origin vX.Y.Z - 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.
Quick Links
- Main Development Guide - Quick reference for development
- Contributing Guide - How to contribute to the project
- GitHub Repository
Table of Contents
- Environment Setup
- Building and Running
- Project Architecture
- Development Workflows
- Testing Strategy
- Debugging Techniques
- Database Management
- Frontend Development
- Tauri-Specific Considerations
- 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
- Install Visual Studio Build Tools
- Install Git for Windows
- Install Node.js
- 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
VS Code (Recommended)
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
- Create Feature Branch
git checkout -b feature/my-feature
- Implement Feature
- Add backend logic in
mimir-core - Add Tauri command in
mimir/src/commands - Add frontend UI in
mimir/frontend/src
- Test Locally
cargo test --workspace
cd crates/mimir/frontend && npm test
- Commit and Push
git add .
git commit -m "Add feature description"
git push origin feature/my-feature
Bug Fix Workflow
- Reproduce the Bug
- Create a failing test
- Document reproduction steps
- Fix the Issue
- Implement fix
- Verify test passes
- Test Edge Cases
- Add additional tests
- Manual testing
- Submit PR
Adding a New Page
- Create Vue Component
# In crates/mimir/frontend/src/views/
touch MyNewView.vue
- Add Route
// In crates/mimir/frontend/src/app/router.ts
{
path: '/my-new-page',
name: 'MyNewPage',
component: () => import('@/views/MyNewView.vue')
}
- Add Navigation
<!-- In layout component -->
<router-link to="/my-new-page">My New Page</router-link>
Adding a New Tauri Command
- 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))
}
}
- Register Command
#![allow(unused)]
fn main() {
// In crates/mimir/src/main.rs
.invoke_handler(tauri::generate_handler![
commands::my_new_command,
// ... other commands
])
}
- 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
Print 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
- Install CodeLLDB extension
- 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
AppStatestruct
Request Flow
┌──────────┐ ┌─────────────┐ ┌─────────────┐ ┌──────────┐
│ Frontend │───▶│ Tauri │───▶│ Service │───▶│ Database │
│ (Vue 3) │ │ Command │ │ Layer │ │ (SQLite) │
└──────────┘ └─────────────┘ └─────────────┘ └──────────┘
▲ │ │
│ ▼ │
│ ┌─────────────┐ │
└─────────│ AppState │◀──────────┘
│ (db, paths) │
└─────────────┘
Typical Command Flow
- Frontend invokes Tauri command (e.g.,
get_campaign) - Tauri Command extracts
State<AppState>and parameters - Service performs business logic, accesses database
- 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,sessionsdocuments,template_documentsworkflow_cards
D&D Catalog:
catalog_*tables for each entity type (spells, monsters, items, etc.)uploaded_books,catalog_sources
Characters:
players,characters,character_versionscampaign_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
| Category | Services | Purpose |
|---|---|---|
| Campaign | CampaignService, ModuleService, SessionService | Campaign management |
| Catalog | SpellService, MonsterService, ItemService, etc. | D&D reference data |
| Character | CharacterService, CharacterCreationService | PC/NPC management |
| Content | DocumentService, TemplateService | Document 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
- Create model in
mimir-core/src/models/catalog/ - Add migration in
mimir-core/migrations/ - Create service in
mimir-core/src/services/ - Add Tauri commands in
mimir/src/commands/catalog/ - 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