Inspiration

A tabletop game needs one shared table. In a living room the television already is that table, and the Fire TV remote is already in someone's hand. We wanted friends in different homes to sit at the same table, with nobody stuck running the game.

What it does

D20 FireVerse is a 5E-compatible one-shot for Fire TV, A Very Potent Brew: a tavern job, a brewery under a wizard's tower, puzzles, fights and a boss. One to three players join a room. Each player uses the D-pad, or a phone that scans that TV's QR code and becomes their controller and character sheet.

The server rolls every die. The television animates that same roll, speaks the scene, and keeps subtitles locked to the voice. Every character has a distinct voice. If a player drops mid-fight, their hero Dodges and the turn passes. The adventure autosaves, and Continue picks the table back up.

How we built it

TypeScript monorepo. The TV client is Vite, PixiJS and Three.js, inside a Kotlin WebView app for Fire TV and Android TV. The phone is a second web client on the same WebSocket protocol. An Express server is authoritative for movement, combat, checks, votes and saves. The Fire TV app finds the server on the local network with mDNS.

Narration runs on that server with Kokoro-82M, cached per line, with per-character pitch and room tone. The score and the sound effects are original and synthesized, so the demo uses no licensed music. Rules text is an SRD subset under CC-BY. The code is MIT.

Challenges

The Fire TV canvas does not take DOM focus, so the D-pad is handled at the window and forwarded by the WebView. The Stick's WebView has no speech-to-text, so the phone is the second seat: sheet, choices and a swipe to throw the die that lands on the TV. There is no public API for a third-party app to drive a customer's Alexa lights, so the table is fully playable with screen, remote and phone. The first combat also felt stuck once an attack was already spent; OK on an enemy now means strike, and a first-fight coach marks the recommended action.

What we learned

A living-room game is an input problem before it is a rules problem. One server state has to drive the picture, the voice and the phone, or the table falls apart.

Built With

Share this project:

Updates

Submission history