Inspiration

A game my friends and I used to play, where the fun was never really in the rules — it was in what people let slip while playing. The most interesting resource in a room full of people is what they know about each other.

A salon turned out to be the right setting. People sit down, they relax, and they talk. And the person holding the scissors is the one person in the room who cannot walk away.

What it does

Salon of Secrets is a single-player portrait prototype in the Simulation & Management genre. You run a salon for seven days. Rent falls due every night, and you win by reaching Salon Level 3 before day seven ends.

Every haircut asks the same question with your hands. The head is five sections, each needing cutting, then colouring, then drying, and the tool you're holding has to match. Hair doesn't hold — leave a section and it slips back, finished ones included — so there's no coasting. Meanwhile the client is talking, and leaning in to listen stops your hands while the clock keeps running.

How well you cut decides what you're paid. How much you listen decides what you're told.

What they tell you isn't a deck of random rumours. It's one story, in eighteen fragments across six clients and three acts: what happened to Mirabel's, the salon that stood on this corner before yours. Act one is an oddity you wouldn't think twice about. Act two connects two of them. Act three is that client admitting their own part in it. The last fragment puts you inside your own crime scene.

And you can spend those secrets. Salon upgrades are payable in coins or in confessions — but selling someone's secret costs them trust, and the two people closest to them hear about it too. At zero trust they leave permanently, and everything they still had to tell you leaves with them. The six clients sit on two social triangles, and the win condition only needs three of them alive, so you can burn one circle to the ground and survive on the other.

Winning and hearing the whole story are close to being two different runs.

How I built it

Prompt-built with Claude Code, as a self-contained Three.js / HTML5 build that runs with no network access at all.

Three.js r149, vendored locally and loaded through a classic script tag rather than an ES module, specifically so the built file works when opened straight off disk. A small Python build script concatenates the source files into a single unminified index.html. Everything the game needs sits in the zip and is referenced relatively.

The UI is DOM and CSS rather than rendered geometry — card screens, a bottom tab bar, text panels — because that's the right tool for flat mobile UI. Three.js is scoped to one visualisation panel inside the cutting screen. There are no art assets: every client is inline SVG whose expression is driven by their live trust value, so the face is the mood.

Because nobody was playing it for most of the build, I leaned on gates: a syntax checker, a structural CSS checker, ninety-seven rule assertions driven through the real game-state module, a headless-Chrome renderer that screenshots every screen and fails on overflow or collapsed elements, and finally a scripted playtest that drives the actual cutting screen and reports what it really scores.

Challenges I ran into

The haircut was rebuilt four times: swipe across hair strands, a timing bar, three dragged tools, and then the current version. One of those rebuilds had to be reverted outright the day after shipping it.

The reason took me far too long to see. The first two versions weren't badly tuned, they were badly conceived: neither of them contained a single decision. One was tap at the right instant, the other was trace accurately. Both were pure execution, twenty-one times a run. Worse, the game's whole pitch is secrets and people, and the minigame was a payment gate that vended a card at the end — so every interesting tension lived in a menu while the thing you actually spent your time on could have belonged to any game at all.

The second challenge was trusting my own tools. A balance simulator told me a mechanic was fine when a mathematically perfect play-through scored 55% and lost most of the client's patience, because I'd calibrated its player model backwards from the previous mechanic. A syntax gate silently skipped itself and exited zero. An unclosed CSS rule swallowed the rule below it, so every client portrait rendered at 184px inside a 72px frame. And the hair had been rendering pure black since the day it was written, a one-line material bug nobody had looked at — because I'd written down that this environment couldn't run a browser, when a browser was installed the whole time.

Accomplishments that I'm proud of

Getting the game's actual question inside the minigame. The choice between money and knowing used to be a line item on an upgrade screen. Now it's made with your hands, on a clock, twenty-one times a run, and every second you spend listening is a second the hair spends slipping back.

I'm also glad the economy produces a strategy I didn't design directly: good work regenerates trust, so you end up deliberately building someone up in order to afford burning them later.

What I learned

"It isn't fun" is a design report, not a balance report. No amount of adjusting widths and speeds would have rescued either of the first two mechanics; the useful response was to name the missing ingredient.

A simulator's bugs arrive disguised as insights. Every wrong number I shipped looked like a finding. A harness that drives the real screen is worth more than a model of it, and I should have had one before the first mechanic, let alone the third.

Every gate I built was blind in the same direction. I had five ways to check the code and none to check what it looked like, and my confidence tracked how many checks passed rather than what those checks could see.

Hold one number fixed and you can replace anything. Everything downstream of the chair reads a single score on a 0–100 scale, which is the only reason a mechanic could be torn out and rebuilt three times without touching the economy, the story gates or the trust system.

What's next for Salon of Secrets

Deeper relationships. Six clients on two triangles is right for a prototype — small enough to hold in your head in one sitting — but the idea scales: clients who lie to you, secrets that go stale, rivals who pay for what you know.

Given the chance to rebuild it on the Early Access creation tools, I'd grow it into a longer-arc salon game where reputation is spent and repaired across many runs, and the same question keeps coming back: how much of your community are you willing to trade for a better chair?

Built With

  • ai
  • vsc
Share this project:

Updates

Submission history