The Haunted Room is an interactive, cozy-spooky desktop fidget toy, a little haunted parlor you can leave open on your screen and poke at whenever you need a break.
No instructions. No hints. Nothing will tell you what to press. Just a cozy haunted room full of secrets, waiting to be poked at your own pace.
▶️ Play it on desktop:
https://haunted-room-wcc682.rive.to/
🎬 Watch video on YouTube:
https://youtu.be/xDFD62jbs_I
FEATURES USED: Rive CLI + GPU Canvas (both) 🖥️ Rive CLI The entire scene was built from the terminal with the Rive CLI and Claude Code as my coding agent, writing the scene in RML with a live preview.
I worked in stages: layout first, then one interaction at a time, iterating by feel on every timing and effect.
✨ GPU Canvas (WGSL shaders) Custom shaders power the animated fireplace, the rippling portrait transformation and the twinkling stars in the landscape painting. ⚙️ Also used: State Machines (every hover and click interaction), Data Binding (a view model links the systems together, so lighting the fire warms the room, deepens the shadows and scares away the wall eyes), Scripting (looping background music with a mute toggle) and Audio.
🎨 Human Touch I art-directed the whole room: generated a concept, then cut, cleaned and composited every piece of art by hand. I made the calls on what stayed and what went. A bandage whip, a "Happy Halloween" garland and a spider web were all built and cut because they crowded the scene. I finished it in the Rive Editor, adding shadows by hand so every object sits in the room. The music was picked to feel playful-haunted, not scary, so it's something you'd actually want to leave running.
App and video created by Ashley Phillips
Music: Mikhail Smusev via Pixabay
Sound effects: freesound_community via Pixabay
Voice: ElevenLabs generated