Moonborn — Developers
Interactive-Fiction-Prototyping
Bring an einem Nachmittag einen spielbaren Prototyp mit drei NPCs auf. Verdrahte Moonborn in eine minimale CLI oder Web-Shell; iteriere am Schreiben, bevor du dich auf eine Engine festlegst.
Du brauchst keine Game-Engine, um zu testen, ob eine Besetzung zusammenhält. Eine CLI + die Chat-API reicht für die Schreib- Iteration.
Das Minimum
import Moonborn from '@moonborn/sdk';
import readline from 'node:readline';
const client = new Moonborn({ apiKey: process.env.MOONBORN_API_KEY });
// 1. Hole oder erstelle drei Personas + Beziehungen.
const [merchant, traveler, tavern] = await loadCast();
// 2. Öffne eine gemeinsame Session.
const session = await client.chat.createSession({
personaId: tavern.id,
ensemble: [merchant.id, traveler.id],
metadata: { sceneId: 'tavern_prototype' },
});
// 3. Loop.
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
function prompt(): void {
rl.question('You > ', async (text) => {
if (text.trim() === ':quit') return rl.close();
// Autor wählt den Sprecher per Namens-Präfix:
// "merchant: Wir bedienen keine Auswärtigen." → merchant sagt diese Zeile.
// "was ist gerade passiert?" → Narrator-Mode, wähle wer passt.
const [tag, ...rest] = text.split(':');
const speakerName = rest.length > 0 ? tag.trim() : 'narrator';
const content = rest.length > 0 ? rest.join(':').trim() : text;
const speaker = matchSpeaker(speakerName) ?? tavern;
const reply = await client.chat.sendMessage({
sessionId: session.id,
speaker: speaker.id,
content,
});
console.log(`${speaker.surface.name.display} > ${reply.content}`);
if (reply.driftAlert) console.warn(' (drift)');
prompt();
});
}
prompt();Was du bekommst
- Schreib-Iteration in Minuten, nicht Wochen.
- Drift-Scores pro Turn — sieh, welcher Charakter zu rutschen anfängt, wenn die Szene heißer wird.
- Long-Term-Memory persistiert über Runs — dein Prototyp kann Callbacks haben.
Was du vs. einer echten Engine verlierst
- Player-UI (nur CLI-Text).
- Branching-Scene-State (du skriptest linear).
- Save/Load jenseits der Session-ID.
Aufstieg zu einer echten Engine
Wenn die Besetzung in der CLI zusammenhält, portieren die Session- IDs unverändert in deine gewählte Engine — Unity, Godot, Twine, custom. Die Moonborn-Seite ist es egal, welche UI die Konversation hostet.