Skip to main content

UE5 Plugin Changelog

New updates and improvements to the StoryFlow plugin for Unreal Engine.

UE5 Plugin v1.2.1

June 20, 2026

Typed Map & Array Blueprint APIs, UE 5.8 Support

Adds Blueprint typed get and set functions for map variables and typed getters for array variables, so game code reads and writes maps and arrays without unpacking FStoryFlowVariant. Also adds Unreal Engine 5.8 support.

What's New

New Features
  • Typed map get/set API: read and write map variables from Blueprint or C++ as a native TMap without touching FStoryFlowVariant. Eight typed getters cover the supported key and value combinations: GetStringToBoolMap, GetStringToIntMap, GetStringToFloatMap, GetStringToStringMap and the integer-key GetIntToBoolMap, GetIntToIntMap, GetIntToFloatMap, GetIntToStringMap, each returning a populated TMap. The StringTo* getters accept both string-keyed and enum-keyed maps. *ToStringMap returns the string-family value types, resolving string and enum values through the string table for localized text and returning image, audio and character values as raw asset keys
  • Typed map setters: SetStringToBoolMap, SetStringToIntMap, SetStringToFloatMap, SetStringToStringMap and the matching SetIntTo*Map functions write a whole TMap into a map variable. Writes fire OnVariableChanged and live-refresh the active dialogue. A type mismatch logs a warning and leaves the variable untouched
  • GetMapKeysInOrder: returns a map variable’s keys as a TArray<FString> in the order the editor serialized them. Because TMap is unordered, this is the way to iterate a map’s entries deterministically. Integer keys are returned stringified
  • Typed array getters: GetBoolArrayVariable, GetIntArrayVariable, GetFloatArrayVariable, GetStringArrayVariable, GetEnumArrayVariable, GetImageArrayVariable and GetAudioArrayVariable unpack an array variable into a plain Blueprint array of the matching type, so reading array values no longer means unwrapping each FStoryFlowVariant by hand. String and enum elements resolve through the string table while image and audio elements stay raw
  • Unreal Engine 5.8 support: the plugin now builds against UE 5.8 and ships a 5.8 package, covering Unreal Engine 5.3 through 5.8
Show Full Changelog

UE5 Plugin v1.2.0

June 12, 2026

Map Variables, Modulo Nodes & Array Write APIs

Adds full runtime support for the editor's map variable type including forEachMap loops, runScript map parameters and save game persistence. Also adds modulo and moduloFloat nodes, Blueprint array variable setters, a GetMapVariable accessor and a batch of evaluator fixes covering loops, arrays, float reads and enum conversions.

What's New

New Features
  • Map variables: full runtime support for the editor’s map variable type. getMap, setMap, getMapValue, setMapValue, hasMapKey, mapSize, mapKeys, mapValues, removeMapKey and clearMap are all handled, with entry order preserved exactly as the editor serializes it so key and value listings iterate like the HTML runtime
  • forEachMap loops: iterate a map with the current entry snapshotted per iteration and both the key and the value exposed as loop outputs for the body
  • setMap aliases live map storage like the HTML runtime, so after assigning one map variable to another both observe the same mutations; asset to runtime copy boundaries detach the storage so script data is never modified
  • runScript input parameters and output returns now carry map values across script boundaries
  • Added GetMapVariable on UStoryFlowComponent, returning a map variable as parallel Keys and Values arrays of FStoryFlowVariant with string and enum values resolved through the string table for localized text while keys stay raw identifiers
  • Added the typed Set*ArrayVariable Blueprint functions (SetBoolArrayVariable, SetIntArrayVariable, SetFloatArrayVariable, SetStringArrayVariable, SetEnumArrayVariable, SetImageArrayVariable, SetAudioArrayVariable and SetCharacterArrayVariable) so game code can write array variables, mirroring the Unity plugin’s API; writes fire OnVariableChanged and live-refresh the active dialogue like the scalar setters
  • Added modulo and moduloFloat math nodes
  • Map variables persist through save games and map string values resolve through the strings table like scalar strings
Bug Fixes
  • Fixed bool array elements reading false inside their own forEach loop body (e.g. wired into a branch condition) caused by the boolean chain processor wiping the loop’s live element cache and replacing it with a stale default
  • Fixed ResetVariables leaving raw string-table keys (like var_3_value) in string variables instead of localized text
  • Fixed setArrayElement nodes reading their inline index and value from the wrong exported data fields, which broke set-element operations without wired inputs
  • Fixed float reads returning the default for whole-number inline values, so a value of 2 now reads as 2.0 instead of 0
  • Fixed IntToEnum and StringToEnum conversions always evaluating to an empty string; enum value lists are now kept on import and resolved from the downstream node like the HTML runtime
  • Fixed Set* nodes returning the type default instead of the variable they set when used as a value source for downstream nodes
  • Fixed setCharacterVar destroying array character variables on first write; array writes now evaluate the wired array input instead of coercing the array to a scalar
  • Fixed input handle matching where a scalar suffix could swallow its array sibling, breaking arrayContains and findIn needles and getArrayElement indexes
  • Fixed setArrayElement and addTo* nodes never resolving wired image, audio and character values due to handle names not matching the editor’s exported numbered handles
Improvements
  • Execution trace output now matches the shapes emitted by the other runtimes for cross-runtime comparison, and a map trace fixture package was added under TestContent
  • Added the plugin’s first automation test suites: StoryFlow.EnumConversions (6 tests) and StoryFlow.ArrayVariables (5 tests) drive the real component, subsystem and globals path through a standalone GameInstance
Show Full Changelog

UE5 Plugin v1.1.1

May 20, 2026

Character Runtime APIs, Array Reads & Localized Strings

Adds Blueprint APIs for reading character arrays, resolving portraits and reacting to live character variable mutations, plus a generic GetArrayVariable. GetStringVariable now returns localized text, and unsupported node types now log a clear warning instead of silently returning defaults.

What's New

New Features
  • Character runtime APIsGetCharacter, GetCharacterArrayVariable, GetCharacterVariableNames and GetCharacterPortrait are now exposed on UStoryFlowComponent so game code can drive multi-character UIs without reaching into private runtime state
  • OnCharacterVariableChanged delegate — Blueprint-assignable multicast that fires after a setCharacterVar node mutates Name, Image or a custom variable, with (CharacterPath, VariableName, Value) parameters; lets non-speaker portraits and HUDs react to live mutations
  • Added GetArrayVariable on UStoryFlowComponent — returns any array variable as TArray<FStoryFlowVariant> with string and enum elements routed through the string table for localized text; image, audio and character elements pass through as raw keys
  • GetCharacterPortrait(CharacterPath, AssetKey) walks the standard character → script → project asset pools and falls back to the cached cross-script texture, mirroring the resolution path used by BuildDialogueState; pass an empty AssetKey to use the character’s current Image field (which reflects runtime setCharacterVar("Image", ...) changes)
Bug Fixes
  • Fixed FStoryFlowVariable, FStoryFlowNode, FStoryFlowDialogueState and related struct fields not appearing in the Details panel for Blueprint variable instances — fields are now marked VisibleAnywhere so authored values and runtime state can be inspected in-editor
Improvements
  • GetStringVariable now resolves the stored value through the string table before returning, matching the Unity plugin and giving Blueprint callers localized text instead of raw string keys — callers that relied on the raw key will need to look it up directly on the variant
  • Evaluator chains (EvaluateBooleanFromNode, EvaluateIntegerFromNode, EvaluateFloatFromNode, EvaluateStringFromNode and the shared array evaluator) now log a one-shot warning per node when they encounter a source node of an unsupported type instead of silently returning the type’s default value — surfaces scripts that use node types from a newer editor version
  • The ProcessNode “unhandled node type” warning now reports the node id alongside the type string for easier diagnosis
Show Full Changelog

UE5 Plugin v1.1.0

April 8, 2026

Data-Only Sync, Portrait UI & Execution Fixes

Adds support for data-only WebSocket sync (skip asset copying for fast iteration), a new Portrait dialogue widget with detached character image, UI-optimized texture import settings, and fixes for media variable evaluation, RunScript parameter passing, and array operations.

What's New

New Features
  • Data-only sync support — when the StoryFlow Editor syncs with “Data Only” enabled, the plugin reuses previously imported assets from the Unreal project instead of requiring source files in the build directory, enabling fast script-only iteration without re-copying images and audio
  • Added WBP_Dialogue_Portrait example widget with the character portrait displayed as a large image anchored to bottom center of the screen, separate from the dialogue panel
  • Imported textures are now automatically configured for UI usage: UserInterface2D compression, no mipmaps, UI texture group, and sRGB enabled — prevents blurry images in UMG widgets
Bug Fixes
  • Fixed PlayAudio not resolving audio assets from character or project resolved assets
  • Fixed SetBackgroundImage not resolving image assets through evaluation chains
  • Fixed SetCharacterVar with Image type not evaluating connected node chains for the value
  • Fixed character images not resolving when referenced across script boundaries (e.g. via RunScript)
  • Fixed media variable evaluation (GetImage, GetAudio) not checking all asset resolution sources
  • Fixed RunScript output parameters not passing return values back to the calling script
  • Fixed array Push, Pop, RemoveAt, and Insert operations not correctly modifying the source array
  • Fixed execution tracing for cross-runtime debugging
Improvements
  • Added execution trace logging ([SF-TRACE] prefix) for node processing, edge traversal, variable changes, and script calls — matches the trace format used by the Godot and Unity plugins for cross-runtime comparison
Show Full Changelog

UE5 Plugin v1.0.7

April 6, 2026

Blueprint Variable Access & forEach Loop Fixes

Fixes variable access from Blueprint outside of active dialogue, adds typed character variable functions with asset picker support, and resolves forEach loop issues with character variable arrays and boolean cache staleness.

What's New

New Features
  • Added typed character variable Blueprint functions (GetCharacterBoolVariable, SetCharacterBoolVariable, GetCharacterIntVariable, etc.) that accept a UStoryFlowCharacterAsset reference instead of a string path — enables native Unreal asset picker in Blueprint for selecting characters
  • Character Name field now properly resolves through the string table, returning the localized display name instead of the raw string key
Bug Fixes
  • Fixed all variable getter/setter Blueprint functions (GetBoolVariable, SetBoolVariable, GetIntVariable, etc.) failing with “Variable not found” warning when called outside of active dialogue (e.g., from BeginPlay) — global variables now fall back to the subsystem’s runtime state when the execution context isn’t initialized
  • Fixed character variable access (GetCharacterVariable, SetCharacterVariable) also failing outside of active dialogue — same subsystem fallback applied
  • Fixed GetLocalizedString not resolving string keys when called outside of active dialogue
  • Fixed character variables being keyed by internal ID instead of display name in the importer, causing runtime lookups by name to fail
  • Fixed GetCharacterVar nodes not working as array sources for forEach loops
  • Fixed forEach loops not clearing boolean evaluation caches between iterations, causing stale results from previous iterations to carry over
  • Fixed forEach loop context being pushed once at initialization instead of per-iteration, which broke nested loop tracking and the loop index
  • Fixed defensive NodeId checks on loop stack pop operations to prevent popping the wrong loop context in nested forEach scenarios
  • Fixed ProcessBooleanChain default case not clearing cached output before re-evaluation, causing stale boolean values when the same node was evaluated multiple times
Improvements
  • Legacy character variable functions (GetCharacterVariable, SetCharacterVariable) moved to “Character (Legacy)” Blueprint category — still functional but new typed versions are recommended
  • Updated example WBP_Dialogue widget to auto-advance dialogue after a short delay for narrative-only nodes
Show Full Changelog

UE5 Plugin v1.0.6

March 29, 2026

Text Block Visibility Conditions

Fixes text block conditions not being evaluated, so conditional text blocks now correctly show or hide based on their visibility rules.

What's New

Bug Fixes
  • Fixed text blocks in dialogue nodes ignoring their visibility conditions — text blocks with conditions were always shown regardless of whether their condition evaluated to true or false; they now use the same visibility evaluation as dialogue options
Show Full Changelog

UE5 Plugin v1.0.5

March 22, 2026

Node Input Matching Fix

Fixes connected node inputs failing to evaluate due to handle suffix mismatch with the editor's export format.

What's New

Bug Fixes
  • Fixed connected node inputs not being found when evaluating data edges (e.g. a SET node receiving a value from a RANDOM or GET node) - the editor exports handles with numbered suffixes that the runtime now matches via prefix fallback
Show Full Changelog

UE5 Plugin v1.0.4

March 19, 2026

3D Audio, Audio Advance & Character Evaluators

Adds optional 3D spatial audio, auto-advance when dialogue audio finishes, overridable audio functions, and GetCharacterVar support in all evaluator types.

What's New

New Features
  • 3D Audio Support: Optional bUse3DAudio toggle that switches dialogue audio from 2D to attached 3D sound on the owning actor, with DialogueAttenuation property for controlling falloff
  • Overridable Audio Functions: PlayDialogueAudio and StopDialogueAudio are now BlueprintNativeEvent for custom audio system overrides
  • Audio Advance-on-End: Dialogue nodes with audioAdvanceOnEnd auto-advance when audio finishes playing, with audioAllowSkip to let players skip early
  • GetCharacterVar in Evaluators: GetCharacterVar nodes can now be evaluated in boolean, integer, float, and string contexts with dynamic character input resolution
Show Full Changelog

UE5 Plugin v1.0.3

March 8, 2026

Multi-Version Build Support & Stability

Adds support for building the plugin across multiple Unreal Engine versions, improves API documentation, and includes stability fixes.

What's New

Improvements
  • Multi-Version Build System: New build script for compiling the plugin against UE 5.3, 5.4, 5.5, 5.6, and 5.7 in a single run
  • Improved API Documentation: Updated variable API comments and type annotations to reflect the name-based lookup introduced in v1.0.2
Bug Fixes
  • Fixed Build Script: Resolved issues with the automated build pipeline that could cause packaging failures on certain configurations
  • Fixed Variable Lookup Edge Case: Corrected a rare issue where stale variable name indices could return incorrect values after rapid script switching
Show Full Changelog

UE5 Plugin v1.0.2

March 4, 2026

Name-Based Variable API

Public Blueprint variable functions now use display names instead of internal UUIDs for a cleaner developer experience.

What's New

Improvements
  • Name-Based Variable API: Get/Set variable functions on StoryFlowComponent, ProjectAsset, and ScriptAsset now accept variable display names instead of internal UUIDs, with O(1) name-to-ID index lookup
Show Full Changelog

UE5 Plugin v1.0.1

March 1, 2026

Live Sync Stability & Variable Change Event

Fixes a critical live sync crash and improves the OnVariableChanged delegate for Blueprint users.

What's New

Improvements
  • OnVariableChanged Delegate: Now passes the full FStoryFlowVariable struct instead of raw VariableId and FStoryFlowVariant, giving Blueprint users Variable.Name, Variable.Type, and Variable.Value from a single output pin
Bug Fixes
  • Fixed Live Sync Crash: Assets are now updated in-place instead of deleted and recreated during sync, preventing UObjectArray refcount assertion crashes
  • Fixed Concurrent Import: Added import guard to prevent overlapping imports from rapid WebSocket messages
Show Full Changelog

UE5 Plugin v1.0.0

February 27, 2026

Initial Release

The first official release of the StoryFlow plugin for Unreal Engine 5, bringing full dialogue runtime support to UE5 projects.

What's New

New Features
  • Full Runtime Engine: Complete execution engine with 200+ node types and O(1) edge lookups
  • StoryFlow Component: Actor component for running dialogues with full Blueprint and C++ API
  • Variable System: Boolean, integer, float, string, enum, image, audio, and character types
  • Array Operations: Full array support with ForEach loops across all variable types
  • Text Interpolation: Live variable interpolation with {varname} and {Character.Name} syntax
  • RunScript Interface: Parameter passing, output extraction, and exit route routing for called scripts
  • Random Branch Node: Weighted random path selection with dynamic integer weight evaluation
  • Character System: Per-asset character DataAssets with GetCharacterVar/SetCharacterVar and built-in Name/Image fields
  • Audio Playback: Dialogue audio with SoundClass, volume controls, loop, reset, and MP3-to-WAV auto-conversion
  • Save & Load: Slot-based persistence for global variables, runtime characters, and once-only option tracking
  • Click-to-Advance: AdvanceDialogue() for narrative dialogue nodes with no options
  • Built-in Dialogue UI: Default widget with auto-fallback when no custom UI is assigned
  • JSON Importer: Import preserving folder structure with Textures/Audio/Data asset organization
  • Live Sync: WebSocket client with PIE-safe sync guard to prevent asset replacement crashes
  • Toolbar Integration: StoryFlow toolbar in Blueprint, Widget, Animation BP, and Behavior Tree editors
  • Localization: String variable values and inline strings resolved through string tables at runtime
Show Full Changelog

Development Begins

December 1, 2025