Skip to content
Tal Heuberger
Work, Apps & games

It's Badtime

A bedtime story about a bad time — an interactive short film for grown-ups, rendered live in the browser, where the viewer's own words bend the story.

Credits

My part
Creator, creative coding
Format
Interactive film · WebGL
Runtime
About 11 min · 15 scenes · 3 endings
Year
2026

Storyboard One engine-rendered key frame for each of the fifteen scenes.

The Light Source The same story as a shadow play on the bedroom wall.

The tale on paper Scenes from the made-up story draw in ink smoke on a page.

The bedroom The present, lit by the bedside lamp.

Read the full story

It's Badtime is an interactive short film for grown-ups that plays in the browser. Eleven days after a death, your six-year-old wants a story from your head, not a book — so you make up a giant who lost someone, and the story keeps turning into you. The viewer picks lines and types their own words at a few moments, and the story bends to them. About eleven minutes, fifteen scenes, three endings. It is live at bedtime.vercel.app.

Everything on screen is rendered live in WebGL. It grew out of the Breath particle-smoke look from an earlier project, Voxa, generalised into a scene engine that sculpts any subject out of the same smoke. Before starting, the viewer picks one of three looks: Breath, where every figure is sculpted from one cloud of smoke and morphs from scene to scene; Breath, done right, the same smoke with the whole budget spent on one lit figure per scene; and The Light Source, a shadow play on the bedroom wall, lit by whatever light the story names.

The script came first: three rival story drafts, two judges and a head writer produced a fifteen-scene branching script, checked by a validator, and a storyboard with one engine-rendered still per scene — shown below. The looks were chosen in a bake-off on three scenes before being taken to all fifteen. Moving scene composition into a worker cut the main thread's long tasks from about four seconds to about 0.3 per scene.

The subject asked for care. A support card carries verified helplines, and a soft mode stops crisis words typed into the story from ever being read back. Stories save in the browser as you go; the release is a 1.2 MB static build that makes no AI or network calls beyond its fonts. Built with Claude Code between 11 and 13 October 2026, released on 23 October.