Integrate·For programmers
Ship narratives in Unreal Engine.
A native C++ plugin with a GAS-inspired action system, typed variable model, and clean JSON export. No lock-in, no magic base classes.
// Custom action class
class UNSAction_PlayLine
: public UNarrativeAction
void Begin()
void Complete()
void End()
Action Classes
GAS-inspired action system
UNarrativeAction is the base class for all gameplay actions. PlayLine, MoveTo, FadeCamera — define them in C++ or Blueprint. Async lifecycle: Begin, Complete, End. NarrativeStack dispatches them at runtime.
Integrations
Fits your existing stack
State providers, services, and graph parameters integrate with your existing UE subsystems. Variables live as UPROPERTYs on your objects — accessed by NS via reflection. No special base classes required.
set Mary.Mood = "suspicious"
when Mary.Trust > 50
run Mary.PlayLine()
Expression Evaluator
Same expressions, zero translation
C++ AST tree-walker evaluates conditions, interpolation, and set statements at runtime. Same expressions authored in the editor, parsed to an AST, serialised in JSON, and evaluated in C++ at runtime.
{
"schema": 12,
"nodes": [{ "type": "dialogue" }],
"exits": ["Happy", "Bad"],
"params": { }
}
Export
Clean JSON, no lock-in
Graphs export to a spec'd JSON format. Flat node arrays, typed exits, expression ASTs, graph parameters — designed for fast deserialization and engine-side tooling. Schema versioned.
UE Plugin
Scan components & push schema
NarrativeStack
Autocomplete & validation
Registry Sync
Live types from Unreal
The UE plugin scans entity components, state providers, and services at editor time. Pushes the schema to NarrativeStack so autocomplete and validation use live engine types — always in sync.
class UMyGraphParams
: public UNarrativeGraphParams
TSoftObjectPtr<UWorld> Location
ETimeOfDay Time
EWeather Weather
Scene Metadata
Graph parameters
Developer-defined schema per graph for scene setup — location, time of day, character placements. Exported as typed structured data. Subgraph-aware. Runtime values applied via reflection before the cursor advances.
Roadmap
Integrate·Schema-versioned JSON export
ShippedFlat node arrays, typed exits, expression ASTs, and graph parameters.
Integrate·GAS-inspired action system
ShippedUNarrativeAction base class with async Begin/Complete/End lifecycle in C++ or Blueprint.
Integrate·C++ expression evaluator
ShippedAST tree-walker for conditions, interpolation, and set statements at runtime.
Integrate·State providers and services
ShippedVariables as UPROPERTYs accessed via reflection. No special base classes required.
Integrate·Live registry sync
ShippedUE plugin scans entity components at editor time, pushes live types to NarrativeStack.
Integrate·Graph parameters
ShippedDeveloper-defined scene metadata per graph — location, time of day, character placements — exported as typed structured data.