FORERUNNER // CHARACTER ENGINE · API PREVIEW
LEBENDIGE CHARAKTERE & WELTEN,IN DEINEM SPIEL.
Eine API für KI-Charaktere, die sich erinnern, sprechen und in ihrer Rolle bleiben — und für die Welten, in denen sie leben. Derselbe Stack, der Mirari antreibt, offen für dein Spiel, deine App oder deinen Agenten.
ER SIEHT, WAS DER SPIELER SIEHT.
Öffne einen Wahrnehmungs-Stream und leite das Viewport des Spielers an den Charakter weiter. Er beobachtet das Spiel in Echtzeit und spricht, reagiert und handelt dann auf das, was wirklich vor ihm liegt — kein Skript, ein Zeuge.
// stream the player's view → the character sees the gamevar eyes = fr.Characters.Perceive("char_8f2", fps: 4); // push the camera's render target each framevoid Update() => eyes.Send(playerCamera.Capture()); eyes.OnReaction += r => { // r.Sees "a dragon landing on the keep wall" // r.Says "Get down — to the wall, now!" npc.Perform(r); // r.Act "point", r.Emotion "alarm"};IN DEINER WELT
EIN CHARAKTER, DER IM SPIEL LEBT.
Setz einen in deine Welt, und er erinnert sich an den Spieler, antwortet mit seiner eigenen Stimme und bleibt in seiner Rolle — Quest für Quest.
SELBST BAUEN ODER KAUFEN
EINE API STATT EINES ZUSAMMENGEFLICKTEN STACKS.
Jedes Team kalkuliert denselben Eigenbau: GPT für den Verstand, ElevenLabs für die Stimme, mem0 für das Gedächtnis — plus den Klebstoff, der daraus einen einzigen Charakter macht. Hier ist die Rechnung.
bis zum ersten Ton
GPT → ElevenLabs braucht für einen Umlauf ~1,2–2 s
statt drei Anbieter
ersetzt GPT + ElevenLabs + mem0 + Klebstoff
Vektordatenbanken zu betreiben
Erinnerung ist verwaltet — sie funktioniert einfach
GPT + ElevenLabs + mem0
der Eigenbau-Stack- ✕Zeit bis zum ersten Ton — ~1,2–2 s
- ✕Echtzeit-Wahrnehmung — Kein echter Weg
- ✕Erinnerung — Du betreibst Vektordatenbank + Abruf
- ✕Anbieter zu verkabeln — 3 + dein Klebecode
- ✕Bleibt im Charakter — Über APIs zusammengeprompt
- ✕Stimm-Einwilligung — Deine Sache
Mirari
eine API- Zeit bis zum ersten Ton — < 300 ms
- Echtzeit-Wahrnehmung — Nativ — sieht das Spiel
- Erinnerung — Verwaltet — funktioniert einfach
- Anbieter zu verkabeln — 1
- Bleibt im Charakter — Ein Modell, immer
- Stimm-Einwilligung — Voice ID Registry, integriert
Miraris Erstton wird auf unserem Stack gemessen; die Eigenbau-Werte stehen repräsentativ für einen gestreamten Umlauf der Klasse GPT → ElevenLabs → mem0. Vollständige Methodik auf Anfrage.
IN DREI CALLS EINSATZBEREIT.
Eine illustrative Vorschau der REST API. Die Strukturen können sich vor der allgemeinen Verfügbarkeit ändern — die aktuelle Spec erhältst du mit deinem Key.
Authentifizieren
Trag deinen API-Key ein und zeig auf die Basis-URL. Jeder Call ist nur ein Bearer-Token entfernt.
// Unity — add the Forerunner UPM package, then:using Forerunner; var fr = new ForerunnerClient("fk_live_8f2a…");bool ok = await fr.HealthAsync();Debug.Log(ok); // TrueCharakter erstellen
Gib ihm einen Namen, eine Persona und eine Stimme. Er kommt mit persistentem Gedächtnis zurück, bereit zum Reden.
var rin = await fr.Characters.CreateAsync(new CharacterSpec { Name = "Rin", Persona = "Sharp-tongued, loyal, bilingual scout.", Voice = "mirari:rin", Memory = MemoryMode.Persistent,});Debug.Log(rin.Id); // "char_8f2"Nachricht senden
Stream eine Antwort in der Rolle — Text und Audio — während sich sein Gedächtnis selbst aktualisiert. Das ist der ganze Loop.
// stream a reply, in character, with audioawait foreach (var ev in fr.Characters.Chat("char_8f2", new ChatRequest { Session = "player_42", Say = "I'm back.",})) { if (ev.Text != null) subtitle.Append(ev.Text); if (ev.Audio != null) audioSource.Stream(ev.Audio); // ~280ms first byte}Gedächtnis & Zustand aktualisieren
Schreib auf, was gerade geschah — ein Verrat, ein Geschenk, ein Tod — und patche Spielzustand oder Spielerfakten. Der Charakter erinnert sich in der nächsten Session daran, ungefragt.
// write what just happened — recalled next session, unpromptedawait fr.Characters.RememberAsync("char_8f2", new MemoryEvent { Event = "Player spared the bandit chief.", Weight = 0.8f, Tags = new[] { "mercy", "quest:bandits" },}); // patch game state + player factsawait fr.Characters.PatchStateAsync("char_8f2", new { trust = +2, location = "Riverwood", knows = new { player_name = "Dovah" },});LEBENDIGE WELTEN
BESCHREIBE SIE. DER ERZÄHLER HÄLT SIE LEBENDIG.
Besetze ein Ensemble und beschreibe die Welt in einfachen Worten. Eine übergeordnete KI — der Erzähler — baut den Beziehungsgraphen aus deinen Worten und formt jede Bindung neu, während sich Ereignisse entfalten. Keine Beziehungskarten zu verkabeln, keine Verzweigungen zu skripten.
// Describe the world in plain English — the narrator does the wiring.const world = await fr.worlds.create({ cast: ["Rin", "Tsuki", "Mochi", "Vex", "Kit", "Sable"], premise: `Rin trusts Kit, but both are rivals with Vex. Tsuki mentors Mochi, who owes Sable a life debt.`,}); // From here an overseeing AI runs the world: it reads each event and// reshapes every bond, mood, and stake on its own — no graph wiring,// no branch scripts.world.on("event", world.narrate);Der Erzähler steuert den gesamten Graphen live — du sagst nur, was die Welt ist.
FRÜHEN ZUGANG SICHERN.
Wir nehmen Studios und Builder in Wellen auf. Erzähl uns, was du baust, und wir besorgen dir einen Key.
Keine Kreditkarte. Laufende Einladungen. Vollständige Docs kommen auf api.forerunner.ai.


