← All projects
In build

Oracle Eight

A fortune-telling toy where the physics matter more than the answers.

StartedAug 2026
RoleSole developer
StatusIn build
FocusFeel

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

01

Cutting the voice pipeline

Original plan

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.

Problem

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.

Change

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.

Note

This was a scope call, not a technical limitation. I could have built the pipeline. It just wasn't what the project was for.

02

Slowing the ball down

Problem

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.

Change

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.

Why bother

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