16 KiB
2D6 Dungeon Game Spec
Purpose
This document translates the rulebooks into a software-oriented specification for a web-based version of 2D6 Dungeon.
It is based on:
2D6 Dungeon - Core Rules.pdf2D6 Dungeon - Tables Codex.pdf
The goal is not to reproduce the books page-for-page. The goal is to define:
- the gameplay loop
- the rules engine responsibilities
- the data/content model
- the app state model
- the MVP boundaries
- the places where digital adaptation decisions are required
Product Definition
2D6 Dungeon is a solo dungeon-crawling campaign game with:
- procedural room generation
- table-driven events
- deterministic combat resolution around dice combinations
- long-term character progression
- repeated dungeon delves separated by town phases
The web version should act as:
- rules engine
- campaign tracker
- character sheet
- dungeon map sheet
- combat assistant
- table resolver
Design Goals
- Preserve the core paper-game rules where practical.
- Remove manual bookkeeping and repeated table lookups.
- Make game state transparent through logs and visible calculations.
- Support long-running campaigns with reliable save/resume.
- Keep rules logic separate from content data.
Non-Goals For MVP
- full content parity across all 10 levels
- expansion support
- multiplayer
- realtime action gameplay
- heavy audiovisual presentation
Canonical Gameplay Loop
The top-level loop is:
- Create or continue an adventurer.
- Enter a dungeon level.
- Generate and reveal rooms as exploration advances.
- Resolve room encounters, creatures, objects, and events.
- Fight creatures through manoeuvre-based combat.
- Gain loot, XP, items, conditions, and favour.
- Continue deeper, or leave the dungeon through an exit shaft.
- Return to town for selling, buying, services, and preparation.
- Re-enter the dungeon and continue campaign progress.
- Complete all 10 levels and claim legendary reward.
Core Systems
1. Dice System
Supported roll types:
D3D62D6D66
Important rules:
D66uses two distinguishable dice.- Primary die is the tens digit.
- Secondary die is the ones digit.
- Some systems require preserving both values individually, not just the combined number.
- The Modified Ranges Rule clamps modified values to the nearest valid table result when a modifier pushes the result out of range.
Software requirement:
- represent raw dice, modified dice, and combined result separately
- keep roll history for audit/logging
2. Adventurer Model
The player controls a single adventurer with:
- name
- level
- XP
- HP
- baseline HP
- Shift
- Discipline
- Precision
- weapon
- manoeuvres
- worn armour
- inventory
- potions
- scrolls
- quest items
- favour points
- temporary statuses
- town storage / loot lockup
Key creation rules from Core Rules:
- starts at Level 1
- starts with 10 HP baseline
- starts with
+2 Shift,+1 Discipline,0 Precision - chooses one main weapon
- chooses starting manoeuvres tied to weapon
- chooses one starting armour piece
- starts with flint and steel, lantern, 3 rations, pouch, wax sealing kit, backpack
- starts with one starting scroll
- starts with one healing potion
3. Progression System
The game is a long-form campaign, not a single roguelike run.
Progression includes:
- XP from kills and special actions
- level ups during dungeon exploration
- immediate HP gain on level-up
- unlocking stronger manoeuvres
- accumulating wealth and equipment
- clearing dungeon levels over multiple visits
- completing side quests
- earning legendary status after completing all 10 levels
Software requirement:
- campaign progress and run progress must be stored separately
4. Dungeon Structure
The main dungeon consists of 10 levels.
From the Core Rules and Tables Codex:
- Level 1: The Entry
- Level 2: The Domain
- Level 3: The Crypt
- Level 4: The Haunted
- Level 5: The Infernal
- Level 6: The Cultist Den
- Level 7: The Menagerie
- Level 8: The Monster Maze
- Level 9: The Cursed
- Level 10: The Dungeon Lords
Each level has:
- its own room tables
- its own small room table
- its own large room table
- its own exit type table
- level-specific encounter tables
- level-specific thematic content
5. Room Generation
Exploration is driven by generating rooms as encountered.
Rules to support:
- dungeon level has an outer boundary
- entrance room is generated with special rules
- other rooms use
D66dimensions - doubles may expand room size
- exits are added based on rules and/or exit tables
- small rooms are handled by dedicated small room tables
- large room tables are separate
- the final reachable room gets stairs to next level
- secret door fallback is used if forward progress stalls before enough map reveal
- no erasing map; room state becomes permanent once generated
Digital adaptation requirement:
- store both logical connectivity and rendered geometry
- do not rely on user drawing
6. Room Resolution
Once a room is generated, the app resolves:
- room identity from the level room table
- room description / flavor
- encounter instructions
- exits and exit types
- uniqueness constraints
- special unique room percentage gating
Room resolution may trigger:
- combat
- loot tables
- item discovery
- prisoner encounters
- side quests
- environment interactions
- dungeon events
7. Combat System
Combat is the most mechanics-heavy system in the game.
Core concepts:
- all encountered enemies are typically hostile
- player generally attacks first
- manoeuvres correspond to exact 2-die combinations
- Shift Points can move dice values up or down
- successful exact strike gives damage bonus
- creatures may have interrupt stats that reduce or alter damage
- armour can deflect damage if dice sets match
- fatigue alters combat over time
- combat supports multiple enemies
- thrown weapons can be used and later recovered or lost
- potion bombs can be used before attacks
Combat must support:
- player attack resolution
- enemy attack resolution
- damage calculation
- interrupt matching
- armour deflection
- fatigue die progression
- prime attack and mishap cases
- special attacks
- death and unconsciousness rules
8. Magic System
There are three major magical subsystems:
- scrolls
- potions
- favour of the gods
Scrolls:
- used at the start of combat or outside combat
- require a successful double on
D66 - Discipline can shift toward a double
- may have dispel doubles
- may invoke failure tables when cast incorrectly
Potions:
- can be used at any point, including combat
- occupy potion capacity
- include healing and other magical effects
Favour:
- tied to specific subterranean gods
- earned through offerings and game events
- spent through a favour roll
- usable in and out of combat
- governed by per-level usage restrictions
9. Inventory and Item Systems
The app must track:
- coins by denomination
- gems by type and quality
- armour
- large/heavy items
- regular items
- potions
- scrolls
- herbs
- runes
- quest items
- containers
- worship items
Important capacity rules:
- no hard limit on treasure and small items
- max 10 large/heavy items
- max 5 potions
- max 3 magic scrolls
10. Status and Condition Systems
At minimum the engine must support:
- Bloodied
- Soaked
- fever / HP loss from unresolved conditions
- damaged armour
- destroyed armour
- temporary stat bonuses
- temporary effects from town or magic
11. Town Phase
When the player exits the dungeon, they can return to town.
Town systems include:
- market buying
- market selling and bartering
- engraver for runes
- herbalist
- tavern
- temple
- town hall arm wrestle
- loot lockup storage
- prisoner liberation rewards
Town is a rules-heavy phase, not just a menu.
12. Narrative / Judgment Systems
Some rules rely on interpretation rather than strict table lookup.
Examples:
- inventive usage
- making common-sense map decisions
- deciding the last room in a level
- contextual interactions with room objects
Digital adaptation strategy:
- make the default outcome deterministic where possible
- allow developer-configured override hooks
- keep an action log explaining why a result was chosen
Content Structure From The Tables Codex
The Tables Codex divides content into major categories.
Generic Tables
These include:
- armour
- enchanted armour
- failed casting
- gem combinations
- magic items
- magic potions
- magic scrolls
- portcullis levers
- recovery from unconsciousness
- stolen items
- starting armour
- starting scrolls
- gem values
- miscellaneous item values
- weapon manoeuvres
Random Lists Tables
These include:
- random armour
- empty containers
- gems
- gods
- half ornate items
- herbs
- metal items
- potion lists
- amulets
- magical items
- rings
- wands
- scroll lists
- symbol selection
- worship items
- wrecked items
Loot Tables
These include:
- bags
- body search
- chests
- pouches
- religious pouches
- religious artifacts
- rubbish piles
- runes
- secret hatches
- sarcophagi
- tables
- tea chests
- urns
Level Table Groups
The codex is grouped by pairs of dungeon levels:
- Levels 1 and 2
- Levels 3 and 4
- Levels 5 and 6
- Levels 7 and 8
- Levels 9 and 10
Each group includes some combination of:
- prisoner encounter tables
- exit type tables
- interruptions/unexpected tables
- patrol or creature tables
- trap tables
- large room tables
- small room tables
- level room tables
- special level-only tables
Creature Cards
Creature content begins in the bestiary section and is used continuously by the combat engine.
Each creature card contains at least:
- name
- level
- type
- HP
- XP reward
- Shift
- treasure references
- interrupt stats
- manoeuvres
- mishap/prime attack results
- special attacks
- description
Optional Tables
Optional tables exist and should be modeled as disabled-by-default modules.
Proposed Digital Domain Model
Core Entities
Suggested first-pass entities:
CampaignRunStateAdventurerDungeonLevelStateRoomStateExitStateEncounterCombatStateCreatureInstanceWeaponManoeuvreArmourItemPotionScrollRuneHerbQuestGodTownVisitRollRecordTableReference
Table Data Model
Every table entry should be machine-readable.
Recommended shape:
idtableIdrollMinrollMaxconditionsresultTypepayloadrulesText
This allows:
- lookup by dice result
- modifier application
- rule-driven dispatch
- UI display using original wording where needed
Table Reference Model
Many rules point to other tables rather than producing direct outcomes.
Use a normalized reference such as:
tableIdrollTypemodifierSourcenotes
Examples:
- room directs engine to creature encounter table
- scroll failure points to failed-cast table
- defeated creature points to treasure table
Roll Record Model
The app should preserve a history of important rolls:
- roll type
- raw dice
- modified dice
- modifiers applied
- final result
- source action
- downstream table used
This is important for trust, debugging, and rules verification.
State Model
Campaign State
Persistent across sessions:
- adventurer identity and long-term stats
- completed dungeon levels
- loot lockup contents
- permanent favour or unlocked states
- campaign history
Run State
Specific to the current active delve:
- current dungeon level
- generated rooms
- current position / current room
- discovered exits
- unresolved encounters
- active inventory carried on run
- temporary effects
- current HP
- active combat
Room State
Each room needs:
- coordinates / geometry
- room table result
- room type
- room description
- exits
- discovered status
- cleared status
- uniqueness flags
- generated encounters
- placed objects / interactables
- notes and markers
Combat State
Combat requires:
- combatants
- turn / round number
- fatigue die value
- current attack actor
- current dice roll
- available shift
- selected manoeuvre
- damage breakdown
- interrupt events
- armour deflection events
- pending special effects
Rules Engine Boundaries
The rules engine should be pure and UI-agnostic where possible.
Good engine responsibilities:
- roll dice
- validate actions
- resolve table lookups
- generate rooms
- resolve combat
- apply rewards and penalties
- advance campaign state
UI responsibilities:
- collect player choices
- show map and character sheet
- show logs and calculations
- present available actions
- render table results nicely
MVP Definition
The first playable version should cover:
- new game
- character creation
- one active adventurer
- Level 1 only
- room generation
- room identification
- encounter resolution
- creature combat
- loot and XP
- levelling
- inventory tracking
- potions and scrolls
- leave dungeon flow
- town visit flow
- save/load
MVP content can use:
- Level 1 room tables
- a subset of creature cards
- a subset of armour, potions, scrolls, and loot
Recommended Build Sequence
Step 1: Encode rules constants and enums
Start with:
- roll types
- item categories
- damage modifiers
- statuses
- level themes
- room sizes
- exit types
- creature types
Step 2: Encode foundational tables
Before level-specific content, encode:
- starting armour
- starting scrolls
- weapon manoeuvres
- armour table
- magic potion table
- magic scroll table
- failed-to-cast table
- gem values
- miscellaneous item values
Step 3: Build dice and modifier engine
This is the base for:
- combat
- room generation
- table lookups
- town actions
Step 4: Build character creation and sheet logic
This allows the app to:
- create legal starting characters
- compute carrying limits
- track stats and loadout
Step 5: Build Level 1 room generation and resolution
Use these content families:
EXT1L1LRLevel 1 RoomsL1SR- Level 1 encounter tables
Step 6: Build combat against a controlled subset of creature cards
Use a small but varied subset first:
- one humanoid
- one animal
- one patrol/multi-enemy case
- one creature with interrupts
Step 7: Build post-room rewards and town return
Support:
- treasure
- XP
- inventory updates
- exit shaft search
- market
- temple or tavern
Implementation Decisions To Make
These are not fully dictated by the books and should be decided explicitly.
1. How literal should map generation be?
Options:
- simulate full geometric placement
- simplify to node-and-edge rooms while preserving rules
Recommendation:
- use full geometry internally for rules fidelity
- render a simplified clean map visually
2. How should inventive usage work?
Options:
- fully manual freeform input
- fixed list of context-sensitive actions
Recommendation:
- use context-sensitive actions for MVP
- keep a future manual override/admin action
3. How should ambiguous “common sense” rules be handled?
Recommendation:
- codify deterministic heuristics
- log them clearly
- document all heuristics in a separate implementation notes file
Open Questions
These should be resolved before a full production implementation:
- Will the digital version aim for strict parity with every table text outcome, or allow some streamlining?
- Should room descriptions be reproduced verbatim in-game, or summarized into structured effects plus flavor text?
- Should the app keep the original D66-first tactile feel with visible primary/secondary dice, even when automation could hide it?
- Should optional tables be available as campaign settings at world creation?
Immediate Next Deliverables
After this spec, the most useful follow-up files are:
content-checklist.jsonDATA_MODEL.mdIMPLEMENTATION_NOTES.md
Suggested order:
- create the content checklist from the Tables Codex
- define exact TypeScript interfaces and schemas
- record digital-only rules decisions and heuristics
Summary
The web version should be built as a rules engine plus structured content system.
The Core Rules define:
- flow
- player rules
- combat rules
- progression rules
- town rules
The Tables Codex defines:
- lookup content
- room content
- item content
- creature content
- level content
That separation should be reflected directly in the codebase and content pipeline.