Module Design
How a Tidewright module is built — the mandatory slots, and why each one exists
At a Glance
- What this is
- The standing spec for every module written for this campaign. Read it before filling in the module template.
- Derived from
- Structural analysis of three published modules by three different authors — see below
- The rule
- Slots marked required are non-negotiable. They are the ones this repo demonstrably kept forgetting.
- Not covered
- Prose voice, canon, and worldbuilding — this is structure only
Where this comes from
Three modules, three authors, deliberately different in scale — read in full and compared slot by slot. Nothing below is invented; each rule is a defect that showed up as a real failure in at least one of them, or a technique one of them did well enough to steal.
| Module | Author | Scale | What it teaches |
|---|---|---|---|
| Lost Mine of Phandelver | Wizards of the Coast | ~64 pp · lv 1–5 | Keyed-location discipline · General Features · redundant information routing · the written losing branch |
| The Wild Sheep Chase | Richard Jansen-Parkes | 6 pp · one-shot | The spoiler summary · antagonist grievance · tactical objectives · branching endings including refusal · stat blocks and NPCs at point of use, in strict clock order |
| The Delian Tomb | blake, from Matt Colville | 5 rooms · lv 1 | Propagating alert state · parametric rosters · read-aloud split around combat · planted-then-paid puzzles |
| The Raindrinkers | Tim Groth (Trilemma) | 2-page spread | Wants / Needs / Has · relational disposition · description as sensory tag-string |
| The Hounds of Low Tide | Kiel Chenier (Trilemma) | 2-page spread | Keyed site on one spread · Secrets: as a standing label · transformation over damage · NPC location table |
| Tomb of the Serpent Kings | Skerples | 52 rooms · 3 levels | Traps solved not rolled · declared design assumptions · teach-then-reward-then-punish |
What Tidewright already did better
The Numbers table, read-alouds collected in order on the play surface, pacing valves, “the one thing,” reskin lineage with labelled house tweaks, and the prep-read / play-surface split — none of the three reference modules do any of these. Keep them. This spec adds to that format; it does not replace it.
The two layers
Every session ships two pages, and the split is the point. Sessions are peers — there is no page above them.
- The one-sheet (
sN-sheet.html, from sheet.html) — the primary page. Roughly one page: where we are, what happened last time, how the night opens, what could happen, who is in it, what might come for them, and what is on offer. This is what you land on and what you hold at the top of the night. - The prep read (
sN-<slug>.html, from scene.html) — long-form, read the night before. Reasoning, atmosphere, the numbered read-alouds in clock order, Developments, the behind-the-screen truth. Prose is allowed here.
A third kind of page exists only when it earns itself: a fight page, owned by no session, holding one fight in full — see the four slots. Three exist: session 1, session 2 and session 3.
There is no module run-sheet. The arc-level slots below still have to be answered — they just live in the session that first needs each answer.
What replaced what, and why — changed 8/19/2026
The module run-sheet is gone, and sessions are peers. A Good Day to Die had an index.html above four nights, and running it felt like duplication even where the pages barely overlapped — because the thing that actually repeated was not the run-sheet at all. Measured: the two prep reads shared ~884 words and the four session pages carried ~3,590 words of stat block between them, while the run-sheet overlapped its own children by about 70. The hierarchy was not the redundancy.
What replaced it. The 6,017-word run-sheet was distributed — each slot to the session where its fact is first true at the table — and the four nights became sibling directories, each with the standard two pages. The arc still exists; it just has no page.
And a shared reference page, for the case the flatten does not solve: one fight, set up on one night and fought on the next, so both pages needed it in full. The session 1 fight page holds both blocks, the torchlight tweak, the targeting order, the roster maths and the group check, and is the only place any of it is written. This is a deliberate exception to no appendices, and it is bounded: the sessions keep a one-line summary at the point of use and link out, and a thing only one session uses stays in the beat that uses it.
What it costs. Mid-fight you hold the one-sheet and the fight page — two pages, which is exactly what the 8/10 consolidation below was written to avoid. It was accepted here because the alternative was maintaining one fight in four places, and simplifying that fight had just taken five hand-edits and still left two stale spots. Information Routing also lost its all-rows-at-once check when it went to session 1; its later rows describe nights that now live elsewhere.
What replaced what, and why — changed 8/10/2026
Until now the second page was a table card (sN-run.html) — a dense mid-scene reference: run order, Numbers, one-line NPCs, every read-aloud collected in order, valves. It has been replaced by the one-sheet, not supplemented by it. Three pages per session was one more than anyone keeps in sync, and the card duplicated the prep read rather than adding to it: every read-aloud on it was already numbered in clock order on the prep read, and every DC was already bolded inline there.
What the one-sheet keeps from the card: the Numbers table, the one-line NPC list, the valves, and the creature quick-reference. What it drops: the collected read-alouds — they live on the prep read, in order, where they are read from. What it adds: the postmortem, the opening monologue, the scene outline as a possibility space, and rewards as a first-class slot.
The thing that makes one page possible is details.foldout: a creature costs one line — name, count, lineage, CR, AC, HP, and the single rule that makes it different — until you open it, and then it is the whole block. Statblocks are the only reason a play surface ever had to be long.
Session-level slots — the one-sheet
Slot names are flat on purpose — changed 8/19/2026. They were “Scenes in play”, “Who’s here” and “What might come up the sand”, which read as prose rather than as a schema — and the last of those was the strand’s prose, so a session set in a taproom had nothing coming up any sand and quietly drifted to “What might come”. A slot name is a label a DM scans for at the table, not a line of writing. Keep the flavour in the beat names and the h-notes, never in the slot.
Seven slots, in this order. The order is the point: it runs from orientation to the opening line, and only then into what might happen. Six are required; Numbers is optional and near-mandatory for any session with a fight.
There is no recap slot — removed 8/22/2026. Slot 2 was Last time, a postmortem of the previous session written into the top of the next one. The prep read carried a second copy as What carries over. Every session now has its own recap page, so both were the same facts written a third time on the page you open to run tonight. What happened last time lives on the recap and nowhere else. The sheet links to it from the rail.
| Slot | Holds | The rule |
|---|---|---|
| 1 · Tonight a .glance block | The run-down — what happens tonight, one line per event, in the order it wants to happen. The party fights this, goes here, talks to her, comes out knowing that. | Five to seven plain sentences and nothing else. Each names an event, not a mood, and reads as flatly as you can write it — no clauses hung off dashes, no phrase doing atmosphere. The flavour is already in the beat names, the h-notes and the read-alouds; here it is in the way. It replaced a five-row dl (the night · for · first thing you do · the one thing · the curtain) on 8/20/2026, and a run-facts footer line went with it the same day — party size, level and runtime are not what you open the page to find out. “The one thing” is not lost: it lives in the prep read’s Pacing slot, which is where the valves are. |
| 2 · Opening monologue | Boxed text that starts the night — second person, present tense, no mechanics. Three short paragraphs: what they think is true · what has changed · the image that puts them in scene one | Effectively read-aloud 0; the prep read's numbered boxes continue from it. It is the only boxed text at the top of the night — do not follow it straight into the prep read's first numbered box. Both sheets did, and two pieces of read-aloud back to back is one piece of read-aloud that is too long: the table has nothing to do through either of them. Where the first numbered box is scene-setting for the same moment, fold it in as the monologue's last paragraph, delete it, and renumber the rest. Where it is genuinely a later moment, cut the hand-off line and let the beat start. Pitched at the whole night, not one beat — that is what separates it from a scene read-aloud. Collapsed by default, in a details.foldout whose summary carries its opening words: it is read once, at minute zero, and it should not cost a third of the page for the rest of the night. Its foldout__line is one line, and it is the when — “read to start the night”, not a paragraph count and the opening words. Never echo the heading directly above it. |
| 3 · Scenes | Every scene that could fire, as a table: name · what it is · it ends when. Plus the long / short / wrong valves | A possibility space, not a schedule. The clock lives in the prep read's Pacing block. Include scenes the party may never reach — that is the difference between this and a run order. |
| 4 · NPCs | Every NPC who could appear, one line each: who they are, and the one thing that makes them play differently from anyone else in the room | No wants/needs/has here — that schema belongs on the NPC page and beside the beat you talk to them in. If a line needs a semicolon and a clause, it is two NPCs or the wrong detail. |
| 5 · Monsters | Every creature, as a details.foldout: summary line carries count, reskin lineage, CR, AC, HP and the one distinguishing rule; the open block carries the full statline plus objective, morale and tell. Then the encounter budget and its scale-down | Collapsed by default. No combat is an answer — say so in a .lore box and say why, so the sheet shows the decision was made rather than forgotten. |
| 6 · Numbers (optional) | Every DC, count, price and initiative block you would otherwise hunt for mid-scene | Write a DC down only when failure has a consequence you would otherwise invent under pressure. A session with no rolls says “no DCs” here and explains what to do instead. |
| 7 · Rewards (always last) | Coin as a number or a named thing · what is available but not obvious, and what it costs · the intangibles — an NPC's regard, a confidence given up, a standing that moved · and XP, stated even when it is none | Never “a modest sum”. List the intangible rewards like rewards; they are usually the ones that matter, and they are the ones that get left off. |
Fight-page slots — four, and most of them are short
A fight gets its own page when it has something beyond a statblock and a hit-point total — a second wave, a terrain rule, a guest character, an ending that is not “kill it.” Anything simpler stays in the one-sheet’s Monsters foldout and no page exists. It is named after its episode — sN-fight.html, beside sN-sheet.html and the prep read — and titled the same way: Reading the Marks — the fight. Do not give a fight a name of its own; a page called The Skirmish tells a DM scanning the rail nothing about which night it belongs to.
It is the only place the fight’s numbers are written down. The sessions keep a one-line summary at the point of use and link here. The read-alouds stay on the prep read in clock order — boxed text is the night’s voice, and only the mechanics move.
| Slot | Holds | The rule |
|---|---|---|
| 1 · At a glance a .glance block | Who is in it · how long it runs · how it ends · the one rule that makes this fight different from a brawl | Four lines. If you cannot name the one rule, the fight does not need a page. |
| 2 · The roster | Each creature as a statblock, and directly under it the two or three lines on how it fights — who it goes for, when it stops. Then Scaling: the maths, and the ceiling. | Targeting lives with the hit points, not in a tactics section a screen away — that is a cross-reference you cannot afford mid-round. Reskin lineage named, house tweaks labelled. |
| 3 · Environment | Light · footing · cover · anything that can be picked up or used · bystanders, if there are any. Then the environment prompt in a .prompt block. | Five bullets of rulings, then the query. Bystanders who cannot be panicked or moved are terrain, not a mob, and they belong here rather than in the roster. |
| 4 · How it ends | The win condition, the lose condition, what each one costs, and any DC that is not already on a statblock | Separate from the glance because the ending is usually a mechanic rather than a beat. Every outcome gets a line, including nobody made it. |
Four, and no fifth. Seven were drafted — a shape, tactics, and a numbers table as their own sections — and it read as information overload for a fight that is one creature in a room. The shape is the glance’s one rule, tactics belong to the creature, and for most fights the statblock is the numbers.
The environment prompt
Every fight page carries a query for the image generator that makes the battle map, in a .prompt block so it can be taken in one click. It is short and general on purpose.
- The opener is fixed, and is never rewritten: Generate an image that is a D&D battle map in 16-bit pixel art, in the style of Chrono Trigger.
- Then the kind of place, in general terms — a fishing port town at night, a cooperage yard, a taproom. Not the scene. The kind of place.
- Then the surroundings only — five or six things visible from above. Sand, docks, a sea wall, upturned boats, torches.
- Wide and zoomed out (the norm since 2026-09-13): frame it as a wide, zoomed-out overhead view, and add one sentence saying the features are small, with open ground around them. Gridded by its features (a cask, a gangplank or a grave’s width is one square), a map should come out around fifty squares across. The first close-up maps came out about fourteen squares across, and four tokens filled them.
- Never people, and say so: end on No people. No grid lines, no text. Owlbear draws its own grid, and a generator stamps labels on anything flat. A crowd is on the page as text and is terrain, not scenery.
- Never story props. The funeral board, the unlit lamps and the bread on the offering stones all came out of the first draft. They either do not render or render wrong.
- About fifty words. A first attempt ran to a hundred and thirty and was describing a moment in a story rather than a place, which is what makes a generator produce nothing usable.
Arc-level slots — and where they live
These are the questions an arc has to answer. Until 8/19/2026 they sat together on a module run-sheet; now each goes to the session that first needs it, and later sessions link back. Three are new, marked with the module that taught them.
Placing one: the session where the fact is first true at the table, not the session that talks about it most. Premise and the truth go to the opening night, because its ending depends on them. Failure goes to the night whose fight can be lost. Endings go to the last night.
| Slot | Holds | Source |
|---|---|---|
| At a Glance | For / where / tone / the job / the truth / ends when | — |
| Premise | The situation walked into, grounded in canon without restating it | — |
| The Truth | Behind the screen: what's actually happening, and at least two ways to win | LMoP |
| Hooks | Coin · a personal thread · a strange sign. Three, so any party finds one | — |
| Scene Flow | The sessions in order, as cards | — |
| Information Routing (required, new) | Every fact the module can't survive the party missing, with ≥2 independent routes — counted in a column so a 1 is visible | LMoP |
| Session Clock | The pressure, and how it advances. Delete if untimed | — |
| Encounter Budget | Party size × level, 2014 DMG thresholds, every fight banded | — |
| Monster Roster | Every creature, its MM lineage, CR, and which page carries the block | — |
| Failure & Setbacks (required, new) | They lose the fight · never find the thing · walk away · a key NPC dies early. Each routed back into the story | LMoP |
| Rewards | A number or a named thing. Never “a modest sum” | LMoP |
| Endings (required, new) | At least three, one of them refusal. Each with a material consequence and a dangling thread | Wild Sheep |
| Scaling | Formulas, not counts — 1 + #PCs, with a floor and ceiling | Delian |
| Canon Touchpoints | Linked, never restated. Canon is frozen | — |
| Lore Locker | Optional discoverables, each naming its scene. None required for the arc to land | — |
| NPC pages (required schema) | Per named NPC: Description (sensory tag-run) · Mannerisms · Tell · Wants / Needs / Has · Standing (relational) · Grievance. See Prose rules — Has is what makes sole-source facts visible. | Trilemma · Wild Sheep |
Scene-level slots — the prep read
| Slot | Holds | Source |
|---|---|---|
| At a Glance | Where / when / who / purpose / curtain | — |
| General Features (required, new) | Light · sound · footing · cover · verticality · smell — answered once, so no zone re-litigates them | LMoP |
| Zones | Read-aloud → what's here → terrain / tactics / morale / tell → Developments → stat block. Same order every time. | LMoP |
| Developments (required, new) | Per zone: if they sneak · if they talk · if they do the obvious clever thing · if they lose | LMoP |
| Tactics | Opening move, positioning, and the objective — often not “kill the party” | Wild Sheep |
| Morale | Every roster gets a flee / surrender / stop condition. No exceptions | All three |
| Stat blocks | Reskin lineage named, every house tweak labelled | — |
| The Curtain | The closing image, and the conditions that mean the night is done | — |
| Pacing | Time budget · long / short valves · the one thing | — |
Page order — required, and the one this repo keeps breaking
The slots above say what a prep read holds. This says where it goes on the page, because a page can carry every mandatory slot and still be unreadable if they are in the wrong order.
| Rule | What it means | Source |
|---|---|---|
| Clock order, one scheme | Beats run top to bottom in the order they happen at the table, and the page commits to one organising scheme — a timeline or a keyed site, never both. Numbered beats promise a sequence; if two of them are simultaneous, they are one beat with sub-headings, not two. | Wild Sheep · Delian |
| No appendices | One exception, 8/19/2026: a block more than one session needs in full moves to a shared reference page, and the beat keeps a one-line summary and a link. Otherwise stat blocks and NPC entries sit at the point of use. A creature's block goes in the beat it enters on; an NPC's page-block goes beside the beat you actually talk to them in. Nothing a DM needs mid-scene is filed behind the scenes that need it. | Wild Sheep · Serpent Kings |
| Read-alouds in page order | Numbered, and they appear down the page in the order they are read. If read-aloud 4 sits above read-aloud 3, a beat is in the wrong place — this is the cheapest possible check on the whole layout. Checked by the build — bin/build-canon-digest warns if a page’s numbered boxes are not 1..N straight down it. | — |
| The h-note says what happens | Every heading’s note is what a DM scans instead of the heading. It carries the clock and the content — “2:35 · 10 min · they are seen leaving with the ledger”, never “watched”. Mood belongs in the beat, not in the line you read to find the beat. | — |
| Front matter is what you read once | Only three things sit above beat 1: the table business, the background the DM reads once, and General Features. Everything else earns its position by when it fires. | LMoP |
The evidence — The Wild Sheep Chase's heading order
It declares the method outright — “the main text is divided into several distinct scenes… enemy stat blocks and notes are highlighted in grey boxes” — and then holds to it without a single appendix:
SUMMARY → USING THIS ADVENTURE → ADVENTURE HOOKS → BAAAA-D NEWS → GUZ → SHEPHERDS, CROOKS → ROLEPLAYING SHINEBRIGHT → AFTER THE DUST SETTLES → ROLEPLAYING GUZ → THE HOUSE IN THE WOODS → ROLEPLAYING NOKE → RED DRAGON WYRMLING → AHMED NOKE → CONSEQUENCES
Every bold entry is a block or an NPC, and every one of them sits immediately beside the scene that needs it. Tomb of the Serpent Kings goes further and indents the statline inside the room entry; The Delian Tomb keys everything to the room and re-states the alert flag forward, per room. None of the three defers a creature to the back of the document.
The failure it is written against — session 0 of A Few Questions
The page carried every mandatory slot and was still hard to read, because it ran fight rules → pre-fight → fight → after-fight → monsters → the people you met before the fight. Three separate causes, all of them ordering:
1 · Two schemes at once. Five numbered beats, but 3 and 4 were two aspects of one continuous fight and 5 was half mid-fight and half after it. The numbering promised a clock and delivered a topic list.
2 · A subsystem in the Alert State slot. The three anchors — the rule, two tables, and a d6 crowd table — sat above a 25-minute no-dice opening because “one variable the location shares” seemed to describe it. Alert state is “have they been alerted?”. This was the fight. The variable stays up top as two lines; the rules moved into the beat.
3 · Blocks and people as appendices. Both stat blocks sat at position 13 of 16 and the NPCs at 14, below every scene that used them — far enough down that a reader asked whether the module had monster blocks at all.
Prose rules
Everything that is not read aloud
Two registers, and only one of them gets to be literary. Read-aloud, opening monologues and quoted NPC speech are spoken word — they are performed, and the writing there earns its keep. Every other word on every page is scanned mid-session by a DM who is looking for one fact, and it is written flat: clear, concise, straightforward, no flowery filler.
- State the beat, do not argue for it. “Do not recap”, not a paragraph on why refusing to acknowledge the gap is the strongest thing you can do.
- No bolded lead-ins that turn a list back into prose, no clauses hung off dashes doing atmosphere, no metadata line added “for completeness.”
- Slot names are flat labels — Scenes · NPCs · Monsters · Numbers · Rewards · Environment. Flavour lives in beat names, h-notes and read-alouds. Nowhere else.
- Fewer slots than feel right. If a section needs a paragraph to explain why it exists, cut the paragraph; if it still needs one, cut the section.
- Say a thing once. A fact written on two pages will diverge, and the copy a DM happens to open is the one they will run.
Read-aloud
- Second person, present tense, 3–5 sentences, senses first.
- No mechanics. No DCs, no HP, no numbers the players couldn't perceive.
- End on something that moves, or something wrong — and stop at the moment the party can act. Where it is natural, end on the question itself: the box’s last line points at them, or an NPC in it asks them something they have to answer. A roll never goes inside the box — that is the no-mechanics rule above — so when a beat wants one, it goes on a cue line immediately under the box, naming a DC that is already in the Numbers table. Not every box: mid-combat boxes, where initiative is already running, and a confession or a curtain that is meant to hang, all end better without one.
- Split it around combat. Threat first; the carving on the wall after the fight. Nobody absorbs atmosphere while rolling initiative. (Delian)
- If the read-aloud is describing geometry, you need a map instead. This is the failure mode of Wild Sheep's tower — 200 words of floor plan read aloud because there was no image.
- Layer with conditions rather than one wall: “If Sildar Hallwinter is with the party, add:” (LMoP)
Which DCs to write down
Lost Mine specifies every check; Wild Sheep specifies about five, and plays fine. The test: write the DC when failure has a consequence you'd have to invent under pressure. The trap, the locked door, the talk-him-down. Ambient checks the DM can improvise don't need a number.
When you do write one, write the whole chain — passive threshold, active DC, the save, the condition, the damage, and how it ends. Then put it in the Numbers table on the card.
Monsters
- Reskin before you invent. 2014 MM statline at the right CR, renamed and reflavoured. At most one or two house tweaks, each labelled.
- Reflavour by changing the fiction, not the math: “the rigging IS the web — it feels you touch a line.”
- Rosters as formulas. 1 + #PCs, with a floor and a ceiling.
NPCs
Every named antagonist gets a grievance — one sentence that makes them right from where they stand. Not a justification; a position. This is the single highest-value 200 words in Wild Sheep, and it's why anyone remembers that module.
Beyond that, three fields from Trilemma, all required on any NPC with a page:
- Wants · Needs · Has. Wants is what they'll trade for and say out loud. Needs is the deeper drive they may not name. Has is the inventory of everything obtainable from them — objects, services, permissions, and facts, including intangibles like “the right to declare people friends of the Raindrinkers.”
- Standing. Disposition is relational, not a friendly/hostile dial — write their position against the other named NPCs, so choices with one person move another. “Befriend Tatien and Ulroch will be against you; earn Tatien's enmity and Ulroch may yet help you.”
- Description & Mannerisms. Description is a comma-run of sensory tags, never a paragraph — “Gaunt, paper-thin skin, bald, smells of soil, dirt under his fingernails” — because you read it mid-sentence. Mannerisms are two or three physical tics, kept separate from the verbal tell.
Why Has is load-bearing, not flavour
It is the check that catches sole-source facts by construction. If a fact lives in one NPC's Has and nowhere else in the module, that NPC is a single point of failure — and NPCs die. The campaign's first module had one: two rows of the Surety's routing table leaned on Vasso Krell, a tidepriest who is killable a whole session before the fact is needed — which would have quietly removed the stand-and-kill ending from play. That was found by hand, late. With a Has field it would have been visible on his page from the start.
On the card, one line each: role · manner · tell · wants · has · grievance. The tell is the verbal habit you actually play them with — Krell says ships are “taken,” never sunk.
Numbers
Concrete, always. 50 gp, not “a reward.” ~80 gp of unlogged sundries, not “some valuables.” If a reward is deliberately withheld — Wild Sheep's deadbeat wizard is a good joke — that's a choice you make once, not a way to skip the arithmetic.
Worked examples
From The Ship That Didn't Sink — the campaign's first module, written before this spec, which already got most of it right. The module itself was retired in a fresh start and no longer exists in this repo (it's recoverable from git at the tag pre-campaign-reset). The examples are kept because they're self-contained and because they're the reason this spec is concrete rather than abstract.
Tactics with an objective — good
“They web the biggest threat and bite whatever's wrapped. They will not pursue below decks — the below decks has an owner, and they know it.” Positioning, morale, and a piece of worldbuilding in two sentences.
Information routing — good, but uncounted
The manifest discrepancy has two routes: the true manifest in the chart drawer, or Krell simply saying the hold is light. That's correct — but nothing in the module records that it's two, so the next writer can't tell a robust fact from a fragile one. That's what the new routing table fixes.
General Features — the gap
Session ii carries the information (“the deck lists gently; call for checks only when someone runs, fights, or carries”) but scattered through prose, so it has to be re-found mid-session. Same facts, one block, top of the page.
Alert state — the gap
Nothing tracks whether the Shroudweaver fight on the weather deck is heard in the hold. Krell is a listening, thinking NPC three zones away who would absolutely notice a fight overhead. One variable — did the deck go loud? — would change how he greets the party, and make the party's choice to fight quietly matter.
Read-aloud discipline — good
“The ship is silent the way a held breath is silent. As the boat knocks against her strakes, the gulls overhead cry once, all together, and go somewhere else.” Sensory, no mechanics, ends on something wrong. This is the standard.
Optional — considered, not adopted
Techniques that survived the survey but were deliberately not made mandatory. Reach for any of them when a module wants it; none is a requirement, and nothing is out of compliance for lacking one. Recorded here so the reasoning is on file and nobody re-litigates it from scratch.
| Technique | Source | What it is · when to reach for it |
|---|---|---|
| Traps solved, not rolled | Serpent Kings | No Perception DC — the trap is “identified by examining the door closely, or by checking the ceiling,” then three named disarm vectors (rig a lift from a distance · cut the ceiling chains · tie the pegs to the floor), plus a dirty option with real numbers: use another PC as a springboard, +2 to your save, −2 to theirs. Reach for it when a trap is a set-piece rather than a toll. |
| Transformation over damage | Hounds of Low Tide | A failed trap doesn't deal 4d6 — it turns you into a human-sized prawn person over 1d4+5 minutes, water-breathing and fire-vulnerable. Nobody remembers 4d6. Use where a consequence should be a story, not a subtraction. |
Secrets: as a standing room label | Hounds of Low Tide | A fixed sub-label beside Treasure:, holding structural connections — “a small secret door leads to the Secret Hearth (Room 6).” Worth it in a site with real geography; noise in a linear one. |
| NPC location table | Hounds of Low Tide | d6 Edna's Location — where the antagonist actually is when the party arrives. Use for any NPC who moves, and for any site you might run more than once. |
| Prices on the page | Hounds of Low Tide | The tavern's actual menu: rum 1sp, bottle 3sp, stout 1sp, stew 2sp. Trivial, constantly needed, almost never written down. Add wherever the party will plausibly buy something. |
| Declared design assumptions | Serpent Kings | Not CR, but the anchors: “200gp is enough to level a single character… damage is scaled around PCs having between 4 and 16 hit points.” Our encounter budget is better for our purposes, but stating the assumption tells a future reader what to change when the party isn't four level-4 PCs. |
| “What this establishes” | Serpent Kings | Skerples annotates rooms with what they teach. Repurposed diegetically — what the party should now believe about the world — it names a thing our zones already do by accident (the webs hold gull and fish bones, no human ones). |
| Teach, then reward, then punish | Serpent Kings | Rooms 2A and 2B are identical: the first teaches that the statues are hollow and gassed, the second lets you profit from knowing. Room 4 then puts a visible silver ring on a third statue and punishes anyone who didn't learn. Deliberate repetition with variation — the thing five all-different zones can't do. Best tried on a new module, not retrofitted. |
What we don't do
- No just-in-time rules teaching. The Delian Tomb stops to explain ability checks and surprise at first use. That's right for a module aimed at first-time DMs and dead weight here.
- No six-route redundancy. Lost Mine gives one fact six delivery paths because it's written for unknown tables running it out of order. Tidewright modules run for a known table in a known order — two routes per critical fact is the standing number, and the alert chain does the rest.
- No custom stat blocks by default. Reskin. The lineage has to stay auditable.
- No canon edits from module work. Modules reference canon; they never restate or revise it. If a module seems to need canon changed, stop and raise it.
- No prose on the one-sheet. If it is a paragraph and it is not the opening monologue, it belongs on the prep read.
- No system-neutral phrasing. Trilemma and Serpent Kings both stay system-agnostic on purpose. We are committed to 5e 2014 with MM reskins — that's a strength, and hedging it would cost the auditable lineage.
- No player-teaching lessons. Serpent Kings teaches its players what a dungeon is. Our table isn't new.
- No hard page limit. Trilemma's one-spread constraint is a superb editing forcing-function, but the two-layer split already solves the problem it solves — the one-sheet is our page limit.