Building Fair Randomness: Lessons from Rogue‑lites
Why unpredictability works only when players trust your system.
Every rogue‑lite dances on the line between chaos and control. Too much entropy and mastery collapses; too little and discovery dies. We start by defining a target pacing curve, then let randomness breathe inside guardrails that adapt to the player’s current skill delta.
Our loot tables aren’t flat. They’re weighted by context: recent failures, current build needs, and encounter variety. Crucially, we annotate each roll with a story reason—“the supply bay was ransacked”—so even misses feel authored. That small humanization converts algorithm into consequence.
Transparency builds trust. We run a debug overlay that surfaces recent rolls, pity timers, and streak breakers. QA can reproduce “unlucky” runs and decide whether the system is unfair or just unsatisfying. Players don’t need to see the numbers, but they should feel the intent.
Fair random isn’t 50‑50; it’s predictability of meaning. When a risk pays off, it should feel connected to the last ten minutes of decisions—not a coin flip in the dark.