Open app
Moonborn — Developers

Game NPC orchestration

Persistent, in-character NPCs across long play sessions. Multi-character scenes with ensemble relationships. Voice drift checks so the wizard doesn't slowly turn into a sarcastic AI.

The pain in LLM-driven NPCs is that they drift. A villain who starts the campaign cold and calculating ends the third session warm and helpful — not because the writer wanted that, but because the prompt fell out of the context window. Moonborn's runtime is built for the opposite outcome: characters who stay in character across long arcs.

When this fits

  • RPG / interactive fiction prototypes where the player will spend hours with a small cast.
  • Multi-character scenes — two NPCs in conflict, a guild meeting, a dialogue between rivals.
  • Narrative consistency audits — checking a finished episode against the character bible.
  • NPC cast bibles maintained as code — pair with Persona-as-code so writers diff characters in pull requests.

What Moonborn provides

  • Voice fingerprint — fifty-scenario baseline embedded at generation; every reply scored against it.
  • Drift detection with configurable thresholds — tighter for central villains, looser for crowd NPCs.
  • Ensemble relationships — typed edges (rival, ex-lover, mentor) injected into multi-character scene prompts.
  • Lineage — fork your "town drunk" archetype into 12 specific NPCs without re-typing their personalities.
  • Long-term memory — players remember promises NPCs made three sessions ago.

What Moonborn does NOT provide

We are explicit about scope: Moonborn is the character layer, not the game engine. You still own:

  • Scene state, turn order, branching narrative.
  • The combat system, the economy, the world simulation.
  • Save/load + replay infrastructure.
  • The UI players touch.

Pair Moonborn with your game engine (Unity, Godot, Twine, custom). Moonborn lives behind your dialogue trigger; whatever calls chat.sendMessage is up to you.

Pattern: cast bible as code

  1. Sketch the cast in a markdown file: name, role, two-line pitch.
  2. Use Build your first persona to generate each one.
  3. Audit + tune; refine villains tighter than crowd characters.
  4. Declare relationships: Multi-character scenes tutorial.
  5. Connect Git sync (Persona-as-code) so the bible lives in your repo.
  6. In-engine, every NPC dialogue trigger maps to a session against the matching persona.

Drift thresholds for NPCs

Defaults to start:

  • Major villain / antagonist: 0.20 (strict; their voice is a plot device).
  • Companion characters: 0.25 (consistent, but human variation acceptable).
  • Crowd / minor NPCs: 0.35 (looser; we mostly want them to not break immersion).

Set these per-persona, not workspace-wide — the central villain deserves the budget; the innkeeper does not.

Quality gate per release

Before shipping a new chapter, run the provocation test suite against every named NPC. Failures point at characters who'd break under player-injected weirdness — the kind of failure mode that shows up on Reddit threads.

Tier

Pro and up.

Next