Storylet Studio takes the "what should happen next?" logic out of your game code. Encounters on a road, rumours in a tavern, quest offers, interludes between chapters: your narrative designers turn them into cards, each with a rule for when it fits. You drop one small file into your game and ask which cards apply right now. Same answer on Unity, Unreal, Godot or the web.
MIT-licensed & free · no server · no subscription · no lock-in

.storyletsc bundleAnywhere your game has to pick from a pool of possibilities, that's a box of storylet cards. You could use one to decide:
Pick the runtime for the engine you actually ship on. What plays in the editor plays in your build: the same cards come up, in the same order, with the same saves, right down to the random draws.
Storyletter for the people designing the content, Storylet Engine for the people shipping the game, and the storyletengine CLI for the build. They share one vocabulary and run the same core, so what a designer sees in the editor is what your game and your CI see.
for narrative designers and writers
The storylet editor. Design cards, give each one a rule for when it comes up, and press Play to see what the real engine deals. The node view draws how your cards connect; you never wire anything up.
for the developers integrating it
Four runtimes over one bundle: JavaScript, Unity, Unreal and Godot. Same API, same behaviour, checked against one shared test suite.
for the project lead and CI
Create, validate, compile, merge and test coverage from the command line. It's the same code the editor runs, so you can gate a build on it.
Indie-first, built for a team to grow into. Plain text on disk, a format designed around the merge, and tooling that catches a dead beat before your players do.
A project is a folder of plain text files, one per deck, living in git or Perforce. No database, no server, no export step to get your data out.
A deck is a pool rather than a list, so two designers adding a card are never adding it to the same place. The conflict every other tool gives you doesn't happen here.
Every time the engine deals, it records what it looked at and why each card was passed over. "Why isn't this beat showing up?" is a line you can read, in the editor and in your game's log.
Threaded comments on any card, deck or outcome, stored with the project and versioned with it. No spreadsheet round trip.
The whole run: state, turns, what's on the table and what's been played, restored exactly, in any runtime.
The storyletengine CLI validates, compiles and measures coverage, so you can fail a build on a beat nothing can reach.
Optional. If you also use Patter for dialogue, both can read and write the same game state, so a conversation and a storylet work from one picture of the world.
Your game deals a hand and the engine picks the cards that fit, best first. Play a card and the world remembers: that particular rumour never comes round again, whilethat offer of a job keeps being shuffled back in until the player acts on it. No flags to set, no list of what's been seen to keep up to date.
Different boxes can deal in different ways: one for encounters, one for dramatic scenes, one for item pickups, each carrying whatever data your game needs on the card.
Start a project, deal your first hand and have it running in your own engine in one sitting. It's open source, MIT-licensed, and free.