5 min read
If you notice the overlay, it's too loud
Building Tamagrow taught us that a companion sitting on a live game has almost no right to your attention.
Written by OZP Studios, Seattle, WA
Tamagrow sits on top of a game. That's the whole job, and it's a worse job than it sounds. The player already has a HUD, a fight, audio, chat, the actual match. If our companion ever feels like a second game, we missed — they'll hide it in week one and never turn it back on.
Overlays fail in a pretty specific way. They get designed in a quiet file, with room to breathe, and then they get dropped onto a live match where attention is already spent. The overlay “has personality.” It also has a panel, a shop, three badges, and an animation every time something happens. Personality, in practice, was just more UI.
What we wanted was a companion that reacts to play without asking to be played. Realtime signals in, a thin response out. WebSockets and overlay APIs, not a mini-app floating over the game.
Late is wrong, not just slow
If the companion celebrates a kill two seconds late, it isn't charming. It's narrating a different match. We treated the delay budget like a product constraint, not an infra footnote. Realtime first. Anything decorative after that.
That meant cutting a bunch of stuff that looks good in a demo. Long generated lines of dialogue. Heavy illustration in the hot path. Anything that has to think before it can appear. Engineering kept pulling work off the path that has to hit during a fight. The personality layer sits on a fast, boring pipeline. It isn't the pipeline.
If you have to look at it, it lost
The test we used: can you read it without leaving the match? If you have to aim at the overlay, it lost. Size, contrast, motion — we kept cutting until it could live in peripheral vision. Motion costs attention, not just GPU. We kept it for state changes the player already cares about. We didn't keep it for charm. Charm is what you add when the useful version is already quiet.
We're still in beta, so some of this is a rule we're holding rather than a thing we've finished. The temptation, every time we open the file, is to give it one more panel.
Dashboards do this too
This isn't only a game problem. Internal tools do the same thing. A status chip that pulses. A helper panel that opens itself. A copilot that wants a conversation while someone is reconciling a spreadsheet. If the main task is already hard, the software next to it shouldn't be auditioning.
Tamagrow just made the failure mode impossible to ignore, because a match will not pause for your UI. When we take on dashboards, overlays, or anything that sits beside live work, that's the bar we bring. If you notice it for the wrong reason, we went too far.