Building an interactive floor game: what a screen cannot teach you

Most of our work runs behind glass. This one runs under feet. Up The Beat is an interactive floor game we built for Q&R Media Services as the centrepiece of Heinz's "Up the Taste" activation in Kuwait: seven lit, pressure-sensing circles around a screen that calls a flavour and waits to see who is quick enough. Everything below is what we actually learned building it — including the parts that went wrong.
Two crafts, deliberately split
An installation like this is really two products sharing a cable. One is a real-time web game — the same Next.js and React stack we use for our digital titles — running as a kiosk display: it owns the rules, the clock, the score and the bilingual interface. The other is firmware on an ESP32-S3 microcontroller that owns exactly one thing: light.
The split is not tidiness for its own sake. The game sends a state — a flavour was called, a step was right, the round ended — and the board renders the animation locally. If the PC stutters, the floor keeps behaving. A child standing on a circle should never see the light hesitate because something upstream is busy.

A star, not a chain
The obvious way to wire seven LED rings is a daisy chain: one data line hopping pad to pad. It uses less cable and it is what most tutorials show. We ran a star instead — every pad gets its own data line home to the controller — for one reason: on a chain, a single failed connector takes every pad after it dark, in a mall, mid-campaign.
A star costs more copper and buys two things. A dead cable costs exactly one circle instead of the rest of the floor. And a pad's identity becomes which pin it lands on rather than its position in a chain nobody can see — which quietly removes the install-day bug where pad three lights up because someone stepped on pad five.

The failure that cost an evening
Seven independent LED strips is more than the microcontroller we chose can drive the easy way. Its hardware peripheral for this tops out at four; asking for a fifth does not degrade gracefully — the board aborts and reboots, forever, in a loop. Switching to the chip's parallel driver got us all seven, and then every strip rendered solid white: the driver's bit timing was wrong on that library version, so every colour bit read as a one.
The fix was a library upgrade and one build flag the failure never mentioned. We write these down now — the exact combination that works, and the three that do not — because the expensive part of hardware is rarely the soldering. It is the evening you spend proving which of four plausible explanations is the real one.

Designing for a child in a queue
On a phone, a wrong tap is private. On a supermarket floor, a wrong step happens in front of a queue. So the rules are gentle by construction: a wrong step costs the moment and nothing else — nothing ends, nothing resets, and no young player is knocked out mid-turn. The verdict lights the whole ring rather than one pad, so the answer reads from across the aisle and from directly on top of a circle.
The same thinking shaped the sound. Cues are short, they sit in the frequency band where retail noise is thinnest so they carry without being loud, and the wrong-answer cue is deliberately dull rather than a buzzer. Staff stand beside this for a whole shift; a sound that shames a child is also a sound that grates on the people who work there.
What we would tell the next studio
Physical work punishes assumptions that software forgives. A deploy can be rolled back in a minute; a floor cannot. So we built the boring safety in early: the installation runs self-contained on site rather than trusting venue Wi-Fi, and the kiosk updates and heals itself so nobody has to drive to a mall to restart a game. Most of that is invisible when it works, which is the point.
And the thing no screen teaches: scale changes the design. A game you hold is judged in the hand; a game you stand on is judged from ten metres away, by someone deciding whether to join the queue. Every choice we made about light, colour and sound was really a choice about that distance.