Skip to main content
unofficial.voyage wiki
Builder

Appendix

Size Limits

The hard character and size caps the Voyage editor enforces on each section and field, and how each one is measured.

import SizeLimitsTables from "~/components/static/SizeLimitsTables.astro";

Hard caps enforced by the Voyage editor's validation. Exceeding these causes the wand validator to reject the document. Every figure below is derived directly from the live Voyage schema, so the grouped tables and the per-section "Size limits" rows in each section hero always reflect the current enforced limits.

📋 Note (How limits are measured):

  • Raw character length (value.length in JS, len(value) in Python) -- used for every individual string field: description, basicInfo, hiddenInfo, narratorStyle, death.instructions, aiInstructions leaf strings, storySettings.worldBackground, storySettings.questGenerationGuidance, trigger condition/effect text and value fields, and similar. Counts every codepoint as 1 -- newlines count as 1 char, em dashes count as 1 char. This is what the Voyage editor's character counter reports and what the engine enforces.
  • Pretty-printed JSON (json.dumps(obj, indent=2)) -- used for all section totals (items, factions, regions, npcs, npcTypes, locations, worldLore, traitCategories, itemSettings) and for storyStarts per-entry. The structure is serialized with 2-space indentation, and that indentation counts toward the limit -- every nesting level adds 2 spaces per line against your budget, so deeply nested entries cost more than their text alone.
  • Compact JSON (json.dumps(obj)) -- used for individual NPC entries and individual trigger entries.