Will DM · Living guide

Dungeon Master Training Guide

Full manual for new DMs. Inside a campaign, turn on Guided learning anytime for a deep coach (toggle off for long build stretches — progress is kept). Use ⌘K / Ctrl+K search to jump to board objects, lessons, and these sections.

Product: Will DM (virtual tabletop for maps, fog, light, and a physical world)

Audience: New Dungeon Masters

Document status: Living draft — update as features ship

Manual version: 0.2 · 2026-07-31

App phase: Phase 1 (design + table foundation)

How this manual is maintained
In-app (clickable): open [/guide](/guide) from Home or any campaign (Training guide).
Guided learning: on the campaign as DM, toggle Coach on/off anytime. Progress is kept on this browser so you can leave it off for most of a campaign build and turn it back on for the last stretch.
Search: ⌘K / Ctrl+K (or Search) indexes the board, lessons, this guide, and actions — Enter jumps to the thing.
Source of truth: docs/training/DM-TRAINING-MANUAL.md · PDF: Dropbox Will DM/Training/ · rebuild with python3 docs/training/build_manual_pdf.py

1. What Will DM is (in one minute)

Will DM is a map-first virtual table for D&D-style play:

  • You (the DM) design and run a shared board: floors, walls, furniture, lights, monsters, prizes, familiars, and player tokens.
  • Players join with a code or link and see a fog of war view — only what light and their vision reveal.
  • The world is physical: structures have sturdiness, fragility, and hit points; doors open; walls can be breached or reduced to rubble.
  • Almost everything the DM does that matters is meant to save to the database so the table survives reloads and later multiplayer sync.

Place hierarchy & transcendent characters

Places nest outward from the playable board:

Map (board) ⊂ Structure ⊂ Surround ⊂ Area ⊂ City ⊂ World

A Character is not owned by a single campaign. Traits, skills, magic, items, and ledger events (acquired / learned / lost / transcended) live on the character and remain valid wherever they go. Campaigns and maps only host a presence (where the token sits). See docs/architecture/WORLD-AND-CHARACTER.md.


2. Your first 15 minutes (checklist)

Step Action Result
1 Open the app home page Campaign list + join form
2 Click Start campaign Wizard: name, rules, world/place, first map
3 Land in the design studio Library · map · inspector (not the live table)
4 Note the join code (top of campaign page) Players will use this
5 Stay in Dungeon Master view Full board + design tools
6 Open the map wizard (if available) or use Facets Manor / templates Floors, walls, lights, furniture seed into the DB
7 Drag a monster from the left library onto the map Token placed & saved
8 Click a table or wall → use the Structure inspector Scores / open door / test smash
9 Press F or Full screen for map stage Immersive board; Esc exits
10 Share join code or Copy player link Friends claim seats

3. Roles at the table

Dungeon Master (you)

  • Full map, all floors, hidden monsters, structure tools, libraries.
  • Design mode dock (left) + inspector (right).
  • Invites players via code or player link.

Player

  • Fog of war; vision from their character + lights.
  • Joins with code, claims a seat, optional character token.
  • Role can be locked from invite URL so they cannot flip to DM tools in that tab.

Spectator

  • Join as spectate from home; limited presence at the table.

Seats (important)

A seat is “who is sitting at the virtual table,” not the character sheet itself.

  • Claiming a seat creates a TableSeat row in the database.
  • Your seat token is stored on this browser (localStorage) so you can rejoin.
  • If you clear site data or switch devices, claim a seat again (or use the ?seat= link from join).

4. Design studio — building the board

The design studio (/campaign/:id/design) is the admin workbench. The live table (/campaign/:id) is seats, fog, fullscreen, and sync. Switch with the header pills. Start campaign (/campaign/new) creates the table; it does not dump you into live play.

Left: Library (Design dock)

  • Filter and drag monsters, prizes, familiars onto the map.
  • Drop snaps to grid; placement is written to the database.
  • Floor tabs: place objects on the active floor.

Center: Map

Control What it does
Drag empty map / Hand / Space Pan
Pinch or zoom slider Zoom
Center map (when expanded) Fit whole map with padding
F / Full screen Expand map stage
Esc Exit full screen
Drag any object (DM) Move freely; position saved on release
Click object Select → inspector

Faint labels (DM only for now): every relevant object has a quiet label under it. Color family = type (structure, light, monster…). Damage state is in color (amber/orange/gray), not extra words. Players do not see these labels yet; later, talents / items / spells can grant shared vision.

Right: Inspector

  • Walls / tiles: structure scores, test attacks, restore rubble.
  • Obstacles (tables, doors, furniture): same structure tools + open/close for doors.
  • Lights: bright radius (save button).
  • Tokens: summary; drag on map to reposition.

Structure & physical world

1. Select a wall, door, or table.

2. Set sturdiness (hard to break) and fragility (chips easily).

3. Save DM scores → persists to DB.

4. Preview an attack (magic missile, shatter, …), then Apply if you accept it.

5. Restore structure to reverse rubble when you change your mind.

6. Doors/gates: Open / Close toggles passage (saved).

Software recommends; you always decide. Applied hits change HP, damage state (intact → damaged → breached → rubble), and whether the piece blocks sight or movement.


5. Inviting players & seats

From the home page

1. Enter join code.

2. Enter name at the table.

3. Choose Player / DM / Spectate.

4. Optional: place a character token with that name.

5. Claim seat & join → redirected into the campaign; seat remembered on this device.

From the campaign (DM)

  • Copy code or Copy player link (PlayerLinkBar).
  • Table seats panel: who is seated, claim/leave, refresh.

Player first session

1. Join with code + name.

2. Confirm seat badge appears.

3. Select their character in “View as” if multiple tokens exist.

4. Explore only what light and vision reveal.


6. Persistence — what actually saves

This section is the contract with the DM: if you meant it to stick, it should live in Postgres, not only on screen.

Always persisted (database)

Action How it saves
New campaign / map Created on Start campaign
Wizard / layout apply Tiles, floors, obstacles, lights written in a transaction
Place monster / prize / familiar POST → new row
Drag move (token, light, table, wall, …) PATCH position on pointer release
Light radius “Save” PATCH
Structure scores “Save DM scores” PATCH
Structure hit Apply HP, damageState, destroyed, blocksLos/Move
Open / close door PATCH portal + blocks flags
Restore structure PATCH
Claim seat TableSeat row (+ optional Player token)
Rejoin seat lastSeenAt updated

Device-only (not the campaign world)

Data Where Note
Your seat token Browser localStorage Needed to rejoin this seat; not the map itself
Pan / zoom / full screen Session UI Convenience only
Design dock collapsed Session UI Not world state

What does **not** auto-save yet (know the gaps)

  • Live multiplayer: other browsers do not yet stream your moves in real time (refresh or reload to pull server state).
  • Some inspector text for monsters/prizes is display-only until HP editors land.
  • Leaving a seat on a device does not delete the seat row for everyone (roster purge is future work).

DM best practices for “I meant that to stick”

1. After dragging, release the mouse/finger and wait a beat (PATCH fires on release).

2. Sturdiness / fragility / light radius auto-save shortly after you stop adjusting (Save still works).

3. After previewing a smash, click Apply this result if you want rubble for real.

4. Prefer wizard apply over hand-editing then closing the tab mid-request.

5. Before a session, hard-refresh once so everyone sees the latest DB state.

6. Write down the join code; it is the campaign key for players.


7. Map stage & table habits

  • Full screen for the session board; Esc or Shrink when you need the rails.
  • Center map after expanding so the whole estate fits with edge padding.
  • Use floor tabs so you do not place upstairs monsters downstairs.
  • Hand tool or hold Space to pan without grabbing tokens.
  • Hidden monsters: players should not see them; keep them hidden until reveal (token flag).

8. Suggested first adventure flow

1. Seed or wizard a manor / dungeon.

2. Place party tokens (or have players claim seats with create-token).

3. Place 2–3 lights players will need.

4. Hide a prize and a monster.

5. Share code; players join.

6. Narrate; move lights; open a door; optional structure hit on a weak door.

7. End session; board remains in the database for next week.


9. Troubleshooting

Symptom Try
Object moved but snaps back after refresh Confirm you released the drag; check network; re-drag once
Structure hit did nothing lasting You may have previewed only — use Apply
Player sees full map They opened DM link; use player role / locked invite
Lost seat on new computer Re-claim seat; character may already exist on roster
Empty map Run wizard / seed; confirm campaign has a map
Labels missing DM-only labels; ensure you are in DM view

10. Roadmap (manual will grow here)

Planned / in progress areas this manual will expand into:

  • ☐ Live multiparty sync of positions and structure
  • ☐ Share labels by talent / magic item / skill / spell / potion
  • ☐ Portal travel between floors
  • ☐ Play-mode movement rules (not free design drag)
  • ☐ Inventory / prize claims
  • ☐ Initiative and engagement polish
  • ☐ Seat purge / host tools

11. Glossary

Term Meaning
Board / map The pixel board with grid, floors, objects
Floor Level (ground, upper, cellar, …)
Obstacle Furniture, doors, terrain props
Tile Floor slab or wall segment with materials
Structure Durability layer (sturdiness, fragility, HP, damage state)
Seat A person at the virtual table (with secret rejoin token)
Player (model) Character token / sheet hub
Fog of war Player view limited by light + vision

Document control

Version Date Notes
0.1 2026-07-31 First training PDF: get started, design, seats, persistence
0.2 2026-07-31 In-app /guide link, toggleable deep coach, ⌘K indexed search

Next update triggers: multiparty sync, share-vision labels, portal travel, play-mode movement.

Guided learning curriculum

These lessons power the in-campaign coach. Toggle the coach on from any campaign DM view; search can jump straight to a lesson.

1. Orientation

What Will DM is and how the table is laid out.

  • What Will DM is

    Map-first virtual table with fog, light, and a physical world.

  • Workspace layout

    Design studio vs live table — two surfaces, one campaign.

2. Persistence & truth

What saves, what does not, and how to trust the table.

  • The persistence contract

    If you meant it for the table, it should live in Postgres.

3. Design mode deep dive

Building floors, placing content, and editing structure.

  • Placing monsters, prizes & familiars

    Drag from the library; drop snaps; row is created in the DB.

  • Structure: walls, tables, doors

    Sturdiness, fragility, open doors, and test attacks.

  • Lights & fog of war

    Torches define what players can see.

  • Map stage: pan, zoom, full screen

    Navigate the board without losing context.

  • Map wizard & layouts

    Seed multi-floor manors and material-aware geometry.

4. Seats, invites & session

Getting humans to the table safely.

  • Seats vs characters

    A seat is a person at the table; a player row is a character token.

  • Pre-session checklist

    Last 20% polish before players sit down.

5. Characters & forge

Transcendent sheets, Mii-style creation, inventory.

  • Character library

    Sheets outlive campaigns — browse on /characters or the Chars rail.

  • Character forge (Mii-style)

    Starting faces: ancestry × female/male × skinny/normal/fat, then path & mettle.

6. Live table modes

In-person shared screen vs remote live browsers.

  • Live · in person

    Same room. One map on the wall; optional phones for sheets.

  • Live · remote

    Same time, different places — fog, seats, and links.

  • Between sessions (micro-hooks)

    Untimed chess vibes — small decisions/discoveries, not full async play.

7. Player eyes & memory

Player POV preview and how characters remember the map.

  • Player POV toggle

    DM preview of fog and vision without leaving the campaign.

  • Map memory archetypes

    Present only · Fleeting (~20s) · Steady (~2m) · Photographic (session).

8. Coach, guide & search

How to learn without getting in your own way.

  • Guided learning on / off

    Toggle the coach. When ON, lessons and spotlights fully apply.

Source: docs/training/DM-TRAINING-MANUAL.md · PDF export to Dropbox via build_manual_pdf.py