Round framing, host performance, prompts, reveals, scores, and transitions stay public.
// featured technical case study · 2026
The TV hosts.
Phones scheme.
Make Enemies turns a living room into a spiteful game show. The television owns the spectacle, each phone keeps choices private, and one realtime room authority keeps the chaos legible.

- Product problem
- Party games make one screen do too much.
- Interaction model
- Public television, private phones.
- Room authority
- One Durable Object per live game.
- Delivery
- Web, Fire TV, Android TV, and Roku.
// product decision
One room.
Two interfaces.
The television is not a stretched phone app. It is the stage, timer, scoreboard, narrator, and shared source of truth. Phones handle joining, secret choices, accusations, and the occasional betrayal.
Joining, voting, writing, targeting, and confirmation happen in the player’s hand.
// realtime architecture
A room is a small, durable machine.
Every game room maps to one Cloudflare Durable Object. That object owns phase, timers, connected players, submissions, scoring, and the event stream. Clients render the state; they do not negotiate reality among themselves.

// host as product system
SAVAGE keeps thirty modes sounding like one show.
The host is not decorative flavor text. SAVAGE introduces modes, calls players by name, explains the next action, reads outcomes, breaks ties, and carries one editorial voice through every state change.
- Mode-specific intros and transition lines
- Player-aware reactions and result narration
- Shared timing rules for speech, captions, and animation
- Fallback copy when audio is unavailable or late
// the show layer
Every state earns a broadcast-ready frame.
Scores and videos are not utility panels dropped onto a television. Each state gets a readable composition, a clear focal point, and enough theatrical excess to feel intentional.


// implementation
Shared game logic, platform-specific delivery.
The browser client carries most of the product. Capacitor packages the phone and Android TV surfaces, Fire TV gets remote-aware behavior, and Roku work keeps its platform constraints explicit instead of pretending every television is a large browser.
- React 19
- Vite 8
- TypeScript
- Cloudflare Workers
- Durable Objects
- WebSockets
- Capacitor 8
- Android TV
- Fire TV
- Roku