On the laptop
Games, sensitivity, mic picker, restart, fullscreen, logs.
A game we built for Camp Mechaya
We wanted something a whole bunk could play at once, so we made the microphone the controller. Point it at a room full of kids, put the game on the projector, and everybody is playing — nothing to hold, nothing to pass around, no turns.
We have run it for about 400 people in one room, off a single microphone. What is on the right is a small version of the real thing, running the rules we built — press play, then shout.
Running the arithmetic we shipped: volume = RMS × 8 × gain, trigger fixed at 0.50, and the peak of the scream sets how high he goes — so a taller pipe needs a louder room. Nothing is recorded or sent anywhere.
Wake The Neighbors is available to license. Camps, schools, simchas, staff events — we set it up for your room and your microphone.
Get in touchWhy we built it
Every party game for a big group has the same bottleneck: one device, one pair of hands, and everybody else watching. Split a crowd into turns and a room of four hundred becomes one player and three hundred and ninety-nine spectators.
So we took the device out of it. We made the input how loud the room is, which means participation scales with the size of the crowd instead of being divided by it — and the kids shouting hardest are the ones doing best.
How we turn a shout into a jump
A crowd will forgive almost anything except lag. If the jump does not land while they are still shouting, the room stops believing it is doing it — so this is where most of the work went.
We read frames straight off the microphone track, and we deliberately switch off echo cancellation, noise suppression and auto-gain — in this game the crowd noise is the signal, not something to clean away.
Each frame becomes a single loudness value, scaled by the sensitivity slider, so a quiet hall and a gym full of kids can both be tuned to the same trigger line.
Crossing the line starts a short peak-hold, and the peak decides how high the jump goes. We added a grace window either side, so a scream that lands slightly early or late still counts.
We draw the world with PixiJS and log performance as it runs — every stutter is tagged with the game that was on screen and the mic level at that instant.
What we changed along the way
Every one of these came out of watching it get used, not out of a plan.
Sliders and dropdowns were sitting on the projected image where the whole room could see them. We moved every control into a separate console window on the laptop and left the projector with nothing but the game.
Screams were landing about a second late. The logs cleared the frame rate and the game logic, which left the capture path — a sample-rate mismatch was quietly building a buffer between the microphone and the game. We matched the rates and started recording the numbers every session.
Rather than keep tuning by feel, we ran the standard approach and a lower-level one head to head on the same machine. The standard one lost every trial, so we replaced it — and every session now writes down which path it used.
A three-level story mode asked more of a crowd than a crowd will give, so it went. Free Jump stopped pretending to be a game and became the mic check — the two minutes before you start, which turned out to be one of the most useful screens we have.
A good run now bumps a level, throws a banner, speeds the world up and cycles the sky — day, sunset, night, dawn, dusk. A long run visibly travels somewhere, which is what makes a room want one more go.
Two screens
We have the app open two windows. The projector gets the clean game and nothing else — no sliders, no dropdowns, no operator panels floating over the world. The laptop gets everything you actually touch.
The console picks the game, sets the sensitivity, chooses the microphone and throws the display fullscreen. The display streams the live mic level back to it, so whoever is running the night can calibrate against a real scream while the room is still looking at a title screen.
Games, sensitivity, mic picker, restart, fullscreen, logs.
The game, the score, and the result. Nothing else.
On the projector
Every screen below is the real application, captured from a running build.
Built to survive a room
There is no second take with four hundred people. Whatever it does on the night is the version they remember, so we built for that night specifically.
When screams started landing late we ran two capture paths head to head on the same machine rather than tuning by feel. The obvious one lost every trial, so we replaced it — and each session now records which path it used.
A rolling log summarises frame times once a second and writes a line the moment a single frame stalls, tagged with the game and the mic level. We capped it, so it keeps the recent history forever and can never fill a camp laptop.
The runner is hand-drawn art we packed into a sprite atlas with a script that has no dependencies. The pipes, hills, clouds and enemies are drawn in code. Nothing is borrowed from the games it nods to — only the physics constants, with credit.
One installer, per-user, no admin rights, no accounts, no internet. It asks for the microphone the first time it runs, and after that it asks for nothing at all — which matters when camp wifi does what camp wifi does.
What it comes down to
We have run it in front of about four hundred people at once, and we never had to explain the rules — the rule is visible in the first three seconds: shout, and the man on the wall jumps. Stop shouting and he doesn’t. Everything after that is just how far the room can get.
The parts that took the work — getting a scream on screen fast enough to feel caused, making one microphone behave the same in a gym and a living room, keeping every control off the projector — are the parts nobody in the room ever thinks about. Which is exactly what we were going for.