Dice Chess Analytics
A high-performance analytical backend and data pipeline for Dice Chess — ingesting, normalizing, and querying millions of games and positions.
Key Features
Section titled “Key Features” Typed REST API Scala 3 backend on http4s + Tapir: endpoint definitions generate the OpenAPI spec, so docs can never drift from the implementation.
Position Deduplication A unique hashing schema utilizing xxhash64 and FEN normalization to map millions of turns to a minimal set of distinct chessboard positions.
Engine-Validated Ingestion dicechess-engine-scala is the single source of truth for game rules: every ingested game is validated by the engine before it reaches PostgreSQL.
Relational Game History Granular database models storing players, games, turns, rolled dice, and sequential game events.
What is Dice Chess?
Section titled “What is Dice Chess?”Dice Chess is a chess variant where a turn consists of:
- Dice Roll: The active player rolls three standard six-sided dice. The numbers correspond to chess pieces:
- 1: Pawn ♙
- 2: Knight ♘
- 3: Bishop ♗
- 4: Rook ♖
- 5: Queen ♕
- 6: King ♔
- Micro-moves: The player can make up to three moves in a single turn using the pieces shown on the rolled dice. For example, if a player rolls
1, 2, 4, they can make a pawn move, a knight move, and a rook move in any order. - End Turn: The turn ends after 3 moves, or if the player has no further legal moves, or if they capture the opponent’s King (declaring checkmate).