The Story Graph is the central view of Ren'Py Story Architect. It shows your project's Story Flow as an interactive graph of nodes and edges.
A StoryNode is a logical game-architecture entity. It is NOT the same as a Ren'Py label — a label is an optional implementation binding.
Node kinds:
- start — the entry point of the game.
- scene — a linear sequence of dialogue/narration.
- choice — a branching point.
- hub — a sandbox location the player can return to.
- event — a scene triggered from a hub.
- milestone — a significant story beat.
- ending — a terminal node.
- utility — a technical label (e.g. save/load screen).
Node status:
- planned — authored, not yet implemented in source.
- in_progress — being worked on.
- implemented — bound to a Ren'Py label and source.
New authored nodes automatically receive a unique intendedLabel (a
valid, unique ASCII Ren'Py identifier derived from the title). A missing,
invalid, or duplicate label is a blocking validation error: generation is
refused until it is fixed.
An Edge represents a flow relationship between two nodes.
Edge kinds:
- flow — normal transition.
- unlock — one node unlocks another.
- requirement — one node requires another to have been visited.
Transfer kinds (for flow edges):
- jump — Ren'Py
jumpstatement. - call — Ren'Py
callstatement (returns). - choice — Ren'Py
menuchoice. - return — Ren'Py
returnstatement. - planned — intended but not yet implemented.
- none — no transfer (e.g. unlock/requirement).
Flow edges may carry a condition (e.g. if affection_lisa >= 5) and an
isFallback flag for else/fallback branches.
Sandbox games use a hub/event pattern:
- A hub node is a location the player can return to (e.g.
home). - An event node is triggered from the hub and returns to it.
- Events have
hubNodeIdandreturnTargetNodeIdmetadata (EventMetadata).
Story Architect detects this pattern automatically from imported source and lets you author it explicitly for planned content. Event→hub returns are marked hidden by default so the graph does not become a "star of return arrows"; the FilterBar can reveal them.
The FilterBar at the top of the graph view lets you:
- Filter by node kind and status.
- Search nodes by title/label (free text).
- Show/hide hidden event returns (edges with
hiddenByDefault). - Variable Influence Focus — pick a variable; the graph classifies each node as WRITE / READ / READ+WRITE / UNRELATED and mutes unrelated nodes (backed by the Variable Usage Index).
- Character Focus — pick a character; unrelated nodes are muted (backed by the Character Usage Index).
The two focus modes are mutually exclusive; a badge shows the active focus with read/write counts or scene/dialogue counts, and a clear button resets it.
The Diagnostics panel (left sidebar, "Diagnostics" tab) groups issues by category:
- Structural — broken jump/call targets, unreachable labels, undefined variables, duplicate labels.
- Architecture — authored-project validation issues.
- Scene — scene validation issues.
- Localization — localization validation issues.
Cyclic sandbox hubs are not reported as errors merely for being cyclic — a
home label that jumps back to itself is valid sandbox architecture.
Click a diagnostic to jump to the relevant node. The Project Health panel offers a broader health review.