Story Starts
Edit tabs/story-starts.json.
Required Fields
| Field | Requirement |
|---|---|
name | Must match object key exactly |
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 to pre-select it |
questGenerationGuidance | When this story start needs quest tone/scope distinct from the rest of the world |
Never Include
Omit these fields (auto-managed):
startingItems(handled by traits and settings - keep story starts narrative-focused)
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:
- Scene - Where are we? What’s the atmosphere?
- Situation - What’s happening right now?
- 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 names fromtabs/quests.json- sets them to'available'status at game startfirstQuest: 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[]
isDefault?: boolean
questGenerationGuidance?: string
}
Reference
For detailed documentation, see story-starts-reference.md.