← ProjectsJune 2026

Slay the Spire 2

Slay the Spire 2 simulator

A Spire fight you can take apart, rerun and argue with.

A good turn in Slay the Spire depends on more than the cards already in your hand. The next draw matters, the enemy’s intent matters, and sometimes keeping a little health now costs you more later.

From simulation to the live game

A short excerpt from the later live-game pipeline, using the C# bridge and Python combat agent.
Mean HP loss of 2.120 for the safety baseline and 2.028 for sampled expectimax on one saved encounterView larger ↗
01 Regent vs Fuzzy Wurm Crawler, 1,000 runs per policy. Mean HP lost; lower is better.

This simulator puts a small piece of that problem under a microscope: the Regent starter deck and three encounters. It generates legal card sequences, runs different decision policies and compares how much health they lose.

A small result that changes the question

In a 1,000-run comparison against Fuzzy Wurm Crawler, sampled expectimax lost 2.028 HP on average, compared with 2.120 for the safety baseline. On the other two saved fights, expected-value play did slightly better.

That makes encounter-by-encounter testing useful. A policy that looks clever in one fight can spend health badly in another.

Come back to the same fight

The engine also exposes a Gymnasium environment with player-visible observations and legal-action masks. A fixed seed makes the underlying fight repeatable, so a decision can be examined and compared across policies.

Under the hood

Structured card, enemy and intent data, with explicit rules for a restricted set of starter-deck encounters.

Legal full-turn sequence generation and heuristic, expected-value and sampled expectimax policies.

Batch runs, seed-level comparisons and exported combat statistics.

A Gymnasium interface with player-visible observations and action masks for reinforcement learning.

Across the saved 1,000-run comparisons, the best policy changes with the enemy. Expectimax leads on Fuzzy Wurm Crawler; expected value leads on the other two fights.