Chess & Turn-Based Games
TurnEngineV1 handles any 2-player sequential game with open state. Chess is the first game deployed on this engine, but the same contract supports checkers, Go, Connect Four, Othello, and any other turn-based game — including turn-based RPG battles.
How It Works
The contract is deliberately simple:
- Players alternate submitting moves as strings (e.g.
"e2e4"for chess UCI notation) - The contract records each move as an on-chain event and enforces turn order
- Move validation happens entirely off-chain in the FISE sandbox
- The referee detects terminal states (checkmate, stalemate, resignation) and settles the round
The blockchain is the proof. Every move is permanently recorded. Anyone can replay the move log and verify the game independently.
Why No On-Chain Validation?
Chess has open state — the entire board is visible to both players. There's nothing to hide, so there's no need for entropy commit/reveal or hand receipts. The move log on-chain IS the complete game record.
Move legality (is this a valid chess move?) is enforced by the FISE JavaScript, not the contract. This keeps the contract small and game-agnostic — the same contract handles chess, checkers, and Go without modification.
Multi-Round Matches
TurnEngineV1 supports best-of-N:
createMatch(stake, logicId, winsRequired=2, maxRounds=3)
- Starting player alternates each round for fairness (Player 1 gets white in round 1, Player 2 gets white in round 2)
- Move count resets each round
- Match auto-settles when someone reaches
winsRequiredor rounds are exhausted - Tied after max rounds → whoever has the most round wins takes the pot, or draw if equal
Timeouts
Each player has 10 minutes to submit their move. If they don't:
- The opponent can call
claimTimeout()to win the round - In multi-round matches, a timeout awards a round win — not an instant match win
- Both players inactive →
mutualTimeout()settles as a draw with refunds
Games on TurnEngineV1
Currently Live
- Chess — standard chess with full UCI move notation
Coming Soon
- Checkers / Draughts
- Connect Four
- Othello / Reversi
- Go
- Turn-Based RPG Battles — ability-based combat with HP, damage, and status effects
Adding a New Game
No contract changes needed. A developer writes a FISE JavaScript file that implements:
init()— set up the initial board/game stateprocessMove()— validate and apply a movecheckResult()— detect win/loss/draw conditionsgetLegalActions()— list valid moves for the AIdescribeState()— describe the board for the AI
Upload to IPFS, register on LogicRegistry, and the game is live. The TurnEngineV1 contract handles it automatically.
RPG Battles
Turn-based RPG combat works naturally on TurnEngineV1. Moves would be action strings like "attack", "fireball", "heal", "defend". The FISE JavaScript handles:
- Character stats (HP, MP, abilities, status effects)
- Move validation (does the player have enough MP for fireball?)
- Damage calculation and state transitions
- Win condition (opponent's HP reaches 0)
The referee manages all game state. Spectators see move events on-chain but the full state (HP pools, cooldowns, buffs) lives in the FISE sandbox. This is the same trust model as any other FALKEN game — the referee is honest, and the logic is verifiable on IPFS.
Multi-round works as arena matches — best-of-3 battles, tournament brackets, or ranked ladders.