-
-
Read the brief card first. The whole case fits in one box on the table in front of you.
-
Hold the parking receipt up to the light: the faded exit time appears at eye level.
-
The back of the brief is your detective notebook: cases solved, your streak and the final case.
-
Turn a card over: the back of the ticket stub found in the case shows its issue date.
-
Bring two cards together: a red thread says what they mean side by side.
Inspiration
We make printed murder-mystery games, and their best moments are physical: turning a receipt over, holding a letter up to the window, laying two documents side by side until they contradict each other. A headset usually swaps that for a laser pointer. Passthrough and hand tracking can give it back: a case file that opens on your own table, examined with your own hands, finished on a coffee break.
What it does
An evidence box appears on the table in front of you: a short brief, seven pieces of evidence and three suspects. You examine the evidence in three ways, all with your hands:
- Turn it over: some cards have something printed on the back.
- Hold it up to the light: faded print or pressed-in writing shows at eye level.
- Bring two cards together: when they belong together, a red thread joins them and says what they mean side by side.
To accuse, you put a suspect's photo in the box. A wrong guess says why that person is innocent; the culprit closes the case and shows how many clues you found. A case is meant to take about ten minutes.
There are seven cases. One of the first six is on the table each day, by your local date. The back of the brief is your detective notebook: cases solved, your streak of days, and how many cases are left before the seventh, the final case, opens. For judging, any case opens with ?case=01 to ?case=07.
How we built it
- IWSDK (Three.js with an entity component system) as a WebXR app on GitHub Pages: nothing to install.
- Scene understanding: the box goes to the nearest table, at the edge closest to you, fitted inside the table's real outline, so it also sits properly on a round table.
- Hands only: cards are picked up with a pinch. The inspections are read from how a card is held (its back facing your eyes, its height against your eyes, its distance to its partner) and stored on the card as ECS state.
- No art assets to download: the box and cards are built in code and every card's printing is drawn at runtime on a canvas. Hand models are served from the same site, so playing sends nothing to a third party.
- A script checks every case file against the scene, and 101 checks cover the daily rotation, the streak and the final case.
- Made by Ai-Q Labs with Claude Code (AI-assisted development and writing).
Challenges
We have no headset. Everything was built and tested in IWER, the IWSDK emulator, with a script that drives the emulated hand through every case; text size, comfort and frame rate on a real Quest are still unverified. To make a pinch take the card you reach for, we widened the box to 40 × 28 cm so the seven evidence cards no longer overlap.
What's next
- Test on Quest hardware: legibility, frame rate, comfort.
- A new case every week, in the same data format.
- Spatial anchors, so the box stays where you left it.
- A Meta Horizon Store release as a PWA.
Built With
- github
- iwsdk
- meta-quest
- three.js
- typescript
- vite
- webxr
Log in or sign up for Devpost to join the conversation.