Seconding Slay the Spire, though it might be slightly too easy to win on the first attempt (I did and I’m not a god gamer). An advantage of StS is that you can specify the RNG seed, so you could give everyone the same test.
FTL (another roguelite) on easy difficulty also might work, though it’s realtime with pause which might be tricky for less experienced gamers.
Both of these are games that benefit a lot from thoughtfulness and careful risk management.
Is Slay the Spire programmed in such a way that giving players the same random seed will ensure a meaningfully-similar experience?
If it were programmed in the simple and obvious way, where it generates random numbers exactly when they’re needed, I wouldn’t particularly expect 2 players to see similar things. For example, suppose at the end of her first battle, Alice’s card rewards are determined by (say) her 21st, 22nd, and 23rd random outputs. But Bob plays a slightly more conservative strategy in the first battle and takes 1 turn longer to beat it, meaning he draws 5 more random cards and the enemy takes 1 more action, so Bob’s card rewards are determined by the 27th, 28th, and 29th random outputs and have no overlap with Alice’s.
Statistically, I’d still expect more overlap than if they used different seeds—if you try this many times, they’ll sometimes be “synchronized” by coincidence—but I’d still expect their results to be more different than the same, unless they also play very similarly.
I could imagine deliberately programming the game in a way where various important things (like battles and rewards) are generated in advance, before the player starts making choices, so that they’re affected only by the seed and not by what the player has done before reaching them. But that sounds like extra work that wouldn’t matter except for exercises like this, so I’d be moderately surprised if they did that. (I haven’t checked.)
There are separate random number generators for most things in Slay the Spire.
Specifically, this piece of code is executed at the start of a run:
public static void generateSeeds() {
logger.info(“Generating seeds: ” + Settings.seed);
monsterRng = new Random(Settings.seed);
eventRng = new Random(Settings.seed);
merchantRng = new Random(Settings.seed);
cardRng = new Random(Settings.seed);
treasureRng = new Random(Settings.seed);
relicRng = new Random(Settings.seed);
potionRng = new Random(Settings.seed);
// The following rngs are actually re-initialized each floor:
monsterHpRng = new Random(Settings.seed);
aiRng = new Random(Settings.seed);
shuffleRng = new Random(Settings.seed);
cardRandomRng = new Random(Settings.seed);
miscRng = new Random(Settings.seed);
}
Wow. I’m kind of shocked that the programmer understands PRNGs well enough to come up with this strategy for controlling different parts of the game separately and yet thinks that initializing a bunch of PRNGs to exactly the same seed is a good idea.
Nice find, though. Thanks for the info!
(I note the page you linked is dated ~4 years ago; it seems possible this has changed since then.)
IIRC the same encounters are present at the macro level—eg which enemies and cards are available. But there’s still a luck element there as one player may choose to go left and the other right, without either direction giving evidence in advance about which has better rewards.
Seconding Slay the Spire, though it might be slightly too easy to win on the first attempt (I did and I’m not a god gamer). An advantage of StS is that you can specify the RNG seed, so you could give everyone the same test.
FTL (another roguelite) on easy difficulty also might work, though it’s realtime with pause which might be tricky for less experienced gamers.
Both of these are games that benefit a lot from thoughtfulness and careful risk management.
Is Slay the Spire programmed in such a way that giving players the same random seed will ensure a meaningfully-similar experience?
If it were programmed in the simple and obvious way, where it generates random numbers exactly when they’re needed, I wouldn’t particularly expect 2 players to see similar things. For example, suppose at the end of her first battle, Alice’s card rewards are determined by (say) her 21st, 22nd, and 23rd random outputs. But Bob plays a slightly more conservative strategy in the first battle and takes 1 turn longer to beat it, meaning he draws 5 more random cards and the enemy takes 1 more action, so Bob’s card rewards are determined by the 27th, 28th, and 29th random outputs and have no overlap with Alice’s.
Statistically, I’d still expect more overlap than if they used different seeds—if you try this many times, they’ll sometimes be “synchronized” by coincidence—but I’d still expect their results to be more different than the same, unless they also play very similarly.
I could imagine deliberately programming the game in a way where various important things (like battles and rewards) are generated in advance, before the player starts making choices, so that they’re affected only by the seed and not by what the player has done before reaching them. But that sounds like extra work that wouldn’t matter except for exercises like this, so I’d be moderately surprised if they did that. (I haven’t checked.)
There are separate random number generators for most things in Slay the Spire.
From https://forgottenarbiter.github.io/Correlated-Randomness/ (which does point out there is some unfortunate correlated randomness, though I think there are mods that fix that)
Wow. I’m kind of shocked that the programmer understands PRNGs well enough to come up with this strategy for controlling different parts of the game separately and yet thinks that initializing a bunch of PRNGs to exactly the same seed is a good idea.
Nice find, though. Thanks for the info!
(I note the page you linked is dated ~4 years ago; it seems possible this has changed since then.)
IIRC the same encounters are present at the macro level—eg which enemies and cards are available. But there’s still a luck element there as one player may choose to go left and the other right, without either direction giving evidence in advance about which has better rewards.