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

Starcraft is deterministic, the only random element is how people click. Slow the game to 1/10,000th current speed and it’s turn based.


Starcraft is not deterministic, and the nondeterminism can matter in significant ways.

In Starcraft 1, every ranged attack had a 120/256 chance of missing a unit that was up a hill or behind a tree, and a 1/256 chance of missing always.

In Starcraft 2, attack cooldowns are slightly randomized, so two units that are commanded to attack each other will almost never kill each other simultaneously.


Starting positions are also randomized and the maps are not symmetrical (nor are Terran buildings with add-ons!) so starting position matters slightly.

Plus the balance tweaks are somewhat aribitrary so there's a degree of luck to when exactly a match takes place.

I'm sure there are many more examples of non determinism but the biggest differences to chess are hidden information, which makes it resemble poker, and real-time actions, meaning SC is a game of dexterity as much as it is a brain game.


By your argument Pokemon is also a non deterministic game


Pokemon is highly nondeterministic. To take just one example, there are many moves which probabalistically induce game-changing status effects on the enemy.


This is exploitably incorrect. It seems that way to players but tool assisted Pokemon speed runs regularly use luck manipulation. https://glitchcity.info/wiki/Luck_manipulation

Games have had really bad prng’s for preformance reasons and gamers have been exploiting them for years. The most extreme example is probably Doom’s which was simply a hard coded list of numbers. https://doom.fandom.com/wiki/Pseudorandom_number_generator


Luck manipulation is only possible in more recent entries by exploiting game-external factors like the system clock. But, in any case, when it comes to comparing games implemented in software (like Pokemon) with games that aren't, you have to distinguish between "the game" and "the software". The Pokemon game is designed to be non-deterministic from the player's perspective, regardless of the fact that the Pokemon software may be deterministic in some detectable or manipulable way. Just like craps would still be a game of chance even if you figure out how to fix your rolls.


So in your mind actual Pokémon games are deterministic, but the platonic ideal for Pokémon is not. Why would you assume the real Pokémon game was your mental model?

I mean the software implementation defines the game and it’s the only thing anyone has ever played. It seems to me any change you make results in a different game. It’s not like a game allowing pawns to move 3 spaces can be called Chess even if everything else was the same.


The point is that nothing is random, even pure games of chance, if you have enough physical data about the rng.

Humans playing Pokemon on a standard device cannot manipulate luck.


Actually humans can exploit the prng on for example Generation III Pokemon. It takes frame perfect timing, which limits how long you can do so, but it is possible at the start of the game.

This really falls into the same category as speed running using save game glitch: https://www.youtube.com/watch?v=qHTK5GLOFVM aka possible but only really useful if you’re trying to do something very specific.

Anyway, while I understand you assume this stuff to be impossible I simply suggest you do some research before bringing it up.


True, and fair point!

Randomness is a matter of perspective. For any source of randomness there exists an oracle, and in some cases you can actually construct the oracle, and profit thereby.


Starcraft 2 replays work by replaying player actions not game state, they don’t need to record a random number generator’s output just a shared seed.

Now, you can argue the prng is effectively a random number generator, but that’s more semantics than reality. Further, RTS games use a shared seed to minimize network traffic. So, this is an important design choice.

However, as I said the player’s actions prevent individual players from exploiting the prng as they both interact with it.


>Now, you can argue the prng is effectively a random number generator, but that’s more semantics than reality.

That's not "arguing semantics", that's the entire point. It's irrelevant if the randomization is pseudo or not - players cannot deterministically know the result of their actions in all cases. They can only know probabilistically. Whether that source of probabilistic knowledge comes from a roll of a die or particle decay is irrelevant - it is now a random game by definition.


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?


Compared to Warcraft, especially so. But there's also a small random effect in starting location.




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

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

Search: