Snowfall Storytelling Plugin - Story and narrative flow control

Snowfall Storytelling Plugin is an Unreal Engine 4 code plugin. It provides story and narrative flow control for RPGs, visual novels and other story driven games. Including player choices, story branching, story conditions and more. All of that through an easy to use screenplay style language.

Snowfall Storytelling Language
Using a simple set of story writing rules, that includes essential functionalities, like conditions, choices and branching, game developers have a powerful, yet simple, script language to work with, made with game writers in mind.

Writers can create ‘.sf’ plain text files that can be later dragged and dropped it to the Engine Editor to create a Scene Script asset, used by a Scene Actor to play the story.

UI designers can create their own Background, Dialog Box and Player Options Widgets using UMG full power, just by extending the base classes.

Programmers can run their own custom code during a story, by extending the Scene Base class and adding new functions to it, either with Blueprint or C++.


  • New “Scene Script” asset type
  • Easy as drag & drop
  • Full Blueprint and C++ support
  • Easy to extend

View our Documentation Page for more.

Request support here, e-mail or on Discord

Update 1

Scene Asset Parent Class Changed to Actor

  • Scene assets are now Actors for better manipulation and management, benefiting from all its parent class functionalities.

Scene Base Blueprint Removed

  • Scene mandatory Blueprint parent class is not necessary anymore. All its tasks are now managed by C++ for better performance and inheritance simplicity.

Scene Blueprint Factory

  • Scene blueprints can now be automatically created in content browser.


Rollback Functionality

  • Rollback function for Dialog Boxes and Player Options

Snowfall Functionalities Category Group

  • All Snowfall blueprint nodes are now grouped in a single category.


Script Viewer

  • Built in Snowfall script language reader.

Update 2

Fixes a bug in the default Dialog Box widget, that cause variables to do not display its value during typewriting effect, until all its letters where printed.

Update 3 (UE 4.25)

WARNING! POSSIBLE BREAKING CHANGES: Some functions, classes and files were renamed. Updating may cause “missing references errors”. In some projects, could be necessary to start a new project with UE4.25 and migrate your assets, replacing possible missing references, manually.

New Naming Convention

  • Some functions, classes and files were renamed and moved, for better convention and organization.
  • This is a possible breaking change for some projects and can be dealt manually, case by case.


Remove Dictionaries in favor of Maps and String Tables

  • Variable replacing in dialog boxes is now done using Unreal’s default Maps and StringTables, instead of the custom FDictionary struct. Making it simpler and more versatile.


IconedTextBlock is now SmartTextBlock

  • Smart Text Blocks have more capabilities than Iconed Text Blocks.
  • Check Smart Text Block section in documentation for more information.


Saving and Loading Functions Removed

  • Previously, saving and loading where done by Snowfall functions. Now, developers can, and should, implement their own saving and loading functionalities, that suits their project requirements better.
  • Save Blueprint/Classes, must still be a SnowSaveGame children, in order to automatically store Snowfall script language variables ($ var = value).

Fixed a crash caused by missing pointers in Editor

Update 4

Scene Actor Autodelete

  • Scene Actors now are automatically deleted after its script ends

Scenario Asset

  • Scenario assets are no longer experimental
  • Scenarios are used to change background image and background music during a Scene, an important feature for visual novels
  • Check Scenario Documentation for more


Multiple Widgets

  • Developers can set the widgets to use for Background, Dialog Box and Player Options for each entry, this means that during a Scene, different dialogs could use different Dialog Boxes, allowing better customization and stylization
  • Check Widgets Documentation for more

Delete Variables

  • Variables can now be deleted
  • Developers should delete variables that aren’t required anymore, to save space
  • Check Command Documentation for more

Disable Rollback Functionality

  • Rollback functionality can be disable in ‘Project Settings > Snowfall Settings’
  • Developers should disable this feature to save memory, if their project doesn’t use it

Verbosity Mode

  • Snowfall debug messages can be disable in ‘Project Settings > Snowfall Settings’


Fix a bug that prevents Smart Text Blocks from autoloading unregistered String Tables

Update 5

Better Rich Text Support

  • Default Dialog Box typewriting animation supports rich text
  • Default Player Options support rich text
  • Preset some basic Rich Text styles. Check “Snowfall Content/DataTables/SnowRichTextStyles”

Better Script Reimport Support

  • Script assets will automatically updates when their ‘.sf’ source file is saved while the Editor is open
  • Menu entry and Call in Editor function to reimport Script Assets
  • Auto reimporting can be disable in Snowfall Settings

Special Tag ‘#once

Default Dialog Box Input Keys

  • ‘Proceed’ input action is no longer required
  • ‘H’ key hides default Dialog Box and Player Options Widgets
  • Hold ‘Crtl’ to skip dialogues

**Scenario built-in functions accept fade transition

‘Player Options’ now accept functions as commands

Snowfall settings moved to Plugins category

Play Scene node will use ‘Scene Base’ class if no class is given

Fix an issue that prevents using multiple Player Options Widgets in the same Scene

Fix an issue that causes story flow to stop if a ‘Go To’ conditions where evaluated as false**

Update 6

Lexer at Runtime

  • It’s now possible to parse ‘Snowfall Script’ source files or strings into a ‘Script Object’ during runtime. It’s not restricted to Editor anymore

Special tag #mute

  • Hide ‘Dialog Box’ until next dialogue

Better Story Flow Control

  • Story flow is now managed by the Scene object (Proceed, Wait, Interrupt)
  • Add macros to evaluate story flow state in Blueprints


Story widgets now have a reference to their owner scene

Default ‘Dialog Box’ and ‘Player Options’ rollback buttons were merged into one for better user experience

Fix an issue that prevents the use of the ‘Not Equal’ logic operator (!=) with Boolean variables

Hi,does your plugin support localization?


Yes. All “Dialogs” and “Player Options”, are stored as Unreal’s Text type. So, it can be gathered and localized using the editor’s localization dashboard as usual.

I thought about writing an own markup language for dialogs and found this. Great work!


To anyone landing in this page. Please check our documentation page and roadmap section to view patch notes and information about each update and future releases.

Also, our first tutorial video is ready. We will be posting more quick tutorials like this.
Snowfall Storytelling - Getting Started - YouTube