App öffnen
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.

Verwandt