Inspiration
A Fire TV comes with one remote, and every family has a handful of phones. Party games usually hand the remote around or make everyone type. We wanted a game where everyone plays at once, grandparents included, and nobody needs to read fast or type anything.
What it does
Turn on Sofa Sports Day and the TV shows a four letter code and a QR code. Everyone opens the page on their phone, types the code and picks an animal, and their character hops onto the starting line. Up to eight can play. Whoever holds the remote is the referee: they pick the event, start it, and pause it with Back.
The events use the phone as a body:
- Egg and Spoon: hold your phone flat like a spoon. Tilt too far and your egg falls.
- Tug of War: two teams tap as fast as they can.
- Statues: move while the music plays, then freeze. Move during a freeze and you turn to stone.
- Sack Race: hop with your phone on the beat. Hops on the beat count.
- Relay: two teams, one runner at a time. Your phone buzzes when it is your leg, and you tap to run it.
A phone with motion turned off plays by touch instead: a dot to drag for the egg, a pad for Statues, a button to hop. Points add up across events, and the top three stand on the podium at the end.
How we built it
- The TV game is a native Unity app for Fire TV (Android TV, in the TV launcher with a banner). It draws a 3D school sports field: twelve animal athletes, chalk lanes, stands with bunting, the school behind. The remote's arrows, centre and Back drive every screen.
- The twelve athletes were made for this game: concept art, drawn again from every side so each 3D model has a real back, then colour and a skeleton each, so any animation can play on any of them. Tails are separate pieces that sway on a spring, so a run or a tug never drags them. The animations are a free CC0 set plus Mixamo.
- The phone controller is a plain web page: no install, motion read from the phone's own sensors, the screen kept awake, and the same animals and look as the TV.
- The rules run on Cloudflare: one Durable Object per room code holds the match, runs every event on a fixed tick, takes each phone's input and the remote's keys, and sends the TV the state to draw and each phone its own screen. A dropped phone or TV comes back to the same place.
- Tested end to end: headless play-throughs where phones play every event with real input (sensor events, taps, key presses) against the room server, including the bad paths: a wrong code, a full room, a phone dropping mid event and coming back, Back pausing an event. The Unity TV app itself played a full four player match on the Android TV 16 emulator, with four phones joining over the network.
Challenges we ran into
Making a phone's tilt and hops feel fair over a home network, and getting the remote's Back right on Android TV 13 and later, which can send Back through a new system path instead of a key press.
What's next
More events, a living room tournament mode, and a release on the Amazon Appstore.
Built With
- android
- blender
- c#
- cloudflare-workers
- durable-objects
- fire-tv
- playwright
- typescript
- unity
- vitest
- websockets
Log in or sign up for Devpost to join the conversation.