Skip to main content
Back to all devlogs

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

The finished interactive floor game installed in a Kuwait co-op, its seven flavour circles lit

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.

Our wiring drawing: one LED data line per pad through a level shifter, switch signals returning to the controller
From our own build drawings: seven data lines leaving the controller as a star, and one common ground tying the supply, the board and every pad together.

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.

Flavour circle faces stacked before being fitted to the pressure pads
The seven circle faces before fitting. Each one had to read as its flavour from across a shop floor.

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.

The game screen calling a flavour in Arabic and English with the score and round clock
The screen calls a flavour in both languages at once. The disc shrinks as the window closes — the timer is the picture, not a number to read.

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.

Keep exploring