Cuttle Simulation.
A full Cuttle card-game simulation and web app with MCTS, ISMCTS, minimax, heuristic, and LLM strategies.
A full Cuttle card-game simulation and web app with MCTS, ISMCTS, minimax, heuristic, and LLM strategies.
A 5-card game became a serious AI lab: MCTS reported a 94.9% win rate against heuristic opponents and surfaced strategy choices that humans had not documented clearly.
Cuttle Simulation separates the hard parts cleanly: a rules engine defines legal game state, strategy modules choose moves, and simulation runners compare those strategies over many games. That lets MCTS, ISMCTS, minimax, heuristics, and LLM-backed players compete inside the same rules boundary.
The teaching moment is reproducibility. A builder can swap one strategy without rewriting the game, run tournaments to measure it, then ship the resulting play experience through the web UI. The page is not just a demo of an AI player; it is a pattern for turning a domain into a testable strategy laboratory.
The AI only works because legal moves, scoring, and terminal states are deterministic and heavily tested.
type Strategy = {
chooseMove(state: GameState, legalMoves: Move[]): Move;
}; MCTS and heuristic players both implement the same strategy contract, so tournament results compare decision quality rather than plumbing.
The Vercel app turns the simulation engine into something visitors can inspect, replay, and reason about.
| Tool | Version | Role | Why this tool |
|---|---|---|---|
| Monte Carlo Tree Search | Current | Reasoning | Searches possible game futures instead of relying on brittle hand-authored rules. |
| Information Set MCTS | Current | Imperfect information | Handles hidden cards and uncertainty better than fully observable search. |
| TypeScript | Current | Game engine | Keeps rules, strategies, tests, and UI in one strongly typed codebase. |
| Vercel | Current | Deployment | Makes the strategy lab accessible as a public interactive artifact. |
SystemYou are playing Cuttle. Choose a legal move and explain the tactical reason briefly.
User templateGame state: <state> Legal moves: <moves> Return JSON with move_id and rationale.
Privacy. Public-safe. Avoid exposing API keys used for LLM providers.