Game · Live on Stake
Sakura Storm
A 6×5 slot game whose payout model holds a 0.97 return across three bet modes, verified over millions of simulated rounds. Now live and playable on Stake.

Slot math is a constrained optimization problem. You are given a target return, a hit frequency, a max win cap and a volatility profile, and the reel set and payout table have to satisfy all four at once. Then it has to survive an audit by someone whose job is to find where you got it wrong.
The first thing I did was go to Stake and confirm exactly what the math had to hit, rather than assume it and find out later. It still failed their checks three times before it passed. Each time their RTP output came back and told me what was off, and it went another round.
The front end had its own problem: spins would freeze partway through. That one mattered more than it looked, because a slot that stalls mid-spin loses the player and you do not get their attention back. The note below is how I found it.
Certification is a useful forcing function, because it removes the option of "close enough." A payout distribution is either provably correct across millions of rounds or it does not ship. Getting there meant a lot of runs where the answer was no.
It passed both front end and math certification, cleared final platform review, and is now live and playable on Stake. You can open it and play it yourself, linked above.
My part: Confirmed the math requirements with Stake up front, ran the model back through certification until it passed, and caught and fixed the spin freeze. Art, code and math were all AI-generated under my direction.
Build noteHow I found the spin freeze
Spins would stall partway through the animation and never resolve. When it did not stall outright, symbols would break mid-cascade and the tumble chain would stop early, so a winning sequence just ended instead of paying out the way the model said it should.
Either failure is worse than it sounds. A slot that hangs mid-spin loses the player's attention, and you do not get it back. It reads as broken software at the exact moment the player is waiting to find out whether they won.
Locating it was elimination rather than a guess. The math model had not been touched, so it could not have changed behaviour. Every change in that window was in the front end spin logic, which meant the fault had to be in the code driving the animation and not the model underneath it. The payout numbers were still correct. Only the presentation of them was failing. That reduced the search from somewhere in the game to a specific layer, and from there it was a matter of finding which step in the sequence never fired.
Fixed within an hour of identifying it.
- Return to player
- 0.97 across all 3 bet modes
- Max win
- 25,000×
- Bonus trigger
- 1 in 400 spins
- Status
- Live on Stake
- Stake Engine
- Python
- TypeScript
- Svelte
- PixiJS



