Three.js + Cannon physics

Tabletop Dice Roller

Physics-driven polyhedral dice roller for tabletop play. D&D, Warhammer, World of Darkness, Call of Cthulhu presets built in.

What this is

A real 3D dice roller built on Three.js + Cannon physics. D4 through D100 tumble with proper weight and bounce. Results are read by face-detection, and per-game presets (D&D 5E, Warhammer, World of Darkness, Call of Cthulhu) preconfigure the dice you actually need. Advantage and disadvantage are first-class.

The puzzle that started it

Dice rollers are everywhere, but most of them feel like spreadsheets. The puzzle was whether a small, focused web tool could feel as good as a native app: physics, typography, motion, and per-game ergonomics all combined into something a player would genuinely want to keep open in a browser tab during a session.

How I built it

Three.js for the scene, Cannon for the rigid-body physics, custom face-detection to read the result once the dice come to rest. The per-game presets are the bit that turns this from a tech demo into a usable tool. Advantage and disadvantage are not bolted on; they are first-class in the UI, with the right number of dice rolled and the right one highlighted.

What this is an example of

A small focused tool, finished to native-app quality. The detail-driven build that turns a side project into a daily-use object. The Apple-rounded-corner principle applied to a roleplaying utility: every interaction earns its weight, every value reads cleanly, the whole thing feels inevitable rather than thrown together.

If your product is a small focused tool that needs to feel as good as a native app, that is the bar I work to.

All experiments
Hire me

Let's talk.

If your product is a small focused tool that needs to feel as good as a native app, that is the bar I work to.