docs: add build spec, TODO, and encounter table sources
- vegvisir-spec.md: full build spec (core flow, chargen subsystem, GM layer, world model, journey flow, data compilation pipeline) - TODO.md: spec broken into 8 sequential build phases - docs/: Norse-flavoured and general random encounter tables (authoring source for the compile step)
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
# Vegvísir — TODO
|
||||
|
||||
Derived from [vegvisir-spec.md](vegvisir-spec.md). Phases are roughly sequential; content digitization (Phase 0) blocks coding on anything that consumes those tables.
|
||||
|
||||
## Phase 0 — Content Digitization (blocks build)
|
||||
|
||||
Markdown tables authored in `docs/`, used once at compile time, then deleted. Reflavored to the Norse setting where content is Glorantha-specific; mechanical structure stays RQG-derived.
|
||||
|
||||
- [ ] Define markdown table structure/conventions (headers, column format) for all seed files — spec Open Question 1
|
||||
- [x] Flavour/encounter tables (`norse_encounter_tables.md`, `random-encounter-tables.md` exist — confirm format matches conventions once defined)
|
||||
- [ ] Ability Results Table
|
||||
- [ ] Resistance Table
|
||||
- [ ] Movement rates / travel rules tables
|
||||
- [ ] NPC generation tables (six rolled fields, per existing narrative-app spec)
|
||||
- [ ] Spirit Magic spell list (Stef digitizes Magic book before coding starts)
|
||||
- [ ] Kinship/pantheon content (replaces Gloranthan cults) + per-Kinship Rune Magic spell lists
|
||||
- [ ] Homeland regions (Stef's regions replacing Dragon Pass homelands, with characteristic/skill modifiers)
|
||||
- [ ] Family History event tables (Stef's calendar/history, RQG year-by-year roll structure)
|
||||
- [ ] Occupation table (reflavored names, RQG-derived modifiers/structure)
|
||||
- [ ] Personality Trait pair list — confirm final opposed pairs and starting-score method (rolled vs. assigned) — spec Open Question 7
|
||||
|
||||
## Phase 1 — Project Scaffolding & Data Compilation
|
||||
|
||||
- [ ] Project scaffolding (TypeScript app; decide runtime/UI framework, storage approach)
|
||||
- [ ] One-time compile script: markdown → typed TS data files (`*.generated.ts`, marked do-not-edit)
|
||||
- [ ] Compile all table categories: flavour tables, movement rates, NPC tables, Spirit Magic, Rune Magic, Occupation, Personality Trait pairs, Ability Results Table, Resistance Table
|
||||
- [ ] Hand-written lookup/resolution modules importing generated data (table roll functions, movement rate lookup, Resistance Table lookup, Ability Results lookup) — kept separate from generated files
|
||||
- [ ] Delete source markdown after compile; document re-compile workflow for future table changes
|
||||
|
||||
## Phase 2 — Character Generator + Editable Sheet
|
||||
|
||||
RQG chargen sequence with setting substitutions. Distinct subsystem; GM layer reads from the sheet it produces.
|
||||
|
||||
- [ ] Chargen engine following RQG sequence:
|
||||
- [ ] 1. Homeland (Stef's regions)
|
||||
- [ ] 2. Family History (year-by-year event rolls, Stef's calendar)
|
||||
- [ ] 3. Rune Affinities (tied into characteristic modifiers per RQG)
|
||||
- [ ] 4. Characteristics (STR, CON, SIZ, INT, POW, DEX, CHA) + derived stats: MP, HP + hit locations, Healing Rate, Damage Bonus, Max ENC, Strike Rank, Skill Category Modifiers
|
||||
- [ ] 5. Occupation (reflavored table)
|
||||
- [ ] 6. Kinship (grants Common Rune Magic access + Rune point pool)
|
||||
- [ ] 7. Personal Skill Bonuses
|
||||
- [ ] 8. Other Information (gender, name, age, handedness, scars, family, tribe/settlement/clan, heirloom, reputation, movement)
|
||||
- [ ] 9. Passions (directed %, e.g. Loyalty/Hate/Love)
|
||||
- [ ] 10. Personality Traits (Pendragon-style opposed pairs, each pair scored to 20)
|
||||
- [ ] Persistent, mutable character sheet — every roll user-editable/re-rollable after generation (not one-shot)
|
||||
- [ ] Character persistence across sessions
|
||||
|
||||
## Phase 3 — GM Layer (encounter resolution)
|
||||
|
||||
Deterministic RQG mechanics, reading from the active character sheet(s).
|
||||
|
||||
- [ ] Skill checks via Ability Results Table (pass/fail with degree of success, brief outcome)
|
||||
- [ ] Opposed checks vs NPCs/environment via full Resistance Table
|
||||
- [ ] Full combat resolution: strike ranks, hit locations, damage, round-by-round to an outcome
|
||||
- [ ] Augmentation from Passions (boost/hinder per RQG rules)
|
||||
- [ ] Personality Trait checks for ambiguous character behavior mid-resolution
|
||||
- [ ] Spirit Magic casting during resolution (MP cost per RQG)
|
||||
- [ ] Rune Magic casting (Rune points from Kinship pool)
|
||||
- [ ] Reaction rolls
|
||||
- [ ] (Out of scope v1, flag as future: Sorcery, Divine Intervention)
|
||||
|
||||
## Phase 4 — Flavour Roller, Scene Types & Favourites
|
||||
|
||||
- [ ] Roll engine: 3–4 mixed-category options per roll (encounter / cultural detail / NPC quirk), tagged by scene type + danger level
|
||||
- [ ] Manual-pick scene types: Combat/Danger, Social/NPC (Travel and Tavern/Settlement are driven by Phases 5–6)
|
||||
- [ ] Pick-one-or-none flow → hand picked option to GM layer for resolution
|
||||
- [ ] Favourites: save resolved results, persistent across sessions, grouped by scene type, danger tag carried through for filtering
|
||||
- [ ] Favourites browser (viewable list, grouped by scene type)
|
||||
- [ ] Export: downloadable markdown dump of favourites, grouped by scene type
|
||||
|
||||
## Phase 5 — World Model
|
||||
|
||||
- [ ] Locations: name, type (Settlement / Wilderness Point / Dungeon / Landmark → maps to scene types), freeform features/tags
|
||||
- [ ] Districts (settlement sub-locations): name, danger level (none/low/med/high), district-scoped NPC pool
|
||||
- [ ] District encounter checks: manually triggered, chance weighted by danger level (defaults none 0% / low 15% / med 35% / high 60%, tunable in config)
|
||||
- [ ] Paths: from/to, distance (km), mode of travel, danger level, terrain notes
|
||||
- [ ] Travel time computation: distance ÷ RQG movement rate for mode (from compiled data, not hardcoded)
|
||||
- [ ] Multi-leg routing through intermediate locations when no direct path exists (sum time across legs)
|
||||
- [ ] NPCs scoped to location or district; both random draw and browsable list presentations
|
||||
|
||||
## Phase 6 — Journey Flow
|
||||
|
||||
- [ ] Origin/destination/mode selection UI (mode changeable per leg)
|
||||
- [ ] Route resolution + total travel time display
|
||||
- [ ] Open-road legs: fixed cadence, one encounter roll per day of travel
|
||||
- [ ] In-settlement: manual per-district checks (danger-weighted, from Phase 5)
|
||||
- [ ] Triggered rolls surface mixed flavour options tagged by scene type (derived from location/path type) + danger level
|
||||
- [ ] Resolution + save flow wired through GM layer and favourites as usual
|
||||
|
||||
## Phase 7 — Narration Layer (optional, last)
|
||||
|
||||
- [ ] Ollama integration: mechanical result → prose paragraph via OpenAI-compatible endpoint (`localhost:11434`), model name configurable
|
||||
- [ ] Plain templated-text fallback when Ollama unreachable or output unusable
|
||||
- [ ] Keep all mechanical resolution deterministic — LLM narrates only
|
||||
|
||||
## Open Questions (resolve before/during build)
|
||||
|
||||
- [ ] Markdown table structure for seed files, incl. new RQG-derived tables (Rune Magic, Occupation, Resistance Table, Ability Results Table)
|
||||
- [ ] Homeland/Kinship/Occupation replacement content from Stef (alongside digitization)
|
||||
- [ ] Personality Trait pair final set + starting-score generation method
|
||||
|
||||
## Explicitly Out of Scope (v1)
|
||||
|
||||
- Fresh OCR/extraction from the physical book
|
||||
- Chat-style generation / conversational interface
|
||||
- Category selection separate from scene type
|
||||
- Sorcery, Divine Intervention
|
||||
- Glorantha as setting (RQG is mechanics source only)
|
||||
Reference in New Issue
Block a user