In progress · iOSWeb version · playable below

Gravity maze

What if the product process were a desk toy you could tilt?

Play it hereHold on the board and the ball rolls toward you. Arrow keys work too; on a phone, tilt.
● Avoid holes → exit00:00 · 0 falls
00START01Figma02Prototype03UT04Dev05QAONE MORE STAKEHOLDERSCOPE CHANGEMAKE THE LOGO BIGGERQUICK UI FIXSHOULD BE A QUICK CHANGESHIP / EXIT→ →Avoid holes. Escape here →
Avoid every black hole.
Walls guide the ball. The green EXIT is the only goal.
The native prototypeRuns live on a cloud iPhone. No install, try it yourself.Open in Prototo ↗
Gravity Maze native prototype in the iOS Simulator: graph-paper board, five black holes, green exit
What I built · Prototo, React Native
Board
An industrial desk toy: ivory graph paper, evergreen rails, one steel ball. The process runs top to bottom — Figma, Prototype, UT, Dev, QA — and SHIP is the only way out.
Holes
Five requests every designer knows are black holes. “Make the logo bigger” is visibly the biggest. Fall in and the ball sinks over 550 ms, then it’s back to START.
Physics
Fixed 120 Hz steps. Tilt gain 3.2 with 65% new-sample smoothing; rolling drag 0.22/s, acceleration 820, speed cap 310. Level sets your neutral.
Feedback
Every hole has its own sound. Falls get an error haptic, the exit a success haptic, wall hits a light tap. Sound and haptics switch off separately.
What I learned · from the build notes
  1. 01

    The first version had bumpers, a moving gate, sticky surfaces and checkpoint resets. Held against a real physical maze, they all went: walls guide, holes are holes, one exit.

  2. 02

    It was tuned for a faster, more physical roll: drag 0.85 → 0.22/s, acceleration 480 → 820, tilt gain 2.4 → 3.2.

  3. 03

    Stage names are landmarks, never hidden touch targets — reading the board and playing it are separate jobs.

  4. 04

    Eleven physics checks pass in code: every hole, the exit, a full no-fall route. How it feels in the hand on a real iPhone is still unverified.