C1 - Text & Dialogue

Updated 2 weeks ago

Text & Dialogue

Text · for creators. The friendliest asset type to work with — no art tools, no audio editor. Find a line in the Dev Hub, retype it, done. A rewrite, a translation, a joke patch: all the same workflow.

You'll be able to: edit any dialogue, item name, or UI string through the Dev Hub editor; understand the YAML it writes; format dialogue with the game's tags; and ship a multi-language text pack.

Before you start: Module A. No image editor required — if you skipped the sprite modules because you don't draw, this is your entry point.

What you can replace

Anything the game looks up through its localization system:

  • NPC and boss dialogue
  • Item names and descriptions
  • UI prompts, tooltips, menu strings
  • Quest text

If it's words on screen, it's almost certainly reachable.

The easy path — let the editor write it

You can author the files by hand, but you rarely should. The Dev Hub's Text editor finds the string for you and writes the file:

  1. Dev Hub → Text. The left pane lists every (sheet, key) the game has accessed this session — so trigger or approach the line you want, and it appears.
  2. Click a key → it loads into the editor on the right.
  3. Edit the text.
  4. Save. Stitchwork writes the YAML to your root workspace at Text/{Sheet}/{Lang}.yml.

That's the whole loop. The change shows the next time that line is triggered.

Editor edits always win. Text is the one asset type where your root workspace beats every pack (every other type is packs-over-root). It's deliberate: the editor saves to the root, and root-wins guarantees an in-editor change is never silently shadowed by an installed pack. So what you type is what you see — every time.

What it writes — the YAML

Under the hood it's a small, readable file. Knowing the shape helps when you hand-edit or review:

# Stitchwork text replacement
KEY_NAME: "Replacement text"
ANOTHER_KEY: "Supports \"escaped quotes\" if needed"
  • # starts a comment.
  • One KEY: "value" per entry. Keys are case- and whitespace-sensitive — copy them from the Dev Hub list, never retype.
  • Values are quoted strings.

The path:

Text/{SheetName}/{LANG}.yml

SheetName is the localization sheet (Wanderers, Prompts, Quests, …); LANG is a language code (EN, ZH, FR, JA, …).

Formatting dialogue — the tags

In-game line breaks and page turns come from tags, not from how the text looks in the file:

  • <page> — page break, NPC speaker
  • <hpage> — page break, Hornet speaker
  • <br> — line break within one page
  • <page=S>, <page=T>, … — variant page styles (under the editor's More if you need them)

Use the editor's tag buttons to insert these — they carry the spacing logic that makes the result sit right in-game.

Editor display ≠ saved file. The editor soft-wraps long lines at sentence boundaries so they're readable while you work — those wraps are editor-only and never reach the YAML. The in-game appearance is decided entirely by the tags. So don't fuss over how the paragraph looks in the box; place your <br>/<page> tags and trust those.

Escaping — the three rules

Inside a quoted value:

  • A double quote → \"
  • A backslash → \\
  • A newline → don't. Use <br>. A real newline in the YAML breaks the entry, and the game reads only up to the break.

Worked example — rewrite one quest line

  1. Text tab → trigger or approach the quest so its keys appear.
  2. Click the key, e.g. Wanderers.HUNTER_FAN_GREET.
  3. Edit the value; insert tags from the buttons if it needs page breaks.
  4. Save. It applies on the next trigger — already on screen, you'll see it the next time the line shows.

Multiple languages

To translate or rewrite across languages, ship one YAML per language under each sheet:

Text/Wanderers/
  EN.yml
  ZH.yml
  JA.yml

The game reads whichever matches its current language setting, so a player who switches language at runtime sees the right file's overrides. One caution: the editor auto-saves into the game's active language file — if you're authoring ZH but the game is set to English, you'll write EN.yml by mistake. Set the game language first (Settings → Language).

Testing a line that only plays once

A first-meeting greeting or a one-shot cutscene line is awkward to verify — you'd have to start a new save to hear it again. The practical fix is DebugMod's Save State: snapshot the moment before the conversation, edit your line, restore, and re-watch it in context as often as you like — it even covers dialogue the flag editor can't track. See Testing With Savestates.


You can now rewrite or translate any string through the editor, format it with tags, and ship it across languages. Next: Distributing Your Pack when it's ready to share — or Audio if your text pack wants a voice.