A text RPG runtime
An entire game is one JSON document.
Rules, skills, classes, monsters, places, and quests are written as JSON. The game is derived from it. Write a world, export a file, play it. Aurendel, the world that comes with it, is the first one written for it.
1037fields in the format
47addressable collections
200engine messages you can rewrite
0things hardcoded in the engine
Three things to know
- Nothing is hardcoded. No attributes, damage types, conditions, or level curve come with the engine. You declare them. Strength, hit points, and twenty levels are not assumed. Vigor, Wits, and a resource called Vitality work the same.
- Runs replay exactly. A save carries the dice with it. The same starting number and the same choices reproduce a run move for move.
- The engine states facts, never sentences. It reports a hit for seven. Your world supplies the words, in any language.
The five parts of a world
{
"id": "my_game", "version": "1.0.0",
"meta": { "title": "My Game" },
"rules": { /* attributes, resources, conditions, dice, the level curve */ },
"content": { /* abilities, items, monsters, NPCs, factions */ },
"world": { /* biomes, areas, points of interest, dungeons, maps */ },
"narrative": { /* text, dialogue, quests, lore, memory */ },
"start": { /* party size, character creation, where play begins */ }
}An unrecognised property is refused when the world loads, with a line number and usually a suggestion. Adding data of your own goes through one of six mechanisms.
One vocabulary for gating
Loot limited by mastery, a door needing a key, dialogue that appears once a faction trusts you, a monster reacting to what it remembers. One requirement object, used in sixteen places.
Where to go
Linking things togetherHow quests, people, places, and lore join up.Writing formulasThe JSON language behind every condition and effect.Your own JSONextra, custom predicates, flags, layering, mods.The documentHow to read the reference, and the rules ids follow.Top level and startmeta, mods, start, character creation.rulesAttributes, resources, conditions, dice, progression.contentAbilities, items, monsters, NPCs, factions.worldBiomes, areas, places, dungeons, maps, time.narrativeText, dialogue, quests, lore, memory.requirementsThe one gating vocabulary, used everywhere.The DSLExpressions, predicates, effects, dice.systemTextEvery sentence the engine says.The engineHow a turn runs, and why it replays exactly.The studioWhat the editor gives you.
Getting started
- Open the studio. Pick New world, Examples, or Open a file.
- Build. Worlds save in your browser as you work. Nothing is uploaded.
- Export to get a world file.
- Open that file in the player.
The studio covers the editor. The document covers writing the JSON directly.