FORERUNNER // CHARACTER ENGINE · API PREVIEW
DES PERSONNAGES ET DES MONDES VIVANTS,DANS VOTRE JEU.
Une seule API pour des personnages IA qui se souviennent, parlent et restent fidèles à eux-mêmes — et pour les mondes qu'ils habitent. La pile même qui propulse Mirari, ouverte à votre jeu, votre application ou votre agent.
IL VOIT CE QUE VOIT LE JOUEUR.
Ouvrez un flux de perception et transmettez la vue du joueur au personnage. Il observe le jeu en temps réel, puis parle, réagit et agit en fonction de ce qui se trouve réellement devant lui — pas un scénario, un témoin.
// 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"};DANS VOTRE MONDE
UN PERSONNAGE QUI VIT DANS LE JEU.
Intégrez-en un à votre monde : il se souvient du joueur, lui répond de sa propre voix et reste fidèle à lui-même — quête après quête.
DÉVELOPPER OU INTÉGRER
UNE API CONTRE LA STACK À ASSEMBLER.
Chaque équipe chiffre le même montage maison : GPT pour le cerveau, ElevenLabs pour la voix, mem0 pour la mémoire — plus la glue pour en faire un seul personnage. Voici le calcul.
jusqu’au premier son
GPT → ElevenLabs : allers-retours en ~1.2–2 s
et non trois fournisseurs
remplace GPT + ElevenLabs + mem0 + la glue
base vectorielle à gérer
mémoire gérée — ça fonctionne, point
GPT + ElevenLabs + mem0
la stack maison- ✕Délai jusqu’au premier son — ~1.2–2 s
- ✕Perception en temps réel — Aucune voie réelle
- ✕Mémoire — Base vectorielle + récupération à gérer
- ✕Fournisseurs à raccorder — 3 + votre code de glue
- ✕Reste dans le personnage — Prompts cousus entre les API
- ✕Consentement vocal — À votre charge
Mirari
une seule API- Délai jusqu’au premier son — < 300 ms
- Perception en temps réel — Native — elle voit le jeu
- Mémoire — Gérée — ça fonctionne
- Fournisseurs à raccorder — 1
- Reste dans le personnage — Un seul modèle, toujours
- Consentement vocal — Voice ID Registry, intégré
Le premier son Mirari est mesuré sur notre stack ; les chiffres maison représentent un aller-retour en flux GPT → ElevenLabs → mem0. Méthodologie complète sur demande.
OPÉRATIONNEL EN TROIS APPELS.
Un aperçu illustratif de l'API REST. Les structures peuvent évoluer avant la disponibilité générale — vous recevrez la spécification à jour avec votre clé.
S'authentifier
Renseignez votre clé API et pointez vers l'URL de base. Chaque appel est à un bearer token de distance.
// Unity — add the Forerunner UPM package, then:using Forerunner; var fr = new ForerunnerClient("fk_live_8f2a…");bool ok = await fr.HealthAsync();Debug.Log(ok); // TrueCréer un personnage
Donnez-lui un nom, un persona et une voix. Il vous revient doté d'une mémoire persistante, prêt à parler.
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"Envoyer un message
Diffusez une réponse fidèle au personnage — texte et audio — pendant que sa mémoire se met à jour d'elle-même. Voilà toute la boucle.
// 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}Mettre à jour la mémoire et l'état
Consignez ce qui vient de se passer — une trahison, un cadeau, une mort — et appliquez un correctif à l'état du jeu ou aux faits du joueur. Le personnage s'en souviendra à la prochaine session, sans qu'on l'y invite.
// 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" },});MONDES VIVANTS
DÉCRIVEZ-LE. LE NARRATEUR LE GARDE VIVANT.
Composez une distribution et décrivez le monde en langage clair. Une IA superviseure — le narrateur — bâtit le graphe social à partir de vos mots, puis remodèle chaque lien au fil des événements. Aucune carte de relations à câbler, aucune branche à scripter.
// 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);Le narrateur pilote tout le graphe en direct — vous dites simplement ce qu’est le monde.
OBTENEZ UN ACCÈS ANTICIPÉ.
Nous intégrons les studios et les créateurs par vagues. Dites-nous ce que vous concevez et nous vous fournirons une clé.
Sans carte bancaire. Invitations progressives. La documentation complète arrive sur api.forerunner.ai.


