The Lighthouse Protocol
"Some secrets are lost at sea. Others are buried beneath the lighthouse."
Inspiration
Our main idea was based on the famous Netflix webseries "The Outer Banks" We wanted to answer a question that most puzzle games quietly dodge: what if the puzzles were the story instead of standing in front of it? Nearly every mystery game eventually hands you a number pad on a wall for no reason a real person would ever build one. We started from the opposite end — a keeper, a coast guard captain, a darkroom, a logbook — and asked what those people would actually do, then made the doing the puzzle.
The premise came first and refused to let go. When you were ten, your father — Coast Guard Captain Daniel Hayes — vanished in a storm. His boat washed up; his body never did. Twenty years later, five words arrive: "I failed. Finish what I started." They lead to an abandoned lighthouse hiding a forgotten research complex, where your father buried proof of a trafficking empire protected by senators, judges, and port officials — four records, four locks, each one rigged so only his child could open it.
Building it for Reddit's Developer Platform pushed us further. A game that lives inside a Reddit post is played by thousands of people who can compare notes in the comments — so we decided that no two players should get the same answer. That single constraint shaped the entire design.
What it does
The Lighthouse Protocol is a story-driven, first-person 3D mystery that runs entirely in the browser — and inside a Reddit post. A cinematic, fully skippable prologue sets the case, then you descend through five connected areas: the pier, the archive, the sea caves, the operations wing, and finally the undercroft beneath the lamp. WASD and the mouse move you; a single E key does everything diegetic — scan a cupboard, turn a sluice wheel, dip a photographic print, play a signal card, run the recorder.
Each area guards one record behind a puzzle a real keeper or officer would face, and each system is a different kind of thinking:
- The Names (The Archive) — a randomized concrete maze with sealed evidence cupboards; deduce a unique four-digit ledger code from a set of clues.
- The Routes (The Sea Caves) — find sluice gates hidden in wall-hollows, drain the smugglers' harbour in the tide chart's order, then beat a one-shot "running lights" memory lock.
- The Evidence (The Operations Wing) — a darkroom: kill the light, develop a print through Developer → Stop → Fixer in order, then put a name to every surveillance face — revealing your father, alive.
- The Final Message (Beneath the Light) — chase torn log pages through a locked footlocker, a coal chute, and a high shelf, then reconstruct the keeper's five-card "night-watch hand" from pure logic before cracking his cipher-word and opening the hidden chamber.
How we built it
The stack is TypeScript + Vite, with Three.js for the 3D world and Phaser for the 2D cinematic prologue Rooms 2–4 share one first-person engine that handles movement, collision, pointer-lock, and interactable, so each room file can focus purely on its own story and puzzle.
For Reddit, we wrote an idempotent port script that takes the standalone game and drops it into an app generated from Reddit's Three.js starter template — copying the five pages and the engine into the client, rewriting the script paths, bundling the self-hosted fonts, installing a custom splash, and registering every page as an entrypoint in devvit.json. Re-run it any time the game changes and it just works.
Challenges we ran into
The hardest problem was making "unique solution" true rather than probably true. Early clue sets often admitted two or three valid codes, or — worse — collapsed to a single clue that trivialized the puzzle. We had to make the generators adversarial against themselves: build every constraint, verify the solution count by brute force, and prune redundant rules so the player can't skip reasoning. Getting that to hold across the maze, the card hand, and the cipher, on every random seed, took far more iteration than the rendering did.
Accomplishments that we're proud of
Five genuinely distinct puzzle systems — deduction, exploration, memory, cross-referencing, and card logic — that each feel like doing the job rather than solving an abstract lock. A world with no repeated content: your code, your course, and your night-watch hand are provably yours, which turns the comment section from a spoiler minefield into a place where players compare deductions instead of answers.
A complete cinematic score and full sound design with not a single audio asset in the build. Three fully animated endings that take over the whole cellar — the lamp, the beam, and the lights act out your choice while an epilogue timeline stamps your total run time. And an ending that refuses to let you off easy: after twenty years and four records, the game asks what the truth is actually worth, and makes you live with the answer.
What we learned
Constraints are a design engine. Deciding that every solution had to be unique and procedurally generated didn't shrink the game — it authored it, forcing every puzzle to be a real system with real rules rather than a hidden password. We also learned how much you can get from the browser's native audio primitives: a small WebAudio graph, scheduled a bar at a time, carries an entire film's worth of mood without a single megabyte of samples.
Shipping onto someone else's platform taught us to design for hostile environments — no pointer lock, no autoplay, no backend, no guarantees — and to build graceful fallbacks instead of assuming the happy path. And porting through an idempotent script rather than hand-editing the target app saved us every single time we changed the game and needed it back on Reddit in two minutes.
What's next for The Lighthouse Protocol
We want the generative core to become social. Because every run is a unique, verifiable seed, we can turn each Reddit post into a shared daily case — everyone in the thread gets the same lighthouse, races the same clock, and compares run times and reasoning in the comments, with a leaderboard baked into the post.
Beyond that: a mobile-friendly control scheme so the game isn't desktop-only; accessibility passes for colour and audio cues; a fifth record and a deeper branch on the endings; and an authoring layer that lets other people design their own diegetic puzzle rooms on top of our engine and generator. The lighthouse has more rooms than we've lit yet.
Log in or sign up for Devpost to join the conversation.