This release is mostly about scopes. Dialogues no longer have to sit on a single scene, variables can be bound to a scene, a chapter or the whole story and text fields can now pull values from variables directly.
There are also two new input actions: one for free text, one for picking from a set of choices. On top of that, stories, public author pages and asset packs are now browsable on the website.
Version: App: v0.16.0 - API: v0.17.2-ca2ea24f
Do you know why it is important that dialogues are connected to scenes? No? Me neither. So I added scopes to dialogues. They can now be bound to a scene, a chapter or the whole story.
Scene dialogues are still the default and behave exactly like before. Chapter and story dialogues are the new parts. They are useful for phone calls that could happen anywhere or companion chats that do not belong to a single location.
The same dialogue in a rainy forest feels different than in a cozy inn. You can also show different dialogue options depending on the current scene through conditions, so the dialogue stays shared while the context still matters.
Dialogues can also have their own background now. For example, a phone overlay that does not replace the whole scene.
Stories are now part of the website and can be linked and browsed from outside the app. They are meant to act like a funnel for new players and creators similar to how Steam publishes games on its website.
Author pages are available too, as long as the author sets the profile to public in account settings. You can use it as a portfolio page for your Talescape stories and tell players a little bit about what you are making.
Asset packs are browsable now too, so creators and players can see what is in the library without opening the editor first.
Display Text Input asks the player a question and stores the answer in a variable. The obvious case is the player's name, but it also works for door codes, callsigns, passwords or anything else that needs to be stored in story state.
Display Choices is the sibling of Display Text Input. It shows the player a handful of buttons and stores the selected value in a variable. Use it for difficulty level, faction selection, a quick route choice or any moment that needs a clear value without spinning up a full dialogue. The player sees readable labels, the story stores whatever value you defined behind them.
Variables can now be used as placeholders in text fields. If a text field supports this, there is a parenthesis icon on top of it.
This is what makes small personal touches possible: the player's name, the number of collected items, a selected faction, a remembered answer or any other value that already uses a variable.
The same picker is also available wherever conditions and actions need a variable value, so you do not have to remember exact names or leave the editor flow.
Beginning with this release Talescape can do math. Well, basic algebra.
There is a new variable type called Calculated. Instead of holding a fixed value, it derives its value from an expression. The expression can use plain numbers or placeholders for other variables.
Supported operators are *, +, /, %, - and parentheses. Use it for damage after armor, a score made from several counters or a progress value pulled from collected items.
Stories with lots of variables can become messy very quickly, especially when all variables are global. In software development we call this "global namespace pollution" and it is generally seen as an anti pattern. In normal words: everything lives in the same drawer and eventually you cannot find anything anymore.
So I added scopes to variables. They can now be bound to a scene or chapter or the whole story. Story variables match the previous behaviour and still make sense for values that matter everywhere. Scene and chapter variables are for state that should stay local.
Examples:
Larger stories are easier to keep clean this way. Not every temporary switch needs to sit next to health, sanity or other core story state.