Arcs
arcsarcs holds authored narrative arc definitions keyed by a stable arc id. It has no editor surface. An arc produces a generated story trigger from its premise, and labels the quests that belong to it once it has surfaced.
- In the world file
parties[""].arcs- API endpoint
/sections/arcs.json/sections/arcs.md- Size limits
No character-length caps for this section.
Schema
{
"parties": {
"": {
"arcs": {
"<key>": {
"id": "string",
"theme": "string",
"surfacePremise": "string",
"expectedConclusion": "string",
"status": "active | resolved | dormant",
"minQuestsForConclusion": "number",
"title": "string",
"secrets": [
"string"
]
}
}
}
}
}Example
{
"parties": {
"": {
"arcs": {
"the_drowned_bell": {
"id": "the_drowned_bell",
"title": "The Drowned Bell",
"theme": "A sunken shrine is waking, and the tide answers it",
"surfacePremise": "the bell beneath the harbour still rings on some nights",
"expectedConclusion": "The shrine is either sealed for good or allowed to finish waking.",
"minQuestsForConclusion": 3,
"status": "active",
"secrets": [
"The harbourmaster has been muffling the bell for years."
]
}
}
}
}
}Warning (no editor surface):
arcsis not reachable through the editor's menus, so entries are written in JSON. This page covers what the engine does with an arc; fields with no described effect are listed with their type only.
Fields
id
The arc's identifier.
Two places use it. The generated trigger described below is named arcSurfacing_ followed by this value. And a quest's runtime arc id is used as a key into arcs, so the value a quest carries is matched against this one.
theme
A string. When surfacePremise is absent, the engine substitutes theme in its place before building the trigger, so theme becomes the text read into the condition described below.
surfacePremise
A string, read verbatim into the generated condition described below as It is mentioned or revealed that <surfacePremise>. The value is placed into that sentence unchanged, so the bell beneath the harbour still rings on some nights produces a readable condition and The Drowned Bell arc does not.
The value is trimmed first. If nothing remains, no trigger is produced.
expectedConclusion
A string. Required.
minQuestsForConclusion
A number. Required.
title
A string. It appears in the quest label described below. When the label is produced and title is absent, the text used is Storyline.
secrets
Array<string>. Optional.
status
One of active, resolved, or dormant. Required.
The generated trigger
An arc produces a trigger, built from its id and its premise:
- its name is
arcSurfacing_followed by the arc'sid recurringisfalse- it holds one condition, of type
story, whose query isIt is mentioned or revealed thatfollowed by the premise - its effects list is empty
The premise is trimmed before the trigger is built, and if nothing remains the trigger is not produced at all. surfacePremise supplies the text, or theme when surfacePremise is absent.
A story condition is one of the two semantic condition types.
The quest label
A quest carries an arc id, a position within the arc, and the arc's escalation as it stood when the quest was created. None of the three is an authored field: they are absent from the quest fields an author writes, and are set during play.
When a quest has an arc id, and the arc that id resolves to has recorded a surfacing time, a label is produced from the arc's title and the quest's position. Where title is absent, Storyline is used instead.
While a planned quest belongs to an arc, the AI generates no new quest for that arc.
What the engine records
An arc gains six fields during play that are not authored: a creation time, a surfacing start time, a surfacing time, a resolved time, an escalation level, and a last-update time. The surfacing time is what enables the quest label above.
Authoring notes
- Write
surfacePremiseto complete the sentence it is placed in. The text is inserted unchanged afterIt is mentioned or revealed that. - A blank premise produces no trigger. If
surfacePremiseandthemeare both empty, nothing is generated for the arc. titleis player-facing wherever the quest label is shown, andStorylinestands in when it is missing.