Games made with StoryFlow can finally save. A new Save System section in the interface node menu gives you ten nodes to work with, and loading a slot drops the player back exactly where they left off: the same line of dialogue, the same variables and characters, the same background and music, and the interface still holding whatever it had spawned or hidden. Every slot carries a label, a timestamp and a screenshot, so a load menu can show the moment rather than a placeholder. The example project ships a working one you can copy, four slots and all, with Load sitting next to New Game on the title screen. Dialogue nodes changed just as much. Click a node's title, its text or any row beneath it and start typing, variable chips included, without the details panel ever entering the picture. The same goes for clearing its character, tagging it or giving it a colour. Around that: two Play buttons instead of one, a project wizard that asks which template first, and an auto-save countdown you can actually watch.
What's New
New Features
Save & Load System: Your game can save now, whether it is running in the editor, in an HTML export or as a desktop app. A new Save System section in the interface node menu holds ten nodes: Save Game and Load Game, Delete Save, Does Save Exist, Get Save Slots, Get Save Label, Get Save Time and On Game Loaded, plus the two screenshot nodes below. A slot is just a name you pick. Build quick saves, numbered slots, chapter checkpoints, or an autosave that fires from a dialogue tag. Nothing is imposed on you, and there is no built-in autosave to work around
Loading Puts Everything Back: A load is not a jump to the nearest chapter. The player lands on the exact line they saved on. Global variables, script variables, character values, the background image, the visible character and the music on every channel all come back. So do your interfaces, including anything your script spawned, removed or restyled while playing, so an inventory that had grown by six items still has six. Options the player already picked stay picked
Screenshots Stored With Each Save: Capture Screenshot grabs the screen, and the next save keeps it. Get Save Screenshot hands it back as an image you can drop straight into an Image element. That is everything a load menu needs to show the real moment instead of a placeholder. It works in the editor, in an HTML export and in the desktop app
On Game Loaded: Fires once a load has finished, so you can close a menu, play a sound or set up whatever a fresh scene needs. It also warns you when something has drifted. Stale means the story changed since that save was written and the player could not be put back exactly where they were, so they resume at the start of the saved script instead, or at the startup script if that script is gone. Version Mismatch means the save came from a different export of the game
Restart Game: Resets everything and returns to the game’s first script, just like launching it again. The example project wires it to the Main Menu button in the pause menu
Remove from Parent: Detaches any element from wherever it sits at runtime, not only the ones your script spawned
A Save Menu to Copy From: The example project comes with a working save and load menu, built entirely out of interface nodes. Four slots, each with a label, a timestamp and a screenshot taken when the menu opens. A separate load panel shows the details of whichever row you hover, and saving no longer closes the menu on you. The title screen offers Load beside New Game, greyed out until there is something to load, and the pause menu gained Main Menu. Export it as a desktop app and both menus also show Quit
Edit a Dialogue Node Where It Sits: Click a node’s title, its main text or any of the Text and Button rows below it, and type. The caret lands where you clicked. Variable chips stay chips while you edit, exactly as they do in the details panel, and typing { still opens the variable menu. Enter commits a title. In the longer fields it starts a new line instead, and Ctrl+Enter commits. Escape puts back what was there, and clicking away keeps what you wrote. The two views stay in step, so text typed on the node appears in the panel as you go, and the other way round. The panel is still home for structure: adding, deleting and reordering options, setting conditions, and picking the character, image and audio
Character and Tags From the Node: Hover a node’s character portrait and a small X appears to clear it. Tags work the same way, and the tag strip carries an Add Tag button that opens the same picker the details panel uses. Tagging a line no longer means opening anything
Colour Your Dialogue Nodes: A node can take any of seven colours, or stay on the default. The colour tints the glow across its header, and its dot on the minimap when Colored Nodes on Minimap is turned on. Pick one from the new Color section in the details panel, or straight from the right-click menu on the canvas. Comments can be coloured from that menu too now, in script and interface canvases alike, instead of only from their details panel
Pick a Template, Then Fill In the Details: Creating a project starts with the choice that actually matters. The first step shows The Beast of Millhaven and Empty Project as full-height cards with their artwork behind them. Only once you have picked one do you name the project and choose where it lives, and a back button returns you to the choice
Play the Current File or the Startup Script: The Play button became two. The first plays whatever file you have open, the second starts from the project’s startup script, and neither asks you to change a setting first. While a game is running the two collapse into a single Stop button of the same width, so nothing shifts around under your cursor. F6 and F7 drive them, F8 runs an export, and both shortcuts stop a running game as well, even while the play window has focus
Auto-Save Countdown and Save on Focus Loss: The auto-save timer counts down where you can see it, so a save is never a surprise. A new option saves whenever the editor window loses focus, which covers the habit of alt-tabbing away mid-thought
New Projects Start With a Hint: An empty project’s first script now carries a short comment explaining how to begin, rather than leaving you with a blank canvas and a start node
Improvements
Save Slots Read Newest First: Get Save Slots returns the most recent save first, so a load menu built straight on top of it comes out in a sensible order with no sorting work from you. Get Save Time gives back a readable date and time in the player’s own locale, written the same way in the editor, in an HTML export and on the desktop
Auto-Save Settings Gathered Together: The auto-save options moved into a collapsible section in Application Settings, matching how the export options sit under Project
Switchers Match Across the App: The settings scope switcher, its category rows and the Designer and Script switcher in the UI Editor all use the same sliding pill, so they read as one control rather than three different ones
Comment Headers Keep the Glow, Lose the Bar: Comment nodes dropped the coloured band behind their title and kept the soft glow. A wall of comments no longer shouts over the nodes inside them
Cleaner Fresh Interfaces: A new interface file no longer arrives with a stray box backdrop sitting behind everything, and its click to advance hint starts centred
Play Controls Stay Put: The play buttons used to vanish when no file tab was open, taking Play from Startup Script with them even though it would have worked fine. They stay put now and grey out one at a time
Editing on the Canvas Can Be Turned Off: Settings > Script Editor gained “Edit Dialogue Nodes on Canvas”, on by default and mirrored in the quick settings menu on the canvas. Turn it off and a dialogue node behaves exactly as it did before: read-only on the canvas, edited entirely from the details panel
The Details Panel Stops Grabbing the Cursor: Selecting a dialogue node used to pull the text cursor into the panel’s text field. Clicking a node is how editing starts on the canvas now, so the panel leaves your cursor where you put it
Example Project Tidy-Up: Every script graph was realigned so connected nodes line up with the wires between them, and each group of nodes now sits inside a comment explaining what it does. The result is much easier to read through. Layouts were then adjusted by hand, and a comment in the reward script no longer mentions a quest status the project stopped using
Startup Interface Tooltip Says Where It Applies: It mentions the desktop export now, alongside Play and the HTML export
Bug Fixes
Option Conditions Accept Every Boolean: A dialogue option’s condition only recognised some of the nodes that produce a true or false value. An option gated on a Run Script result, a map lookup or an array check ignored its condition and showed up anyway. Sending the same value through a Set Bool node first worked, which made the whole thing feel random. Every boolean-producing node counts now
The Advance Hint Follows the Dialogue Box: Click to advance and the hint that tells the player about it disagreed about when they applied. The hint could sit there on a line that would not advance, and on some interfaces clicking did nothing while the hint still showed. They follow one rule now, and a dialogue box whose text output is not connected shows no hint at all
Portraits Show Without a Background: A dialogue node only drew its character portrait when the node also had a background image. The portrait shows on its own now
Deleted Projects Stay Deleted: Deleting a project left its window state behind, so a new project with the same name in the same place came back wearing the old one’s open tabs and layout. Everything belonging to a project is cleared with it now
Resized Comments Keep Their Size: Resizing a comment node was not recorded anywhere. Undo would not put it back, and since the file was never marked as changed the new size lasted only until you reopened the script, then sprang back. Resizing counts as a real edit now, in script and interface canvases alike, and the whole drag is one undo step
Map Variables Survive the Round Trip: Writing to a global map variable from an interface script could lose the change and leave the map with its old contents
Node Search Stops Guessing: Typing a query starting with “se” or “et” in the node menu was rewritten into a request for Set or Get nodes, so searching for something like “select” or “eternal” turned up nothing at all
Map Variables Look Like Map Variables: Dragging a map variable showed a plain ghost with no Map pill and none of its key and value colouring, and the debugger’s map entries lost the same colours during Play
Clearing an Image Leaves It Empty: Clearing an Image element’s source at runtime left a broken image icon behind instead of nothing
Saved Portraits and Names Come Back: A load restored a character’s variables but not the portrait and name on screen at the time
Variables You Added Survive an Older Save: Loading a save replaced a script’s variables wholesale, so anything you added to that script after the save was written vanished the moment a player loaded it. Saved values merge into the script’s current variables now, and interface scopes that are no longer on screen stop being written into new saves at all
Open File From the Call Stack Works Everywhere: The debugger’s call stack could not open a file on every platform, and some resolved paths used backslashes Linux could not join
The Example Logo Sits Still: The title screen logo could be dragged out of place
