World JSON format

From Infinite Worlds
Jump to navigation Jump to search

Every world is stored as a single JSON document, editable through the Show/edit raw JSON tool in Misc Advanced Features. Raw JSON editing is unsupported and undocumented by the platform; this page is a community reference for authors who already know the world editor and want to know which JSON key each control writes, and where the two do not line up. It is accurate to the best of my knowledge as of 08/07/2026 but obviously subject to change.


The sections below follow the editor's accordion from top to bottom. Each names the JSON keys its controls produce; keys with no control of their own are listed at the end.

Three things worth knowing before editing the raw JSON:

  • Extra instruction blocks and keyword instruction blocks are different arrays. The Extra instruction blocks under Main instructions write instructionBlocks; Keyword Instruction Blocks write loreBookEntries. They look alike in the editor but are stored separately.
  • "Enable" and "Use custom" checkboxes map to object-versus-null, not a boolean. Victory, defeat and the specialist instructions are written as objects (or omitted) rather than as a true/false flag.
  • Dropdowns and radio buttons store enum strings, not their labels. For example the tracked-item Visibility option "Visible to player and AI" is stored as everyone. The exact strings are given per section.

Introducing the story[edit]

Main article: Introducing the Story.

All top-level keys. Unchecking Track version number removes version rather than zeroing it.

Editor field JSON key Notes
Title title
Track version number (checkbox) version present/absent Unchecking removes the field
Version version String, e.g. "0.01"
Automatically increase version number each edit autoAdvanceVersion Default true
Description description The world-select blurb; does not affect gameplay
Show some additional text on the character selection screen charSelectText null when unchecked
Preview image (Make alternative images / Upload image) previewImage, fullSizePreviewImage, previewImageOptions, fullSizePreviewImageOptions, currentPreviewImageIndex
Background story background
First action firstInput
Objective objective Supports <<variable>> substitution

Main instructions[edit]

Main article: Main instructions.

Extra instruction blocks here write instructionBlocks (always sent), a different array from the keyword blocks below.

Editor field JSON key Notes
Detail and instructions instructions
Extra instruction blocks (Add extra instruction block) instructionBlocks[] Each block: Name to name (cosmetic), Content to content
Author style authorStyle
Design notes (Record design notes) designNotes null unless the checkbox is ticked
Mature content (Indicate mature content) mature, nsfw
Content warnings contentWarnings

Image style[edit]

Main article: Image style.

The two Prompt beginning / Prompt ending pairs are the Pre/Post keys. The named style chosen inside Change image model is a separate key from the model itself.

Editor field JSON key Notes
Current image model / Change image model imageModel e.g. "manticore"
Named style (inside Change image model) imageStyle e.g. "photo_1"
Illustration guidance for characters: Prompt beginning imageStyleCharacterPre
Illustration guidance for characters: Prompt ending imageStyleCharacterPost
Illustration guidance for objects and scenery: Prompt beginning imageStyleNonCharacterPre
Illustration guidance for objects and scenery: Prompt ending imageStyleNonCharacterPost

Tag-based models (e.g. sd_1_5) surface the four illustrationStyle{Character,NonCharacter}{High,Low}Priority fields instead of the Pre/Post pairs. Separately, the cover image is generated from imagePromptDetails - the genre, subject, appearance, clothes, setting and expression boxes in the cover-image generation dialog, distinct from the style fields above.

Player character options[edit]

Main article: Player character options.

The Customization settings checkboxes are the six allowChangeCharacter* booleans; Skills is a flat string array. Skill scores clamp 0-5.

Editor field JSON key Notes
Skills skills[]
Customization settings allowChangeCharacterName / Description / Skills / ItemValues / Portrait / NewPortrait
Characters (Add character / Generate character with AI) possibleCharacters[]

Per character: Name to name, description to description, short id to characterId, per-skill scores to the skills dict (0-5), portraits to portrait*, the portrait-generation boxes (genre, subject, appearance, clothes, setting, expression) to portraitPromptDetails, and any per-character starting values to initialTrackedItemValues - this is where a "depends on which character" tracked item stores its values, not on the item.

Victory and defeat[edit]

Main article: Victory and defeat.

Each Enable checkbox toggles the whole object against null.

Editor field JSON key Notes
Enable victory condition victoryCondition object vs null
Victory condition victoryCondition.condition
Text shown on victory victoryCondition.text
Enable defeat condition defeatCondition object vs null
Defeat condition defeatCondition.condition
Text shown on defeat defeatCondition.text

Both objects also carry "alreadyFired": false on export.

Other characters[edit]

Main article: Other characters.

Writes NPCs. Note Brief summary is one_liner (not summary), and several JSON fields have no control on the form.

Editor field JSON key Notes
Name name
Brief summary one_liner Only info visible to the AI until the NPC or location is mentioned
Character detail detail
Appearance appearance
Location location

No form control: secret_info, names[] (aliases), img_appearance, img_clothing. NPCs cannot be referenced by <<variables>>.

Keyword instruction blocks[edit]

Main article: Keyword Instruction Blocks.

Writes loreBookEntries (keyword-gated) - the counterpart to the always-on instructionBlocks under Main instructions. The comma-separated Keywords box becomes a JSON array.

Editor field JSON key Notes
Name name Cosmetic
Keywords keywords[] Comma-separated string in the editor; array in JSON
Content content

Tracked items[edit]

Main article: Items to track.

Writes trackedItems. The dropdowns and radios store enum strings, not their labels.

Editor field JSON key Notes
Name name Referenced elsewhere as <<name_lowercased>>
Data type (dropdown) dataType Text to text, Number to number, XML to xml
Description of what this item signifies description
Visibility (dropdown) visibility Label to enum; six values (below)
Automatically update tracked item (checkbox) autoUpdate
Update instructions updateInstructions
Initial value at start of game (radios) initialValueBasedOnPC see mapping below
Initial value for all characters initialValue Literal, or a phrase the AI resolves

Initial value radios to initialValueBasedOnPC:

Radio label Enum value
Initial value is always the same same
Initial value depends on which character the player chooses character
Initial value can be entered by player player
(no radio; JSON-only) world

visibility takes one of six enum strings: everyone, ai_only, ai_only_boring, player_only, hidden, hidden_boring.

The _boring variants (ai_only_boring, hidden_boring) are the same as ai_only and hidden - no mechanical difference except to potentially flag the content as "not worth paying attention to" for the AI.

Trigger events[edit]

Main article: Trigger events.

Writes triggerEvents. The condition and effect pickers are arrays of typed objects; the flags at the bottom of a trigger are three separate keys.

Editor concept JSON key
Trigger event (name + description) triggerEvents[].name, .description
Situation when the trigger fires triggerConditions[] (7 condition types)
What it does triggerEffects[] (22 effect types)
Fire more than once / evaluate at game start / nested AND-OR canTriggerMoreThanOnce, triggerOnStartOfGame, advancedLogic

Specialist instructions[edit]

Main article: Specialist Instructions.

Each Use custom... checkbox gates whether its key is written at all. The Hide skills from player checkbox also lives here, beside the evaluation instructions.

Editor field JSON key Notes
Use custom evaluation instructions evaluationRequest Omitted when unchecked
Hide skills from player (checkbox, with the evaluation instructions) hideSkillSystem Hides native skills from the chooser, customiser and character sheet. Not in the base schema, and not preserved on export/import - hand-carry it through JSON fix chains. Side effect: also hides character-select tracked items that use character-specific values and are not a list of options
Use custom description instructions descriptionRequest Omitted when unchecked
Use custom summarisation instructions summaryRequest Omitted when unchecked

Misc advanced features[edit]

Main article: Misc Advanced Features.

Editor field Maps to Notes
Using variables / View variable names and equation options the variables and equations system Not a stored key; affects how <<...>> tokens resolve everywhere
Enable AI-specific instruction blocks enableAISpecificInstructionBlocks Unlocks per-block selectedAIProfiles
Show/edit raw JSON the whole document Unsupported and undocumented

Raw-JSON gotchas: edits in the JSON pane save only when you press Import JSON to world; edits made elsewhere in the editor do not appear in the pane until you press Refresh raw JSON.

Permissions[edit]

The Permissions section is documented on World editing.

Editor field JSON key Notes
Allow others to edit this adventure permissionsOnceShared.editing Default true
Allow others to share this adventure permissionsOnceShared.sharing Default true

Order and generated fields[edit]

positionInList on each tracked item, NPC, trigger, instruction block and character records its order in its list - the up/down arrows beside each entry in the editor move it. The illustration prompt objects imagePromptDetails (cover image) and each character's portraitPromptDetails are the genre/subject/appearance/clothes/setting/expression boxes in the cover- and portrait-generation dialogs.

These keys really have no editor control - set automatically or reachable only from the raw JSON:

JSON key Where it comes from
schemaVersion Set by the platform
favorite The star toggle on the world card, not the editor
recommendedAIModel Largely vestigial

See Also[edit]