Story Starts

Edit tabs/story-starts.json.

Required Fields

Field Requirement
name Must match object key exactly. Keep names unique: a story start referenced by a name shared with another definition resolves to nothing, an exact id always resolves
description One compelling sentence shown during character creation
storyStart Opening narrative prompt for the AI (see format below)
locations Array of valid location keys - use one for specific starts, multiple for variety
locationAreas Array of area keys, or [] to allow any area in the location

Conditional Fields

Field When to Include
startingQuests When the story has immediate objectives for the player
firstQuest When you want AI-generated quest details on turn 0
startingPartyNPCs When the player begins with companions
isDefault Set true on exactly one story start. It is the start used when the host does not pick one; without it, the first entry is used
questGenerationGuidance When this story start needs quest tone/scope distinct from the rest of the world
startingItems Optional. Items granted on top of trait- and settings-based starting gear, for items specific to this story start. Usually leave to traits and settings and keep story starts narrative-focused

Never Include

Omit these fields (engine-controlled):

  • allowPlayerInput — the engine deletes it from every story start except the built-in one named exactly “Write Your Own”, where it is forced on with an empty storyStart

description Format

One sentence that helps players choose this starting scenario. Focus on the hook, not mechanics.

Format: “[Situation] - [what makes this start interesting]”

storyStart Format

The opening narrative prompt passed to the AI. This sets the scene and establishes the player’s immediate situation. The AI expands this into the full opening story.

Three-part structure:

  1. Scene - Where are we? What’s the atmosphere?
  2. Situation - What’s happening right now?
  3. Hook - What pulls the player forward?

Location Selection Guidance

Single location - Use when the story demands a specific starting point:

"locations": ["thornhaven"]

Multiple locations - Use for variety or “wanderer” style starts:

"locations": ["thornhaven", "riverside-camp", "mountain-pass"]

Quest Integration

startingQuests vs firstQuest:

  • startingQuests: Array of quest ids or unique quest names from tabs/quests.json - at game start, hidden quests are promoted to 'available'; quests already accepted (e.g. via a quest’s authored status) keep their status
  • firstQuest: Freeform text instruction - on turn 0, forces AI to generate a quest matching this description

These are independent systems. Use startingQuests for predefined quests, use firstQuest for AI-generated opening quests.

Schema

interface StoryStart {
  name: string
  description: string
  storyStart: string
  locations: string[]
  locationAreas: string[]
  startingQuests?: string[]
  firstQuest?: string
  startingPartyNPCs?: string[]
  startingItems?: Array<{ item: string; quantity: number }>
  isDefault?: boolean
  questGenerationGuidance?: string
  allowPlayerInput?: boolean
}

Reference

For detailed documentation, see story-starts-reference.md.


This site uses Just the Docs, a documentation theme for Jekyll.