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.