Everything is an etude: the game's hidden state machine

Counted from staging/blueprint-index.jsonl, relinks/etude-facts.jsonl (40,360 references), and logic/etude-quest.jsonl (7,706 quest-graph edges) — build 20212986, patch 2.7.0x.

Quests, romances, companion recruitment, mythic transformations, crusade story beats, even tutorial pop-ups — underneath it all is one mechanism: etudes. The game ships 8,355 of these state-machine nodes, and only a minority of them have anything to do with the quest log.

One node type to rule the story

For scale, the same client ships 351 quests and 1,560 quest objectives. The etude layer is twenty times the quest list. An etude activates when its conditions are met, runs actions, completes, and triggers children — that's the whole API. Everything else is composition.

The proof is in what etudes point at (40,360 recorded references):

| Target | References | |---|---:| | Other etudes | 18,412 | | Areas / world map | 2,186 | | Units | 1,939 | | Quests & objectives | 1,570 | | Items | 1,417 | | Buffs | 1,372 | | Dialogs / cues / answers | 713 |

Romance chains (192 etudes), crusade events (228 etude_link edges), and mythic-path unlocks are all just well-decorated corners of this one graph.

How the tree hangs together

Nearly every etude — 8,251 of 8,355 — declares a parent (m_Parent): the system is a forest of story trees organized under roots. Below that, three composition verbs do the real work: m_StartsWith (4,544 — references that fire children on activation), m_Etude/Etude (5,241 — pointers at other nodes, typically as gates or triggers), and m_StartsOnComplete (312 — sequels).

Where quests actually advance

The quest log is a view over this graph. The join table shows it:

  • 2,829 dialog cues advance quest objectives — most progress comes from hearing lines, not fighting.
  • 1,143 dialog answers advance objectives — your choices are objective ticks.
  • 352 quests are activated directly by an etude crossing its threshold.

So the next time a journal entry updates mid-conversation, that's not a scripted special case — that's a cue in a dialog firing into the same state machine that also runs your romance and your apocalypse.

Browse per-quest structure in our Quests section.

Sources

  • relinks/etude-facts.jsonl — every etude's outgoing references, field-attributed (m_Parent, m_StartsWith, …).
  • logic/etude-quest.jsonl — the quest/objective/cue/answer edge census.
  • relinks/dialog-facts.jsonl — the dialog-side counterpart (125,426).
  • Build: 20212986 (patch 2.7.0x).

Related database section: Quests — e.g. Discussion avec Wenduag à l'endroit où est mort Savamelekh.