App öffnen
Moonborn — Developers

NPC-Scene-Orchestrierung

Paare Moonborns Chat-Runtime mit dem Scene-State deiner Game-Engine. Turn-Order, Branching, Save/Load — was auf welche Seite gehört.

Moonborn ist die Charakter-Schicht. Deine Game-Engine ist die Szenen-Schicht. Dieser Guide ist die Grenze.

Was Moonborn besitzt

  • Persona-Generation + Persistence.
  • Per-Antwort Voice-Fingerprinting + Drift-Detection.
  • Ensemble-Beziehungen (typisierte Kanten zwischen Personas).
  • Long-Term-Memory für jede Chat-Session.

Was deine Engine besitzt

  • Scene-State-Machine — wer ist auf der Bühne, wer kann sprechen.
  • Turn-Order — Round-Robin, Initiative, Narrative-Cue.
  • Branching-Narrative — welche Szene als nächstes feuert.
  • Save / Load — Serialisierung des Scene-States neben Moonborn- Session-IDs.
  • Die UI, die Spieler berühren.

Wiring-Pattern

// Engine-Seite: definiere eine Szene mit einer Besetzung.
const scene = new Scene({
  participants: [merchant, traveler, tavern_owner],
  turnOrder: 'narrative',
});
 
// Engine triggert einen Dialog.
scene.onPlayerSay(async (text) => {
  // Wähle, wer basierend auf Scene-State antwortet.
  const speaker = scene.pickResponder(text);
 
  // Sprich mit Moonborn.
  const reply = await client.chat.sendMessage({
    sessionId: speaker.moonbornSessionId,
    speaker: speaker.personaId,
    content: text,
  });
 
  // Engine handhabt die Antwort — Animation, UI, State-Transitions.
  scene.deliver(speaker, reply.content);
});

Multi-Persona-Sessions

Für Szenen mit mehreren Sprechern öffne eine Session mit einem ensemble-Array:

const session = await client.chat.createSession({
  personaId: merchant.id,
  ensemble: [traveler.id, tavern_owner.id],
  metadata: { sceneId: 'tavern_arrival' },
});

Jeder Call übergibt ein speaker-Feld, damit die richtige Persona antwortet. Drift-Scores werden pro Sprecher getrackt, nicht pro Szene.

Save / Load

Die Chat-Session-ID ist der Persistence-Schlüssel. Speichere sie neben deinem Scene-State:

{
  "sceneId": "tavern_arrival",
  "turn": 14,
  "moonbornSessions": {
    "merchant": "sess_01H...",
    "traveler": "sess_01H...",
    "tavern_owner": "sess_01H..."
  }
}

Beim Load setzt die Session fort — Short-Term-Memory ist intakt; Long-Term-Memory + Voice-Fingerprint sind weiterhin gepinnt.

Tarif

Pro und höher.

Verwandt