
Stellarch
Provably-fair trading-card game on Hive
I'm building Stellarch, a trading-card game on the Hive blockchain, and the engineering decision I keep coming back to is this: the entire combat engine is deterministic.
Every battle resolves from a single seed. Same teams, same ruleset, same seed, and you get a byte-identical replay every time. There is no hidden server-side RNG you have to trust.
The reason is a trust problem I kept hitting as a player in this genre. When a match feels rigged, you have no way to check it. The server rolled dice you never saw. So I built the engine so the dice are reproducible: anyone can take a match's seed, replay it themselves, and get the exact same result. You don't have to trust the fairness, you can verify it.
It forced some real constraints. The combat kernels are pure functions: no database writes, no clock reads, no Math.random anywhere in the resolution path. State only mutates at the boundary, after the math is done. A single test asserts that no raw RNG ever leaks into the engine. It is more discipline than just calling rand(), but it buys a property I think competitive games should have by default.
The design philosophy that came out of it: fair, not free. Cards cost money and a sharp collection is a real edge, but a smart draft should beat a big budget, and no card is ever sold as a guaranteed win. Knowing which cards matter beats raw spend.
Still pre-launch. The closed alpha is coming and the waitlist is open at stellarch.io if you want an early invite. Happy to go deep on the deterministic-engine approach, it has been the most fun part to build.

1 Comment
Making combat deterministic solves more than a fairness problem—it changes the trust model of the game. Players no longer have to believe your servers are honest; they can verify outcomes themselves. I'd be curious whether you've thought about how that philosophy could extend beyond combat, because "verifiable game systems" feels like a much bigger positioning than just deterministic battles.