Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

prng’s are exploitable if the other agent is fixed and deterministic. A winning game can then be repeated as long as the initial seed is identical. In such cases it’s also possible to extract information from the prng as to which opening is used.

This is a common strategy with https://en.wikipedia.org/wiki/Tool-assisted_speedrun, https://glitchcity.info/wiki/Luck_manipulation As Starcraft is also a single player game this is very much relevant.

So again, to be as clear as possible. Starcraft is deterministic, it’s only in multiplayer games when a players actions are randomized that the game appears to be random.



This is an interesting argument. If I understand right, you're saying that since the random numbers are produced by a deterministic process with a hidden seed, Starcraft isn't actually "random", it's just a hidden information game (the hidden information being the seed).

Taken to its extreme, you could take Chess, and add in a hidden seed at the start of the game, and run a PRNG during the game, and randomly decide some events. And you wouldn't have taken a full-information game and added randomness; you would have taken a full-information game and added hidden information.

Now, you're talking about using weaknesses in the PRNG to predict future random results. It seems to me there are two ways to do that: Learn what the seed is directly (perhaps by controlling what the seed is), vs. learning what the seed is by looking at PRNG outputs.

If we say the first option (directly learning the seed by controlling inputs or whatever) is impossible (which makes sense), then the only reason we can exploit the PRNG is that it's not cryptographically random.

Which is interesting. What if it the PRNG is indeed cryptography-secure? If an element of a hidden-information game is "deterministically" produced by a cryptography-quality algorithm, then that element can't be predicted. But it's still entirely deterministic.

So in some sense, no games have any randomness, they only have hidden information, and that hidden information can be kept very hidden using cryptographic techniques/algorithms.

A CPRNG + hidden information gives us seeming randomness in games. What other cryptographic techniques could you add into a game, and what would they map to from a human player's perspective? Encryption is seemingly obvious - hidden communication. What about hashing? What about homomorphic encryption? Others?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: