The studio
The editor. What it shows you, what it checks, and what it will build for you.
Runs in your browser. No account, no upload, no server. Your worlds are stored on the machine you edit on. The only copy that leaves it is the one you export.
Layout
| Toolbar | World switcher, new, load, export, undo and redo, where play begins, mods, rules, and a valid or invalid light. |
| Dock | Five tabs: World, Content, Rules, Story, Module. Each collection shows a count and a problem count. |
| World tree | Biome, area, and place nesting. Start pinned on top. Marks hand drawn maps against generated ones, and who lives where. |
| Viewport | Map, the current table, then eight analysis views. |
| Inspector | A form for the selection, plus any generators that apply to it. |
| Problems | Errors, warnings, notes. Each row jumps to the field. |
| Command palette | Every entry, collection, view, and action. Around 2,300 items in a large world. |
Forms
- Built from the same definition your world is checked against. Forms and the reference cannot disagree.
- A reference field is a dropdown of ids that exist.
- Field order: identity, then the ones that matter most, then format order, then your
extradata. - The DSL is edited as raw JSON.
- Every entry has Rename, Duplicate, Delete, Save as prefab, Move, and its own raw JSON.
- Used by shows what points at the selected entry.
What it checks
Every problem gives a location, what is wrong, and a code you can filter on.
As you type.
- Whether it is valid JSON, with a line, a column, and a caret. Missing brackets, trailing commas, single quotes, missing commas, unquoted values, bad escapes, and comments.
- Whether every field exists and holds the right type.
- Whether every DSL operator is real.
- Whether every id you reference resolves, and whether any id is used twice.
- Whether your dungeon and map settings can be satisfied.
Around thirty codes. Typos get a suggestion, or a list of valid options when nothing is close.
When you pause. Ten rules about whether the world makes sense:
| An objective points at something that is not there. |
| A flag nothing ever sets. |
| A flag set only by something unreachable. |
| A road that goes one way by accident. |
| A reward handed over before the roll that decides it. |
| A hidden place with no way of being found. |
| A discovery formula naming a lore thread that does not exist. |
| A quest nothing can offer. |
| A monster an objective wants killed that never appears. |
| A conversation nobody can open. |
Notes are hidden behind a checkbox. Rules can be turned off, and the setting stays with you rather than travelling with the file. You can also record decisions you have already made, such as which quests gate an act, and a rule will stop reporting them.
Also when you pause. Anything your installed mods report. A mod cannot make a valid world invalid.
Analysis views
| Map | The dungeon this starting number produces, with a reroll. |
| Balance | Rolls your loot and encounter tables thousands of times. |
| Dialogue graph | Every node and edge in a conversation. |
| Timeline | Runs your memory settings forward day by day. |
| Perception | What can see, hear, or smell what, and from how far. |
| Events | Every gate in the world, with its condition in plain language. |
| Orphans | Entries nothing references. |
| Prefabs | Templates, their instances, and your overrides. |
| Raw JSON | The document as it will export. |
Each runs the real generators, tables, and senses, at the same starting number the game uses.
Generators
All show you the result before applying it.
| Dungeon fit | Builds the dungeon several times, reports what it really produces, and offers a size that matches. Fifteen rooms often comes out as two. |
| Lay out | Ring positions for places that have none. Skips anything already placed. |
| Roads | Edits both directions of a connection together. One way is a checkbox. |
| Quest chain | Reads the chain shape from what you wrote, names the missing piece, and wires the next link. |
| Dialogue pieces | Adds a rumour, a favour, or small talk, with the payoff on the success node. |
| Description | Creates, names, and links a text pool in one edit. Refuses to edit a shared pool. |
| Hidden | Five values become a discovery formula. Reads existing ones back. |
| Noticing | An arrival trigger that teaches a clue. |
| Thread | A lore thread and everywhere its clues are anchored. |
| Map painter | Paint, erase, rectangle, and eyedropper across map layers. One undo step per stroke. |
| Prefabs | Four strings become a full entry. Editing a prefab tells you it will update thirty six inns before it does. |
| Rename | Changes an id everywhere, and names the places it could not, such as an objective target or a flag. |
Starting a world
A new world is the smallest valid one, with no starting location and no areas. The problems panel opens as a to do list.
The composer copies a ruleset from any world you have. Tick from thirteen sections. Ticking classes pulls in attributes. Unticking something drops whatever depended on it. Wording is one checkbox.
Examples ship with the studio and are yours to edit once loaded.
Storage
- Worlds live in your browser. Two worlds may share a name and an id.
- Saving happens on its own while you pause.
- An invalid document is kept as a draft and offered back next time you open the world.
- Export writes exactly what you wrote, with no defaults filled in.
- Opening accepts an exported file, a hand written world, or either compressed.
Playing your world
Export, then open the file in the player. The studio has no play button. What the player loads is the file anyone else would receive.