Hollowmere is a first-person detective game you can play in a browser. There is no enemy in it and no way to lose. That was the first decision, and everything else came out of it.
This is the first of three posts on how it was made. This one is the story and the rules that came from it. Part 2 is the Unity project and the systems. Part 3 is lighting, audio and getting the thing into a browser.
The premise
A cold case detective gets one night inside a sealed suburban house before the demolition crew turns up at dawn. Fifteen years earlier a ten year old girl called Edith Marlowe vanished from her own birthday party on June 14th 2011. The case was never closed. Three weeks ago a package arrived at the cold case unit with a child's locket in it, logged as missing evidence, and one unsigned line: "She never left the house."
That is the story I wanted to tell really. It is also a list of production problems solved, which is the part worth writing down.
One character and no NPCs. A detective on his own does not need anyone to talk to, so there is no dialogue system and no second voice to cast.
The torch makes sense. The power is off in an empty house, so the flashlight becomes the main tool without anyone having to explain why he is carrying one.
Time pressure with no timer. Dawn is coming and the crew is coming with it. The player feels the clock without me having to build one or balance it.
No exteriors. An empty dressed interior is the whole game. No streets, no crowds, no weather.
I was going to write something more ambitious and then cut it back over about six weeks. Finding that overlap early is worth a lot really.
Four rules
I wrote these before I dressed a single room, and I did not break any of them.
The house is the antagonist. No visible threat and no fail state, so all the tension has to come from lighting, audio and pacing. That is harder than a monster chasing you. It is also a much better demonstration of the thing the slice exists to show.
Detective, not lock-picker. Every answer is taught by something the player has actually found and read. If a player is stood at a keypad guessing numbers then I have got it wrong.
Light is language. Warm light means information and safety, cold light means the past, and darkness means an answer I am not giving you yet. The player gets steered by light before they get steered by an objective.
It has to run in a browser. Every visual decision has to survive WebGL. If a technique cannot, it goes in the trailer build only, and that is a decision I make on purpose rather than find out at the end.
Five rooms, one path
The slice is a single route through five spaces. Entrance Hall, Living and Dining Room, Home Office, the girl's bedroom, then the basement. Each beat teaches the next one, which is kind of the whole trick with it.
It opens with the cold case file on the hall console. That is there to teach Examine and the Journal while the player thinks they are just reading the setup. The front door locks behind them on a trigger. Then a birthday photograph in the dining room, a key in the office, and the safe.
There are two codes in the game and they are earned in completely different ways, which was deliberate.
The first one is never written down anywhere in the house. The player has to put it together from two separate documents and notice that the two of them agree. Nobody hands it over, and there is no note with it on.
Behind that lock is the pivot the whole slice turns on. It reframes everything the player has read up to that point, and it changes the question they are asking from what happened to her into something quite different.
The second code works the opposite way round. It is a number the player has been looking at since the first room without knowing it mattered, sat in plain sight in the opening minutes. It does not turn into an answer until much later on.
The best moment in the chain is not learning a new number. It is working out that something you have been staring at for twenty minutes was the answer all along.
I am not going to write down what is behind either lock. The slice runs about twenty minutes at the moment and the whole point of it is finding that out in the house.
The house changed, so the story changed
I wrote the story for an Edwardian manor. The asset I ended up building in is Finward Studios' AtmosphericHouse, which is a modern two storey suburban family home with a basement. Nothing like a manor.
I re-based the story rather than fight the geometry. What actually happened in the house, the clue chain and both codes all stayed exactly the same, and the rooms around them got swapped for the ones that exist. The keypad on the basement door stopped being an anachronism and started making sense. A modern 2.4m ceiling means the torch fills more of the room than a manor would, so the design leans on darkness and clutter instead of height.
Rewriting a setting to fit an asset sounds like a compromise. In practice it took about six weeks of grey-boxing out of the schedule and produced a better slice, because I was dressing and lighting a real space from week one instead of building one first.
No jump scares
The house escalates when it is understood, not when the player walks into a trigger volume. Each solved puzzle unlocks one authored event. A distant door slam, footsteps crossing the ceiling above you as a positioned 3D one-shot, every lamp in the house guttering at once, then near silence before the basement.
Six beats, all written on purpose, and no random jump scares anywhere in it.
That was a rule I set early and I am quite happy with how it turned out. A random scare is cheap to build and it buys you one flinch. An authored one costs more and it buys you a house that feels like it is keeping track of you.
Play the slice in your browser
Next is Part 2 on the systems, including an interaction step I deleted after finding out it never decided anything, and a key rule that nearly soft-locked the whole game.
If you are planning an interactive project and want a straight answer on scope before anyone opens an engine, give me a shout.
