What it does
You ask a question and a weighted shell rotates into frame. Inside it, a die tumbles through liquid and settles on a face, which is then read aloud. Swappable answer decks change the personality of what comes back.
There is no clever technology here and that's fine. This one is an exercise in feel — the entire product is about whether an object on a screen convinces you it has weight.
Design log
Cutting the voice pipeline
Pre-render every answer through a high-quality voice service and ship the audio files, to get the low, close voice from the reference video I was chasing.
That means a generation step, a storage story, cache handling, and a hard ceiling on ever adding a new answer without regenerating audio — a real content pipeline attached to a toy.
Kept the browser's built-in speech synthesis and spent the effort on letting the user choose between voices instead. Slightly worse than the ideal on any single answer, considerably better as a thing that exists and can grow. Decks stay editable as plain text.
This was a scope call, not a technical limitation. I could have built the pipeline. It just wasn't what the project was for.
Slowing the ball down
The first rotation was fast and smooth. It read as a loading spinner — a UI element telling you to wait — rather than as an object with mass.
Slowed the rotation to match the lazy turn of a real one, and added colour bleeding through the die's edges as it comes around, so it looks like it's moving through liquid instead of air.
The delay before an answer is the entire experience. If the wait feels like buffering, there's no product left. Speed is usually the goal in interface work; here it's the failure mode.
Open questions
- Whether asking the same question twice should give a new answer. A physical eight ball happily contradicts itself, which is arguably the honest behaviour — but a toy that changes its mind on demand may just feel broken. Undecided.
- Each deck needs a short description so choosing between them means something before you've tried them all.
- Voice selection is chosen but not built.