Inspiration

Puzzle games about light are old and well loved, but on a flat screen you rotate a mirror by clicking it. With hand tracking you can do what your hands already know: pinch a small knob between thumb and finger and turn it, the way you would tune a radio or focus a lens. I wanted a game built around that one motion, small enough to play in a chair, on a plane or before bed, and calm enough that it feels like tinkering at a workbench rather than racing a clock.

What it is

You sit at a walnut workbench on a rooftop observatory at dusk. On the table is a board with a lamp, a few lanterns and some brass-and-glass optics. Pinch a mirror and twist your wrist to turn it; it clicks into place every 22.5 degrees and the beam follows immediately. When every lantern receives exactly the color it asks for, the board lights up and you poke the brass Next button.

There are twelve short boards and each introduces one idea: turning a mirror, two turns, diagonals, half-silvered glass that splits a beam, colored glass that keeps one color, mixing two colors in one lantern, sorting glass that turns one color and lets the rest through, pieces that slide on rails, and a final board that uses all of it. A full run takes about ten minutes. The game remembers where you stopped and your best run time.

Everything happens within arm's reach of a seated player and no controller is ever needed. The table is placed in front of you when you enter VR, and a Center button moves it back if you shift in your seat.

How I built it

Lumenwright is a WebXR app built with Meta's Immersive Web SDK (IWSDK) and three.js, written in TypeScript and hosted on GitHub Pages, so it opens straight from the Quest browser with no install.

  • The puzzle logic is a small, pure module. Beams travel in eight directions on a grid, mirror-like pieces have eight orientations and reflection is (m - d) mod 8. Colors are RGB bitmasks, which makes filters, mixing and sorting glass simple bit operations. A brute-force solver in the test suite checks that every board starts unsolved and has a solution.
  • Hand input reads the 25 joints of each hand from the WebXR frame. A pinch is the thumb-to-index distance with hysteresis so it does not flicker. While a piece is held, its rotation follows how far the wrist has turned since the pinch began, either around the vertical (like a knob) or around the forearm (like a key), whichever is larger, with a little gain so a comfortable wrist turn covers a half circle. Buttons are poked with the index fingertip.
  • I draw the hands myself as jointed maple mannequin hands with brass fingertips that warm up when you hover, hold or poke something, so the player always knows what their hand is about to do.
  • There are no asset files. Every model, wood texture, plaque and button label is generated in code, and all sound (the beam hum, detent clicks, glass bells and the solve chord) is synthesized with the Web Audio API.
  • I tested interactions in IWER, the Immersive Web Emulator, with scripted emulated hands (pinch, twist, slide, poke) so every change could be checked without a headset. The trailer is recorded the same way.

Challenges

  • Making a wrist twist feel like turning a knob. Measuring the rotation of the whole hand was noisy, so I take only the twist relative to the moment of the pinch, around the vertical or around the forearm depending on how the player holds their hand, snap it to notches and play a click per notch. Releasing and re-gripping works like a ratchet.
  • Keeping everything inside a comfortable, narrow field of view: the board, the level plaque and the buttons all sit within roughly 50 degrees in front of a seated player.
  • Teaching without text walls. Each board has one short line on a brass plaque; the first board can only be solved one way, by turning one mirror.

What's next

  • More boards and a few new pieces (prisms that split white light into its colors, moving targets).
  • A daily board with a shared best time, as a reason to come back.
  • Optional gaze-to-highlight and a one-handed mode for accessibility.
  • Mixed reality: place the workbench on your real desk with passthrough.

Target launch date

Early 2027 as a free web experience, with a Meta Horizon Store release after more boards are added.

Built With

Share this project:

Updates

Submission history