Spirit Cam is a browser-based immersive AR horror game where ghosts only appear on the laptop screen, but the player has to hunt them in the real room.
The player sets a laptop across the room, turns off the lights and uses a real flashlight to search the space. The room itself looks empty. The only way to see ghosts is by checking the laptop, which shows a grainy night-vision CCTV view of the room built from a 3D Gaussian splat scan. The player has to remember where the ghost appeared, walk into the dark, and banish it using sound, spatial awareness and the flashlight.
Inspiration
We were inspired by a night walk on the first day of the SOON Hackathon. We were staying in a large private mansion surrounded by trees. So, naturally, all four of us decided to go for a walk outside in the dark.
We were talking about our favorite video games and debating the latest Resident Evil movie when we saw something ahead of us: a silhouette in the dark. We lifted our flashlights, froze for a second, and our casual walk instantly turned into a ghost hunt. It was just a pile of dark leaves.
But the feeling stayed with us. When we came back inside, we kept thinking about how hard it was to explain that moment: the fear, the darkness, the flashlights, and the fun of experiencing it together as a new team. That became the real inspiration for Spirit Cam.
We wanted to build something that made players feel what we felt outside. Not just a horror game on a screen, but an experience that turns the player’s actual room into the haunted space.
That led us to Spirit Cam: a browser-based ghost hunting game that uses Gaussian splatting, spatial audio, webcam tracking, and a real dark room to make ghosts feel like they are hiding in your own space.
What We Built
Spirit Cam combines a real room with a virtual haunted version of that same room. During setup, the room can be represented as a 3D Gaussian splat. During play, the laptop renders that room from a CCTV-style perspective with night-vision and VHS-like effects. Ghosts are placed inside the virtual room and appear only in that rendered view.
The player uses the screen to locate ghosts, then moves through the real dark room to find and banish them. Spatial audio helps guide the player with whispers, heartbeat intensity, and jumpscare cues. As ghosts get closer, the audio becomes more intense.
How We Built It
We built the project with:
- Vite and TypeScript for the browser app
- three.js for rendering the room, ghosts, and surveillance view
- Web Audio API for spatial whispers, heartbeat, ambient tension, and jumpscare audio
- Webcam tracking to detect a light or marker and estimate player position
- Gaussian splatting to represent the scanned room
- A debug panel and mouse fallback so the game could still be tested during development
The game is event-driven: gameplay systems emit events like ghost spawns, movement, banishing, proximity, and jumpscares, while the audio and rendering systems react to those events.
Challenges
One of the hardest parts was making real-world tracking work reliably in a browser. Camera permissions, HTTPS requirements, lighting conditions, and browser differences all created problems. Tracking a player in a dark room is especially difficult, so we built fallbacks using bright light detection, rough webcam mapping, and debug tools.
Spatial audio was another challenge. We wanted the player to feel like ghosts were actually located somewhere in the room, so we used 3D positions, listener pose updates, and HRTF panning to make whispers feel directional.
We also had to design the game around uncertainty. The player does not always know exactly where the ghost is, the tracking is not always perfect, and the room is dark. Instead of treating those as failures, we leaned into them as part of the horror.
What We Learned
We learned a lot about combining physical space with browser-based gameplay. In particular, we learned how important calibration, fallback controls, and debugging tools are when a game depends on real-world input.
We also learned how powerful audio can be in horror. Even simple procedural sounds like whispers, drones, heartbeats, and silence-before-scare moments can create a lot of tension when they are connected to position and distance.
What's Next
Next, we want to improve player tracking with a dedicated colored LED marker, refine the Gaussian splat alignment, add more ghost types, and make the banishing rituals feel more physical. We also want to polish the audio mix so each ghost type has a distinct sound identity.
Spirit Cam started as a hackathon prototype, but the idea has a lot of room to grow: a horror game where your own room becomes the haunted space.
Log in or sign up for Devpost to join the conversation.