First official release

It's finally here. Snowfall version 2.0, now known as Quillscript, is its first official release and will become the main branch of the language from now onwards.

It's been a long road from 1.0 to 2.0, and many things have changed in the plugin design and core, but don't worry, it's still your well-known markup scripting language that resembles its predecessor and expands it in every way possible.

To keep pace with the new Unreal Engine 5, Quillscript is a complete rethink of how this plugin works and is written from scratch. It takes everything good in Snowfall and adds new tools and features. You can check an in-depth list of all changes and new features in the migration guide.

Release Date: 2023-05-23

Engine Version: 5.2


Do I have to purchase Quillscript again?

No. Quillscript is for all meanings, Snowfall 2.0, and will come as an update for all users. Unfortunately, this comes at a cost; we can't provide updates for Snowfall 1.x anymore, since the Marketplace has no code branching functionalities.

Do I have to learn it all again?

No. Quillscript is similar to Snowfall language, and you can check all major differences on our migration guide. For programmers, that is a different situation; Quillscript code is very other from Snowfall and was written from scratch.

Is Quillscript backward compatible?

No. To redesign Snowfall into Quillscript, we had to sacrifice backward compatibility. It can't run Snowfall scripts, just as Snowfall can't run Quillscript files. If you want to update your current Snowfall scripts to Quillscript, follow our migration guide. https://docs.quillscript.ink/about/migration-guide

Are Snowfall users abandoned?

No. Although we can't release new Snowfall versions for new engine versions, we will keep providing support and patches when necessary. Also, Snowfall documentation page and Discord's support room will stay live. Feel free to ask in our support channel if you have any questions.

New Features (Since Beta 2)


  • The script can pass and receive any type of Unreal Engine data from functions, like Structs, Maps, Arrays, and Sets. The entry and outer string must follow Unreal Engine's pattern for that data type. Map:(("key","value")), Array: ("a","b",c"), etc.

  • Allow usage of nested quotation in variable assignments and function call parameters.

  • Allow usage of tabs alongside whitespaces in function calls.


  • import will add only once, as intended.

  • An included script that also has include directives will have them resolved properly too.

  • Add scripts inclusion by ID.


  • Add an action menu entry option to export the source code.


  • Add a method to get a collection of options using member option index: GetOptionsSet

  • Change some member properties and function from private do protected to allow access in custom child classes.

  • Move the UI logic for the Dialogue Box and Selection Box from the PlayDialogue and PlayOption functions respectivelly, to their own functions, to simplify overrides.


  • When creating a Dialog Box, Selection Box, or Background Box using content browser submenu entries, the editor will prompt a message asking to copy the built-in widget or create a new one.

  • Separate the widgets lifecycle management code and script code.

  • Add plugin options and Interpreter delegates to allow advanced users to manage widgets lifecycle and behavior.


  • Add the Settings Asset, to store settings securely.

  • The 'Default' value for Projects' Script Settings instead of changing that setting to its default value, will keep the setting unchanged.

  • A fixed ID will be automatically assigned to statements with no label name, based on the line content.

  • Add Script Target: {&Target}

  • Provide methods to access arrays of primitive types: {arrayVar::1}

  • Provide methods to access maps of primitive types: {mapVar::key}

  • Add function ToHash

  • Add function ToHex

  • Add function PromptSaveToTextFile

  • Add function PromptLoadTextFile

  • The functions used to Set and Get from Game.ini file can be used to handle other .ini files

  • The TakeScreenshot function can select a target folder

  • Update deprecated code to 5.2


  • Add HasAuthority() function and macro (HAS_AUTHORITY) to use inside static functions.


  • Fix an issue that was preventing the use of Quillscript variables as function parameters.

  • Fix an issue that was preventing the use of projects' default script settings.

  • Fix an issue that was preventing scape parenthesis and brackets: \(, \), \]

  • Fix an issue that was preventing the use of the start directive.

  • Fix an issue where the live reloading was overwriting current script settings.

  • Fix minor warning messages.

  • Prevent a crash when a variable is assigned with syntax mistakes.

  • Statement source line and comment are properly detokenized.

Last updated