I some games the random number generator is not really random (or pseudorandom), but it actually uses game actions to determine the sequence. Usually from player point of view there is not difference since the gameplays are all different and so the game behave as expected. However, once the how the number are computed is know it is possible to use this fact and make the game behave as you want; often this is called "luck" manipulation. It is has been used in Diablo speed runs or Bubble Bobble plays.
It would so funny if Ikazuchi start behave erratically (like doing insane dancing) to manipulate the RNG :D
I some games the random number generator is not really random (or pseudorandom), but it actually uses game actions to determine the sequence. Usually from player point of view there is not difference since the gameplays are all different and so the game behave as expected. However, once the how the number are computed is know it is possible to use this fact and make the game behave as you want; often this is called "luck" manipulation. It is has been used in Diablo speed runs or Bubble Bobble plays.
It would so funny if Ikazuchi start behave erratically (like doing insane dancing) to manipulate the RNG :D
This is true for older PRNGs. Not so for newer ones, even the simpler ones based on system time (which would require fiddling around with the system clock and microsecond precision, which is like, 5 orders of magnitude greater than frame-perfect precision).
IIRC Diablo I uses the system clock as seed, but not to a great degree of precision (so, stopping the clock at a specific second and starting a level would always generate the exact same level. This is 60 times less demanding than frame-perfect precision).
Most NES/SNES games would initialize the PRNG once based on system time, and then advance the PRNG by one cycle every frame or after every action taken. The latter is why sometimes you'll get the same result no matter how many times you reload the same savestate (assuming an emulator), unless you perform a different series of action (like say, inserting something as inane as opening your inventory, selecting an item, and then cancelling the selection).
Luck manipulation is even less likely to work in a multiplayer game with persistent servers (like Kancolle), as they can get the seed from the server instead. Or no seeds whatsoever, really, they just get the results from the central server.
Luck manipulation is even less likely to work in a multiplayer game with persistent servers (like Kancolle), as they can get the seed from the server instead. Or no seeds whatsoever, really, they just get the results from the central server.
Fire Emblem.
So many hours spent savescumming the levelups. Some of those mages have like 5% chances to get vit or something... T_T
Anyway, their rand function was clearly iterative, so if you saved and attacked, the results would always be the same. You can get different results by performing different actions that advance the random number a specific amount of iterations. This typically means saving at the start of a turn, testing what a leveling character will get, force-reseting, making a single attack with another character (moves 6 numbers) then trying the level-up move again.
Have I ever told you how much I admire your ability to research and gather all these information? I usually learn something new every time I see one of your posts. Because in all seriousness, it is pretty amazing.
So many hours spent savescumming the levelups. Some of those mages have like 5% chances to get vit or something... T_T
Anyway, their rand function was clearly iterative, so if you saved and attacked, the results would always be the same. You can get different results by performing different actions that advance the random number a specific amount of iterations. This typically means saving at the start of a turn, testing what a leveling character will get, force-reseting, making a single attack with another character (moves 6 numbers) then trying the level-up move again.
There was a Fire Emblem game (or maybe a few) where you can force the RNG to cycle by drawing an L-shaped path (or a circular one, for units with high MOV). Generally the game engine would choose the path with the least distance, but in some cases you have two paths with equal distance, in which case it would use the RNG to determine which one to choose. Since you can cancel your move afterwards (assuming you didn't take another action), this lets you cycle the RNG at no cost (except your own time).
Keo said:
Have I ever told you how much I admire your ability to research and gather all these information? I usually learn something new every time I see one of your posts. Because in all seriousness, it is pretty amazing.
Most NES/SNES games would initialize the PRNG once based on system time, and then advance the PRNG by one cycle every frame or after every action taken. The latter is why sometimes you'll get the same result no matter how many times you reload the same savestate (assuming an emulator), unless you perform a different series of action (like say, inserting something as inane as opening your inventory, selecting an item, and then cancelling the selection).
GameBoy games also use that from what I recall, at least some of them. I remember when I played Pokemon Trading Card game as a kid on GB(which was a rather nice game with awesome music even if I wasn't into card games) and when you had to toss a coin, for multiple attacks, status affliction or accuracy ("toss x coins, each tails is a failed attack", "toss a coin, if heads you're poisoned" or "toss a coin, if tails you missed"), you could restart the console, it would always be the same result. Only way to counter it was to delay the tossing, for example, if you know you had a tails for your attack, and that the opponent also have a coin-based attack, you restart, don't attack and give the tails to the opponent. You'll then try to have a heads on the next try.