Storylet Studio User Guide
Storylet Studio is a tool for authoring, running, and testing your game flow using storylets: interactive, replayable narratives built from small reusable scenes. As an author you define a storyworld, lay out the shape of the story in space and time, and then create its story beats (storylets). You can test and refine the game flow, then publish the result to your game. Our underlying Storylet Engine plugin decides which beat is appropriate at any moment, drawing from your storylets, and managing the world state and how it changes as your story plays out.
The system has several parts. You may only use some of them - the rest are documented here too, so you can see what's available and how the pieces fit together. Start with the introduction and concepts below, then read whichever parts apply to you.
- Introduction and Concepts - the ideas every storyworld is built from. Read these first; they apply to every part of the system.
- Storylet Studio (Desktop) - the authoring app you install on macOS or Windows. The reference for how authoring behaves.
- For Game Developers - the integrator's starting point: the author publish-and-load workflow, choosing an engine plugin, and where the source lives.
- StoryletEngine Plugins - drop a published storyworld into a game engine (Unreal, Unity, or JavaScript) and play it inside your game.
- Storylet Studio (Web) - the same authoring tool in a browser, with cloud workspaces and shared, multi-person accounts.
- StoryletEngine Server - a hosted runtime that lets many devices play into one shared storyworld session over a network.
- StoryletEngine Server Plugin (JavaScript) - a client library for driving a server-hosted session from JavaScript.
- Server Administration - accounts, organisations, members, and roles for the online services (the web app and the server).
- Licensing and Source - the free-but-proprietary desktop app, the MIT-licensed plugins, and the public source mirrors.
Introduction and Concepts
Start here. These pages introduce Storylet Studio and the ideas every storyworld is built from. They apply to every part of the system - desktop, web, plugins, and server alike.
- What Are Storylets? - the gentle, engine-agnostic introduction: storylets as rearrangeable chunks of story with a condition on the front. Read this first if the idea is new to you.
- Getting Started - install or sign in, try the sample, build your first storyworld.
- Core Concepts - the building blocks of a storyworld: acts, decks, storylets, sites, and state.
- Writing Conditions and Outcome Values - the expression syntax used in storylet conditions and outcomes.
- Multiplayer Storyworlds - the optional model where many players share one live storyworld: shared vs personal state, and the durable
@playerand@systemscopes. Single-player storyworlds can skip this.
Storylet Studio (Desktop)
The desktop authoring app is the heart of Storylet Studio: a single application for macOS and Windows where you build, test, and publish a storyworld. It works offline and keeps each project in a single file on your computer.
This chapter is the reference for how authoring behaves - the editor, the testing tools, Game Data, and producing a standalone player. The web app behaves the same way; its chapter covers only the differences.
- Storylet Studio Desktop - install, the
.storyletstudiofile format, the File menu, updates, and where things live on disk. - Game Data - attaching custom fields to storylets so a player shell can consume them.
- Simulate - playing through your draft live inside the editor. The everyday way to test as you build.
- Coverage Testing - run the storyworld many times with random choices and see how often each zone / deck / site / storylet / outcome was exercised. Finds dead content fast.
- External Inputs - declare values that a host game or operator sets from outside the story, so Coverage and Simulate can reach content gated on them. Applies to single-player and multiplayer alike.
- Connections - static analysis of which storylets can enable, disable, or influence which others, derived from their conditions and outcomes.
- The Standalone Player - bundle a one-file HTML player from the Publish pane so a playtester can try your storyworld without Storylet Studio installed.
For Game Developers
Here to drop a storyworld into a game? Start here: the publish-and-load workflow, which plugin to pick (Unreal, Unity, or JavaScript), and where the open-source plugin repos and licensing live.
- For Game Developers - the publish-and-load workflow, an engine comparison, and what carries across engines.
StoryletEngine Plugins
To ship a finished storyworld in a game, you publish it from Storylet Studio as a .storyworld bundle and load it through one of the StoryletEngine plugins for your game engine. The plugins are separate downloads from the authoring tool, and all three play the same bundle identically.
- StoryletEngine for Unreal - load
.storyworldbundles in Unreal Engine 5.7+ and play them from Blueprint or C++. - StoryletEngine for Unity - load
.storyworldbundles in Unity 6 LTS (6000.0+) and play them from C#. - StoryletEngine for JavaScript - load
.storyworldbundles in any modern JS runtime (browser, Node, Bun, Deno, Workers, Electron, Tauri) and drive them from JS / TypeScript.
Storylet Studio (Web)
The web app is the same authoring tool running in a browser. There's nothing to install, your work lives in a cloud workspace, and several people can collaborate in one shared organisation. Authoring itself is identical to the desktop app, so the Storylet Studio (Desktop) chapter is your main reference; the page below covers only what's different.
- The Web App - sign-in, cloud workspaces, multi-person collaboration, and what differs from desktop.
- Storyworld Import / Export - moving a single storyworld in and out of the web app as a
.storyletstudiofile (the desktop app uses that format natively).
StoryletEngine Server
The StoryletEngine Server is a hosted runtime for published storyworlds. Instead of running inside one game, the storyworld runs as a network service, and many external clients (kiosks, IoT buttons, mobile apps, game backends, browsers behind a QR code) join one shared session and play through it together over the network.
Not every organisation has the server: you can use the web authoring app without it. If your organisation doesn't, this chapter and the next won't apply to you.
- Publishing to the StoryletEngine Server - the author flow: stage a bundle from the Publish page so it appears in the server's management UI.
- Monitoring the StoryletEngine Server - the operator flow: the Applications list, the Session Inspector, promote / rollback / retire, and saving / restoring world state.
StoryletEngine Server Plugin (JavaScript)
When your storyworld lives on the server, your own code talks to it over the network. The StoryletEngine Client for JavaScript is the client library for that: it drives a server-hosted engine over REST + SSE using the same call patterns as the local JavaScript plugin.
- StoryletEngine Client for JavaScript - the server-driven variant of the JS plugin. Use it when several devices need to share one session, or when the storyworld lives on the server.
Server Administration
The online services - the web app and the StoryletEngine Server - are organised around accounts, organisations, members, and roles. The desktop app needs none of this (it runs locally with no sign-in), but if you collaborate in the web app or operate the server, these pages explain how access works.
- Signing In - signing in with Google or email/password, what an organisation is, being invited, and why you might see less than a colleague.
- Members and Roles - what each role can do, how managers and administrators invite people (links and email), and how administrators manage members.
Licensing and Source
The desktop app is free to use but proprietary; the engine plugins are open source under the MIT license, with their source mirrored publicly on GitHub.
- Licensing and Source - the full terms for the app and the plugins, and the public source-mirror URLs.