Hauntology

The spooky detective game that tests your wit and nerve.

Your grandmother’s kitchen

is haunted. Work out by whom before the house wakes up.

Photos, 3D worlds, AI ghosts, 3D-printed game pieces, holograms and tonight’s real night sky, stitched together into a haunting night for family and friends.

Start with a photo

Your place, haunted

Turn a photo of somewhere you know into a 3D world with a ghost in it. Drag the handle to see the same place before and after.

Photo 3D world
Drag to compare a photo with the haunted world made from it. Drag right to find the ghost already in the photo. Illustration.

Why you'll want to play

Your place, your game

Turn a photo of any place you know into the haunted house you play in.

Be the detective

Collect clues, build your accusation and name who is haunting the place.

Always in the game

Off your turn, stir up creaks and whispers, then help or hinder whoever is on the clock.

Join the ghost

Guess wrong and you join the haunting. You can't win any more, but you haunt your friends instead of sitting out.

Play your way

Single player, or a full house

You and the ghost

Single player

Walk into your photo, design the ghost that haunts it, and talk to it until it gives up its three memories.

  • Draw or upload the place
  • Design the ghost yourself
  • Take your time, there is no clock

Two to six players

Multiplayer

Friends and family around one screen, each on their own phone. Bots fill any empty seat.

  • Scan a code to join
  • Everyone has a part to play on every turn
  • Spooky, never gory

Watch it play

A night at the table, with friends

Six seats, one TV, a phone each. Maya, Dev, Sam, Priya and Leo are people; Ana is a bot. The run is scripted, the rules are the planned ones. Take a seat and use the phone beside the table.

Click a player at the table to take their seat.

What just happened

    A scripted demo of the planned rules, not the finished game. Names, clues and graphics are made up. Priya joins the haunting in round 1: take her seat to shake the house and to choose what the house does. The Notes tab shows what only that player knows.

    The three screens

    Who sees what

    One screen for the room, one phone each. Everyone watches the haunting, only you see your own cards, and nobody just waits.

    • On the TVMaya walks into the Kitchen. Dev answers her guess. The ghost narrates, and nobody sees which card.
    • On Maya's phoneThe card Dev showed her, crossed off in her notebook.
    • On Sam's phone, off turnMake a sound on the TV, or help or haunt Maya while her clock runs.

    Mockups of the planned screens. Names and clues are made up.

    More than a controller

    The whole table is part of the haunting

    Phones creak, glow and whisper. Everything here is optional, every player says yes for themselves, and none of it ever changes a rule.

    Once you have joined the haunting, you can shake your phone and the floorboards creak on the TV and every phone. Your phone nudges you to start, and nudges harder when someone else is already shaking. The more shakes in a turn, the more the house stirs.

    Phones on the table0 / 6 shakes
    Waiting

    Tap to try it. In the game, only players who have joined the haunting can shake, and nobody sees who did it until the game ends.

    A demo of the light bar. Greys and whites only, slow fades, a pause between shakes, and no animation at all if you ask for reduced motion.

    The table lights up

    Phones lying in a row glow in turn like one strip of light, in greys and whites like a horror film. A phone that falls out of step is skipped, never played late.

    When you join the ghost

    Guess wrong and your phone gives a dramatic sting, the lights fade to grey, and you become one of the voices of the house. Your phone then nudges you to shake it.

    Spirit lens

    Raise your phone and look through it. Your own notebook marks float in the world around you, and only you can see them.

    The real sky

    The weather, the hour and the moon of the place you chose, and at night the stars that were really overhead. On the hour the house strikes together. Never news, never real events.

    The ghost has a voice

    It speaks, with subtitles always on. In single player, hold a button and talk to it.

    A line you never said

    If everyone says yes (a parent or guardian says yes for a child), the ghost cuts a few short words you recorded into a whisper you never said, then shows how at the end. The clips are deleted when the game ends.

    The Haunt

    Get it wrong and you get to haunt your friends

    The Haunt meter climbs every round and every time a turn clock runs out. At 3, 6 and 9 the house does something, and if it fills, the ghost wins.

    Accusations are sealed and revealed together at the end of the round, so going first is no advantage. Accuse wrongly and you join the haunting: you keep your seat, shake the house and choose what it does next, but you can no longer win. The best haunter gets a title at the end.

    Haunt meter0 / 10

    Press a button to push the Haunt up.

    Try it. When the house stirs, you get to choose.

    For family and friends

    A haunting for friends and family

    A game you can start in the time it takes to scan a code.

    • Start from any photoA holiday spot, your old school, your living room. A sketch works too.
    • Two to six playersBots fill any empty seat, so a small group still has a full table.
    • One screen, many phonesA TV or laptop shows the world. Phones do everything else, with no app store.
    • Single player?It puts you in the place with a ghost to talk to. On a laptop you can also play the party game with Bots.
    • Spooky, never goryThe haunting is gentle. The question is who is haunting the place, and nobody is harmed.
    • Bring a 3D printerPrinted relics and a hologram pyramid are optional extras.

    Under the hood

    The little things we do so you never have to think about them

    None of this is the game. All of it is why the game is safe to hand to a family.

    These are promises the build is held to, each one written down with a test before any code.

    Your photos and placesPrivacy

    • Cleaned firstLocation and camera data are stripped from a photo before anything else happens. If a photo has a date and time, only that is read, to suggest a day to remember.
    • Checked, and refused if unsurePhotos and typed words are checked before use. If the check cannot run, the answer is no.
    • Short-livedPhotos are kept 24 hours and worlds 7 days. “Delete my place” removes everything at once. A party room and everything in it is deleted when the game ends, or after 6 hours.
    • Blurry places on purposeOnly a rounded position is kept (two decimals, about a kilometre). It is never shown to other players and never written to a log.
    • No accounts, no analyticsSeat tokens are unguessable and work for one seat only. Logs hold ids and counters, never your words, your audio or your photo.
    • Your words are only wordsAnything typed is treated as plain data in a length-capped block, never as instructions to the ghost.

    The ghostSafety

    • The engine decides, the model narratesThe rules run in plain code. If the model is slow, fails or says something unsuitable, a scripted line takes its place and the game does not change.
    • Every line is checkedBefore a line is shown or spoken it is checked for safety. It never mentions news, crime, death or a real person or address.
    • Always finishableGallery worlds, preset ghosts and scripted lines let anyone play a whole game with no quota and no model calls.

    Money and limitsCost

    • A ticket for every paid callEach paid call needs a ticket reserved first, with caps per session, per day and in total, and a kill switch. When a cap is hit, the free parts keep working.
    • Cached, not repeatedA spoken line is cached for 30 days. The weather is read once per game. A repeated scripted line costs one call in total.
    • Budgets for the noisy bitsA party room speaks at most 20 lines. Each phone gets at most 3 sounds a round, and the table at most 6 cues a turn.

    The real worldFrozen inputs

    • One snapshotWeather, hour and moon are read once at the start and frozen, so every player sees the same sky. They change looks and the ghost’s words, never a rule. If the weather does not arrive within 3 seconds, the sky is clear.
    • Stars with no serviceThe stars are worked out on the device from a built-in list of up to 300, drawn once into a small picture, so the sky costs nothing per frame.
    • Same seed, same resultChance is seeded, so a light show, a sky or a draw can be replayed exactly, which is how it gets tested.

    Phones, sound and lightLittle tech

    • Light timingEach phone measures how far its clock is from the server. A light cue starts half a second ahead, and a phone that is badly out of step is skipped rather than played late. The numbers are tuned on real phones.
    • Gentle by designAt most two brightness changes a second, fades only, greys and whites, a peak below full white, and none at all for anyone who asks for reduced motion.
    • A shake has to be a shakeIt counts after three swings in a second and a half. A bump on the table or a phone in a pocket does not.
    • Limits belong to the seatYour limits stay with you if your phone drops and reconnects. Nobody gets a fresh start by refreshing.
    • Lens that stays cheapThe spirit lens draws simple sprites at 30 frames a second at most, and pauses when the phone is face down or the page is hidden.
    • Bounded inputSticks and look controls are clamped, and a phone sends at most 30 messages a second.

    Secrets and fairnessTrust

    • Hidden cards never leave the serverYour phone only ever receives your own cards. A test plants a secret marker in every hidden card and checks that it never reaches anyone else.
    • The server owns the clockPhones show the turn clock but do not decide it. No one can shorten a turn to less than 30 seconds in total, whatever they do.
    • Your voice stays yoursAudio is deleted as soon as it is turned into text. The only clips ever kept are the short words for the whisper game, only from players who said yes, and they are deleted when the game ends. A parent or guardian is asked to say yes for a child.

    Everyone can playAccess

    • Sound is never the only clueEvery sound has a written line beside it, and the ghost always has subtitles. The narration is announced politely for screen readers.
    • Reduced motion is honouredFlicker, light shows and motion all switch off or soften for anyone who asks.
    • Plain words“Single player”, “Multiplayer” and “joined the haunting”. No jargon at the table.
    • No app storePhones join by scanning a code and run in the browser. A weaker device gets a lighter world automatically.

    How it is builtStack and method

    • Mostly CloudflareWorkers, Durable Objects (one per game room), R2 storage, Workers AI for words, pictures, safety checks and voice, and Cloudflare Images for the ghost cut-out. World Labs makes the 3D world and Open-Meteo supplies the weather.
    • Specs firstSeven specs hold 287 promises and 124 correctness properties, each with its own test. A script fails the build if any promise has no task.
    • Pure rulesThe rules are plain functions with no network, and the clock and the dice are passed in, so every rule can be tested on its own.
    • Honest limitsWorlds are static, the ghost is a flat sprite, and the hologram is an optical illusion tuned on real hardware.