Characters played by AI, on a written story.
Tempest runs our games. Prospero holds the story written by an author; Ariel brings the characters to life, so they listen, understand and answer in their own voice.
Tempest is a passion project, built in spare time: the code gets written in the evenings and at weekends, when time allows, and the GPUs run overnight. It moves fast, major steps land at a steady pace and the limits keep receding. This article is a snapshot from November 2026.

A written story, living characters
Tempest is the studio’s AI game engine: it runs our games. Players talk to the characters with their own voice. The characters listen, understand, answer with a voice of their own, and act.
But they do not just say anything. An author wrote the story in advance: every choice, every branch, every ending. The AI plays the lines; it picks among what was written, and never makes up a branch.
Two engines share the work. Their names come from Shakespeare’s The Tempest: Prospero, the magician who stages it all, and Ariel, the spirit who carries out his orders. Same here.
The test game is called NightShift (code name): a maintenance truck at night, rain, the CB radio, and a passenger who does not tell everything.
Excerpt from a test teaser, not final (25 s, muted by default).
The path of a line
Prospero holds the story: the graph written by the author, what it remembers, and its rhythm. Ariel brings the characters to life, in four stages. Prospero plays no part himself: like a puppeteer, he holds the strings.
A line plays out in two beats. First Ariel understands what was said: who it is for, and which of the author’s outcomes the player is aiming at, if any. Prospero applies what that outcome changes: he records a fact, sends a command to the game, moves on to the next moment. Then Ariel makes the character speak, with only what Prospero gives it: what just happened, what it knows, what it feels, and its goal when the story pushes towards a choice.
The path of a line through Tempest. The player says “Get in, quick, you’re soaked.” Listening turns it into text. The Decision understands they are talking to Rosie and aiming for the outcome “Let her in”, among those the author wrote. Prospero applies the outcome: a command to the game, Rosie gets in, and the story moves on to the beat “The door”. He gives Rosie what she needs to know. The agent makes her answer and shut the door; the voice speaks her line, relieved.
The graph of a story
In a classic narrative game editor, the author writes every line. In Prospero, they write situations: what each character wants, what the player can do, where each outcome leads.
Smart puppets, on rails. Players say what they want, in their own words; only an outcome written by the author moves the story on. And the story always moves on: a moment allows small talk, then pushes towards the choice, then forces it.
- A moment where the story pauses and the player talks. It only ends through an outcome.
- A way out of the beat, written by the author: offered to the player, or hidden. One wins by default.
- What the story remembers, to pick its path later on.
- The character steers the player towards the choice, then forces it.
The pick-up
Rosie knocks on the window. Take her or drive off, then to the coast or to the station. Dispatch sees the van leave its route.
The game opens the scene: Rosie has never been picked up.
- Small talk
- Soft push
- Hard push
- destination
- none
- reported
- no
- trust
- 0
The whole path, as text
- The game opens the scene: Rosie has never been picked up.
- Please… my car gave out. Will you let me in?No small talk: she asks right away.
- Get in, quick.Choice clicked. Command to the game: Rosie gets in.
- Thanks. I’m dripping all over your seat, sorry.
- What happened to your car?A discovery question: we stay in the beat, and Rosie gets a direction.
- It… wasn’t really mine. It’s complicated.
- So where are you headed?
- The coast. An old friend’s place. Could you take me there?
- Fine. I’ll take the detour.Said in their own words: the Decision recognises the outcome.
- Unit 7, you’re off your route. What’s going on?
- Road’s closed. I’m going round.Rosie learns he lied for her.
- Exit “Back on the road”: the scene closes, the van drives on.
Sample playthrough: lines written for this article, not a recorded session.
The road
Rosie says her car broke down. If the player saw the engine running, and if she trusts him, she confesses.
The van is back on the road. Rosie keeps only what she knows from the last scene.
- Small talk
- Soft push
- Hard push
- destination
- coast
- saw_engine_running · held by the game
- yes
- reported
- no
- trust
- 1
The whole path, as text
- The van is back on the road. Rosie keeps only what she knows from the last scene.
- It just stalled. Halfway up a hill. Nothing I could do.
- We’ll be there before dawn, I promise.Hidden outcome: never offered, only speech reaches it.
- … Thanks. Really.
- Your engine was running when I drove past.The game knows the player looked at the car: saw_engine_running = yes.
- The condition holds: Rosie’s secret is unlocked.
- Okay. I took it. I had to get away.
- I’m still taking you.
- destination = coast, set in the previous scene.
- Exit “At the coast”: control goes back to the game.
Sample playthrough: lines written for this article, not a recorded session.
Silence is a choice
The player does not answer. Each silence counts as a turn, Rosie presses, then insists; on the last turn, the default outcome decides.
Rosie has just said where she is going.
- Small talk
- Soft push
- Hard push
- destination
- none
- trust
- 0
The whole path, as text
- Rosie has just said where she is going.
- Will you take me to the coast? Just tell me yes or no.Soft push: Rosie has her goal and steers the player towards the choice.
- …Silence: the game reports it, Prospero counts it as a turn.
- Did you hear me? It matters to me.
- …Second silence: the soft push quota is reached.
- Right. Answer me now, or I get off at the next station.Hard push: the last turn. Whatever the player does closes the beat.
- …Silence is a choice: the default outcome wins.
- Fine. The station, then.Rosie answers the turn that closes the beat; the scene exits “Back on the road”.
Sample playthrough: lines written for this article, not a recorded session.
Latency, on the clock
For a conversation to feel alive, the reply has to come fast. We measure the time from the end of the player’s line to the character’s voice.
Everything runs on the player’s machine, on a consumer graphics card, with the game running alongside. Here are our two measurements from 13 November, with and without the game, slowed down and on the same axis.
0 ms
TempestGame running alongside
TempestMachine alone, best case
An end-to-end median: from the moment the player stops speaking to the reply they hear. Tempest runs on a consumer graphics card, next to the game. Our clock stops when 0.3 s of voice is ready to play.
- A short trial, not yet conclusive: 10 to 12 turns per series, warm-up excluded.
- Ariel’s voice is not wired into the game yet: Unreal runs alongside and loads the machine, but the measure counts neither audio playback nor the face. With an animated face on top: 1.41 s.
- The agent does not stream its reply yet: known room for improvement.
- Per-stage medians and the median total do not add up exactly: the hatched part is the gap.
- Target budget from the October bench, adding up stages measured one by one: about 0.65 s.
Ariel in four stages
In the measurement above, everything runs on the player’s machine, with no server. The two stages that understand and that act are our own models, which we train ourselves: the Decision is an in-house model, already trained by us; the agent is an in-house agent, which we are training for this role. Each stage remains a swappable module: we can change one without touching the rest.
Listen
Transcribes what the player says.
0.05 s
4.4% word error rate in French, on real voices.
Decision
Works out who the player is talking to and which outcome they are going for, offered or hidden. Stops forbidden lines.
0.19 s
On the bench: 99% of forbidden lines stopped, 0.3% blocked by mistake.
Agent
Plays the persona: it replies, and acts through the gestures the game allows.
0.50 s
Voice
Gives the persona its voice, with the emotion of each line, streamed.
0.32 s
First chunk of voice in 58 ms, from a voice cloned on a short clip.
Time of each stage within a full turn, measured end to end on the studio gaming PC with the game running alongside (13 November 2026). The other figures come from the October bench.
What comes next
Tempest moves forward step by step, and each step ends with something playable. NightShift is the test bench: each step makes one more of its scenes playable.
All of this is still in full development, in spare time: the code gets written in the evenings and at weekends, for the joy of learning, and the GPUs train and measure the models overnight while everyone sleeps. The engine changes fast: every step cleared pushes back a limit we thought was fixed. The figures and diagrams in this article are a snapshot from November 2026, not a finish line.
Step 5 of 10
- 01Prospero starts and sees Ariel
- 02Talking to dispatch, through Prospero
- 03A directed character: goal, follow-up, choices
- 04“The door”: a beat played in full
- 05“The detour”: the story drives the game
- 06“The road”: a secret drawn out
- 07Refusal, saving and resuming a game
- 08Seeing the graph while playing
- 09A real game plugs in
- 10The author writes without touching a file
For reference: a published measurement
In July, Iconic published the latency of Pressure Point, its digital actor demo: from the end of the player’s line to the reply they hear, as a median: an end-to-end measurement, like ours. Here it is next to ours, with what sets them apart.
0 ms
TempestGame running alongside
Pressure PointIconic’s demo, live version
Measured the same way, Tempest replies slightly faster: 1.12 s, against 1.2 s for Pressure Point.
| Tempest | Pressure Point | |
|---|---|---|
| Measure | median end to end, 1.12 s | median end to end, 1.2 s |
| Stages | Listen → Decision → Agent → Voice | Transcription → Generation → Voice |
| The clock stops at | 0.3 s of voice ready to play (stricter than a first sound) | until the player hears the reply (their definition) |
| Machine | Studio gaming PC: AMD RX 6800 16 GB, Ryzen 5 5600, 32 GB, Windows 11. Unreal game at 60 frames per second alongside. | Cloud GPU (AWS), game streamed to the browser. |
| Date | 13 November 2026 | 14 July 2026 |
| Source | Internal measurement log, 13 Nov 2026 | Iconic, “Pressure Point: A Digital Actor Showcase”, 14 July 2026 |
Both are end-to-end medians: from the moment the player stops speaking to the reply they hear. The two measurements are not taken on the same machine nor with the same end point: the table above details them.
- End point: our clock stops when 0.3 s of voice is ready to play; Pressure Point’s when the player hears the reply (their definition).
- Machine: Pressure Point runs on a cloud GPU, the game streamed to the browser; Tempest on a consumer card, with the game running alongside.
- Stages: Tempest has one more, the Decision, counted in its time.
- Our measurement is a short trial, not yet conclusive (10 to 12 turns per series). The gap between the two totals is small.
- Per-stage medians and the median total do not add up exactly: the hatched part is the gap, on both sides.
Follow the projects
An occasional letter: what comes out of the building site. Double opt-in, one-click unsubscribe.



