Back to work

2026

Project Grimlight

Asymmetric multiplayer horror on Quest 3 + mobile. One player is in a horror game; four friends on phones are in a comedy. The design problem is making the same event read both ways.

Quest 3AsymmetricHorror

The asymmetric problem

One player puts on a Quest 3 and plays the haunted house investigator. They have until 3 AM to banish the ghosts. Four friends pick up their phones in the same room and play the ghosts trying to stop them.

The VR player is in a horror game. The phone players are in a comedy. Same session, same network, same events, two different genres at the same table.

Building that gap was the whole project. Every mechanic had to work in both at once.

Early Grimlight design whiteboard showing asymmetric loops, ghost roster, and room-scan flow
The first whiteboard. Asymmetric loops, ghost roster, room-scan flow.

Two POVs, one event

Both sides see the same physics over the same network. They take different things away from each moment.

Banishment is the clearest example. The VR player catches a ghost in the flashlight beam and holds it there. The ghost dies. On the mobile side, that same moment is a YOU ARE DEAD screen.

The VR player's POV. A purple ghost lit by the flashlight, about to be banished in a hallway
VR POV. Flashlight on, ghost lit, about to banish.
The mobile player's screen at the moment of being banished. YOU ARE DEAD overlay over the ghost avatar
Mobile POV. Same moment, opposite end of the verb.

Jumpscares work the other way. A ghost-haunted task triggers, the VR player flinches in their living room, and the phone players watch that flinch on each other's faces. The flinch is the whole payoff. There's no penalty for the VR player. The scare is comedy for the ghost team, and nothing else.

The clock and the tasks are the horror loop. The reactions are the comedy loop. They run in parallel and only intersect inside the flashlight beam.

Your home is the haunted house

The Quest 3 scans the VR player's actual room. Couches, tables, the fridge, doorframes. The game clones that geometry, then swaps every piece for a horror version at matching dimensions. Your couch becomes a Victorian fainting couch in the same spot. Your fridge becomes a creaky icebox where the fridge stands.

The geometry stays familiar. The skin doesn't. Muscle memory keeps the player from kicking the coffee table while the horror does its work on the surfaces.

Living room view. TV mounted to wall, digital clock reading 1:53 AM, dim ceiling light
A real living room, cloned into the game and reskinned.
An open fridge interior, lit pink, stocked with PS1-era low-poly food and bottles
Same fridge as in the player's kitchen, different contents.

Ghosts as comedic roles

Each ghost is a different kind of joke. The MVP ships with one generic ghost. The planned roster picks each one for the comedic role it plays:

  • Klepto throws props around the room. Classic poltergeist energy.
  • Weed Ghost thickens fog and kills flashlight range. Slow-burn obstruction with stoner-comedy timing.
  • Discord Streamer plants spatial meme sounds around the room. Pure shitpost.

Picking a ghost is picking what kind of mischief you want to be. Each phone player gets their own isometric camera of the cloned room, so four people on the same couch can frame the chaos however they want.

Light as the only weapon

The VR player has a flashlight. That's it. Banishing visible ghosts, clearing haunted tasks before you touch them, navigating a dark room without stubbing your toe. All the same verb. One input doing horror work, navigation work, and combat work at the same time.

Keeping the toolkit small lets the asymmetry breathe. The VR player can't out-skill the situation. They can only manage attention. That's what makes the mischief on the other end feel like it actually matters.

Role and collaborators

I led creative on this one. Game design, trailer, logo, Itch.io page, and art direction on the room-skin pipeline. Built in Unity for Quest 3 with an Android companion build. Engineering, networking, and the AI ghost fallback are by Sid, with real-time Quest-to-phone state sync running on Normcore.

Two-person team, build in progress. The current MVP is one VR player, up to four phones, one generic ghost, and the candle-lighting task. Everything above is what the design is reaching for next.