Inspiration

Chess is a wonderful game that most families never play together, because the stronger player almost always wins. Dice Chess changes one thing: before every turn you roll three dice, and each die names a piece you may move. Luck gives newcomers a real chance, and every roll asks for a fresh decision. That makes it a game for the living room, not only for the chess club. In Latvia, where we are based, dice chess tournaments are held in which even the youngest children play, and the Dice Chess Federation, registered here, holds tournaments in several countries, open to players of every age and level. Our demo video opens on the federation's own tournament footage, used with its permission.

Fortemate already had a Dice Chess rules engine. The TV is where families actually sit together, so we used that engine to build a game that feels native to Fire TV: one screen, one remote, no accounts.

What it does

  • Learn with Thinkle: the wizard teaches six interactive lessons, speaking as you play. He explains the first roll, choosing a piece, clearing its path, taking pieces and finally capturing the king. His words appear on screen too. The tutorial is offered on first launch and leads straight into a game.
  • Play a friend: two players share one remote and pass it after each complete turn. Prowla the cat hosts the game, welcomes both players, reacts to what happens on the board and asks for the remote to change hands. Rolly or Thinkle can host instead, or nobody. An optional setting turns the board to face the player whose turn it is.
  • Three computer opponents: Rolly is the easy, unpredictable opponent, Grabby takes the most valuable piece it can, and Rampage hunts your pieces and goes for your king. Each has a portrait, a voice and a playing style of its own, and you can play either color. All three run locally on the TV in a dedicated background Hermes worklet runtime, and rematches against the same opponent open with dedicated rematch lines.
  • Full Dice Chess rules: three-die turns, castling, promotion and en passant, victory by capturing the king, resignation and draws. There is no check or checkmate. You must use as many dice as the position allows, sometimes moving one piece to make room for another.
  • Controls made for one remote: the whole game uses the D-pad, OK and Back. The arrows jump between playable pieces and legal destinations. Unusable dice dim, and pieces slide to their new squares so you can follow an opponent's turn from the sofa. A setting can play the only legal move for you when there is nothing to decide.
  • Accessible from the sofa: a Highlights setting offers four ways to mark the board. Color-blind uses the Okabe-Ito palette and gives every state its own shape, so a movable piece, the piece in hand, its squares and a capture never depend on color alone; High contrast draws the same marks in black and white; Enhanced lifts the piece in hand and bolds the cursor; Standard is the television look. The four were compared across simulated protanopia, deuteranopia, tritanopia and achromatopsia on our browser test bench. With VoiceView on, the game announces the menus, the square under the cursor, each roll, move, handoff and result.
  • Music that follows the game: four themes by pepka-prygni, one for the menus and three that grow tenser as your king comes into danger. Settings is one screen, opened from the home menu or during a game: independent volume rows for music, sounds and voices, the highlights, auto-play of the only move, your color against the computer, board turning and the host for friend games. The focused row says what Left, Right and OK do.
  • The rules within reach: a nine-topic reference covers turns, dice, captures, special moves and draws, from the home menu or in the middle of a game. A roll that leaves nothing to play is explained plainly, because a new player could easily take it for a bug.
  • Pick up where you left off: the game is saved after every action and resumes with the same board, dice and remaining turn.
  • A little magic at the start: Thinkle conjures the dice in an animated launch sequence.
  • Private by design: the game works offline, with no accounts or analytics. Games, results and settings stay on the TV.

How we built it

We are a team of three: Jegors Čemisovs developed the application, and Anna Terehova and Arleriana tested it.

Development of the TV application (fortemate/dicechess-tv) started on September 21, 2026, during the hackathon. Its foundation is our existing Dice Chess rules engine (@fortemate/dicechess-engine), which was built before the event. The hackathon work is the TV game itself: the shared pure TypeScript core, native interface, remote navigation, background worklet opponent runtime, interactive tutorial, characters, 446 spoken lines, adaptive audio, animations, accessibility presets, VoiceView integration and local saving (scope table).

We use React Native for Vega, TypeScript, Vega SDK 0.24 and React Native 0.83 to build a native application for Fire TV on Vega OS. A small, pure core (lib: ES2022, types: []) manages game state and turn phases. The rules engine determines legal actions and complete turns, and the TV interface displays the resulting state.

All three computer opponents (Rolly, Grabby and Rampage) execute their search in a separate Hermes worklet runtime (@amazon-devices/react-native-worklets), serialized through an MMKV mailbox and verified against the exact saved turn so that even heavy tactical searches never block remote input on the interactive runtime. The same engine helps assess danger to the king for the adaptive music. Vega APIs handle remote input, audio and application lifecycle events; MMKV stores the game locally. The app reports its fully drawn state through Vega's performance API, and talks to VoiceView through React Native's accessibility announcements.

AI coding agents, mainly Claude Code, assisted development through reviewed pull requests. Character voices (446 in-game recordings across nine packs: 159 opponent lines, 239 Hot Seat host lines across Prowla, Rolly and Thinkle, and 48 tutorial lines) and Thinkle's narration of the demo were created with ElevenLabs, and the portraits with Recraft. The recordings and artwork are prepared during development and bundled with the application, so nothing needs to be generated or downloaded during play.

We also built vega-vvd-driver, a separate MIT-licensed tool for controlling the Vega Virtual Device from scripts and AI agents. Its CLI, Node library and MCP server provide remote key presses, screenshots and video recording with sound. We used it to check complete interactions, take the Virtual Device screenshots in this gallery and record the demo.

Testing and release

The game has been developed and exercised on the Vega Virtual Device, and has run on a physical Fire TV Stick 4K Select since October 6, 2026.

  • Live on the Amazon Appstore: Dice Chess has been live and free on the Amazon Appstore since October 20, 2026 (starting with version 1.0.1, build 30), and version 1.0.4, build 58 (with the background Hermes worklet opponent runtime, board highlight presets and audio lifecycle hardening) passed Amazon's Primary, Content Policy and Functionality Validation and went live on the store on October 22, 2026.
  • Latest GitHub release: Dice Chess 1.0.5, build 59, was released on GitHub on October 22, 2026, following 1.0.4, build 58 (October 21) and 1.0.3, build 34 (October 18). Version 1.0.5, build 59, passed 1,061 automated tests (337 core, 711 native and 13 browser test bench), together with type, lint, formatting, Metro, site and packaged-notice checks; GitHub Actions CI, CodeQL and SonarCloud passed on the release commit (6827541).

On the physical Fire TV Stick 4K Select, with music, voices and effects enabled:

  • Sustained play and background worklet search: across the 1.0.4 and 1.0.5 validation runs, natural full games against Rolly, Grabby and Rampage (as both White and Black) and automated Hot Seat sessions ran on the Stick with opponent searches in the separate Hermes worklet runtime, alongside a continuous ten-minute Rampage session, Menu/resume during a slow search, cold search recovery and 180-second same-process Home returns, with no new system crash records.
  • Expanded voice catalog and cold-start speech: the 179 new opponent and host recordings in 1.0.5 (bringing the app to 446 clips) passed a 179-clip native AudioPlayer completion and music-recovery sweep on the Stick, alongside television listening confirmation on six sampled start, result and rematch sequences and three cold-start Thinkle greetings after the #488 completion fix.
  • In-place developer upgrades and Accessibility presets: the final 1.0.5, build 59 armv7 archive upgraded the developer installation without uninstalling, verified all 475 installed application files by SHA-256, and kept MMKV saved games, results, settings and CRC byte-identical. The four Highlights presets were installed and checked on the Stick (build 32), and the Settings screenshot on the project site was captured directly from the physical Stick on build 58.

VoiceView was checked on the Virtual Device on October 11, with its speech recorded after every press; it has not yet been listened to on a physical Stick.

Earlier measurements on the physical Stick with Amazon's KPI Visualizer and Perfetto on Release builds showed:

  • Launch: a median of 412 ms to first frame and 2.65 s to fully drawn, over nine recorded cool starts on October 6, 2026.
  • Response to the remote: a median cursor input-to-frame latency of 59 ms, down from 152 ms before the board-rendering optimization, measured on October 9, 2026.

The demo video opens on the Dice Chess Federation's tournament footage, used with its permission, and then shows the game recorded on the Vega Virtual Device on macOS. Artwork, sounds and music are used under their respective licenses and permissions, with credits on the app's About screen.

Challenges we ran into

  • Getting the board onto Vega: our first prototype used a WebView. Runtime crashes on SDK 0.24 (FL-01) led us to rebuild the board natively in React Native.
  • Making the remote feel direct: moving through every square was cumbersome. We made navigation jump between useful choices (cutting average presses per turn by 60%, from 23.0 to 9.2), while keeping selection, cancellation and Back predictable across three different OK key names (enter, kpenter, select — FL-03) and separate Back handling (FL-06).
  • Making audio behave: supported formats, resource paths and looping needed experiments on the device (FL-11, FL-12, FL-18, FL-25). Crossfades let the music continue smoothly, and spoken lines remain visible as text. An OS update on the physical Stick exposed player-reuse hangs (FL-31), which led us to join effect cues into a single sprite, strip MP3 ID3 tags at build time, defer player initialization until after the first React commit, and advance tutorial speech strictly from native ended events.
  • Keeping the interface responsive: searching possible turns could occupy the JavaScript thread (FL-13). Physical-device profiling helped us optimize threat calculation, avoid redrawing the whole board for every cursor move, and move all computer-opponent searches into a separate Hermes worklet runtime (@amazon-devices/react-native-worklets) with foreground-only transport deadlines and recovery.
  • Marking the board for everyone: our green "can move" mark was color-only. We built a browser bench that draws the same board under simulated color vision, compared presets there, and shipped the ones that read without color.
  • Reviewing a TV interface: we built a repeatable capture workflow around the emulator (vega-vvd-driver), making it easier to test remote navigation and compare recordings after changes (FL-08, FL-09).

We recorded 32 reproducible SDK obstacles (FL-01 to FL-32), exact versions, reproduction steps, severity ratings, workarounds and actionable suggestions in our public Vega SDK Friction Log for the Amazon team.

Accomplishments that we're proud of

  • A complete game that two people can share with one ordinary TV remote, now live on the Amazon Appstore (B0HL6K9N47).
  • A tutorial that teaches by letting the player make the moves, with Thinkle explaining each step.
  • Characters whose 446 acted voice lines and reactions match their roles: a welcoming host, a gentle opponent, a collector and an aggressive hunter, with dedicated rematch dialogue.
  • Computer opponents that search in a separate Hermes worklet runtime so the remote stays responsive during play.
  • Music that responds to the actual position.
  • Board highlights that work for color-blind and low-vision players, and a game that VoiceView can narrate.
  • Reviewed changes and 1,061 automated tests covering complete turns, saving and the native interface.
  • Releases checked on both the Virtual Device and a physical Fire TV Stick, including sustained gameplay and byte-exact saved-game upgrades.
  • An open-source tool (vega-vvd-driver) that other Vega developers can use to inspect, test and demonstrate their own applications.

What we learned

On a TV, every button press counts. The screen has to explain what just happened without a mouse, a hover or a small tooltip.

A correct game can still be confusing. A roll with no legal move needs an explanation; an opponent's multi-action turn needs to be shown clearly; passing the remote needs a visible change of player.

Sound gives the game personality, but the important information also needs to be on screen. Thinkle's instructions, character dialogue and game events remain understandable with sound turned off, and a screen reader needs to be told what the game drew.

Playtesting also changed our design decisions. We returned to simpler board highlights after trying a more elaborate approach, then made the elaborate ones optional presets for the players who need them. The clearest presentation was the one that made the next move easy to see.

Physical-device testing taught us to measure the work behind a frame and test across OS updates. A calculation or media-player lifecycle that seemed inexpensive on the Virtual Device could delay the remote or stall a pipeline on the Stick. Profiling, saved positions, background worklets and repeatable input helped us find the cause and verify the changes.

What's next

  • Submit the 1.0.5, build 59 voice expansion (446 recordings and dedicated rematch openings) as the next update to the live Amazon Appstore listing (currently serving 1.0.4, build 58).
  • Fire TV on Fire OS next, then Android TV, Google TV and Apple TV, from the same core and rules engine.
  • Longer playtests on additional Fire TV devices and more sessions with first-time players.
  • Further improvements from players' feedback, especially first-game clarity and accessibility, including following the system Adaptive Display text-size setting and testing VoiceView on a physical Fire TV.
  • More board themes and piece sets.
  • Exploring online play as a future extension of the TV game.

Built With

  • codeql
  • dicechess-engine
  • elevenlabs
  • fire-tv
  • github-actions
  • kepler-performance-api
  • node.js
  • react
  • react-native
  • react-native-for-vega
  • react-native-mmkv
  • react-native-svg
  • react-native-w3cmedia
  • react-native-worklets
  • recraft
  • sonarcloud
  • typescript
  • vega-os
  • vega-sdk
  • vega-virtual-device
  • vega-vvd-driver
Share this project:

Updates

posted an update —

Dice Chess is now live and free on the Amazon Appstore (since October 20, 2026), and we have published our final hackathon GitHub release, Dice Chess 1.0.5, build 59!

What's new in 1.0.4 (build 58) and 1.0.5 (build 59):

  • Separate Hermes worklet runtime for all computer opponents (#480): Rolly, Grabby and Rampage now run their move search in a background worklet runtime (@amazon-devices/react-native-worklets), serialized and checked against the exact saved turn, keeping the interactive runtime responsive even during deep tactical searches.
  • 446 voice recordings & rematch openings (#490): 179 additional English recordings bring the catalog to 446 clips (159 opponent lines across Rolly, Grabby and Rampage, 239 Hot Seat host lines across Prowla, Rolly and Thinkle, and 48 tutorial lines), including dedicated rematch openings when you play the same opponent again and roomier speech bubbles.
  • Cold-start speech & audio lifecycle hardening (#479, #488): Audio players attach after the first React commit, effect players release while the app is in the background, and Thinkle's cold-start greeting waits for native playback completion before starting the next sentence.
  • 1,061 automated tests & physical Fire TV Stick validation: 337 core, 711 native and 13 browser-bench tests pass alongside CI, CodeQL and SonarCloud, with in-place developer package upgrade, byte-identical MMKV save preservation, and a 179-clip native playback sweep verified on our physical Fire TV Stick 4K Select.

Project site & 32-entry Vega SDK Friction Log: https://dicechess-tv.fortemate.com/friction-log/

Log in or sign up for Devpost to join the conversation.

posted an update —

New demo video, release 1.0.3 and board highlights for colour-blind players

Our demo video has a new opening: live tournament footage from the International Dice Chess Federation, used with its permission, with Thinkle the wizard explaining why three dice let a whole family play. The rest of the video shows the game as it ships, recorded on the Vega Virtual Device, and closes on how it was built: React Native for Vega. https://youtu.be/YJ01_M5g-Vc

Since the last update:

  • Dice Chess 1.0.3, build 34, is on GitHub (18 October): consistent U.S. English, the Settings screen explains every row, and the rules reference gained a topic on draws. The 1.0.1 build 30 submission is still in Amazon's Appstore review.
  • A Highlights setting offers four ways to mark the board: Standard, Enhanced, Color-blind (Okabe-Ito palette, every state with its own shape) and High contrast (black and white). They were compared across simulated colour vision on our browser test bench and installed on a Fire TV Stick 4K Select.
  • With VoiceView on, the game announces menus, the square under the cursor, each roll, move, handoff and result (checked on the Virtual Device).
  • The gallery was retaken from version 1.0.2: fifteen screens, including Settings and the two accessibility presets.

Project site, friction log and source: https://dicechess-tv.fortemate.com/

Log in or sign up for Devpost to join the conversation.

posted an update —

Thinkle teaches, Prowla hosts — and a new demo

Dice Chess for Fire TV now has a wizard to learn with and a cat to share the game with.

Thinkle teaches six interactive lessons with his own voice. You learn by making the moves, from your first roll to capturing the king. His instructions also appear on screen, and the tutorial leads straight into a game against Rolly or a friend.

Prowla the cat hosts Hot Seat games: she welcomes both players, reacts to the action and reminds them to pass the remote. Optional board turning lets each player see their pieces at the bottom.

Pieces now slide between squares, making an opponent’s turn easier to follow. At launch, Thinkle welcomes you by conjuring the dice.

Our new 2:43 demo shows the tutorial, Prowla, the three opponents, saving and resuming, and adaptive music that grows tenser as the king comes into danger:

Watch the new demo

We’re now a team of three. The latest build has also been installed and launch-checked on a physical Fire TV Stick 4K Select. This demo was recorded on the Vega Virtual Device; broader physical-device playtesting is next.

Log in or sign up for Devpost to join the conversation.

posted an update —

Beta 7: the opponents are fairy-tale characters, with voices of their own

Rolly is a mischievous forest pixie, Grabby a greedy goblin, and Rampage a little horned imp who thinks he is a warlord. Each voice was designed for its character with ElevenLabs Voice Design, and all 63 lines are acted: Rolly giggles and whispers, Grabby gloats and sulks, Rampage threatens and roars. The voices are made ahead of time, so the game stays offline, and a bot's speech bubble now stays up until its line has been said.

Log in or sign up for Devpost to join the conversation.

Submission history