Main Menu

Glitches

References/Resources

Affiliates

Technical

Search Wiki

Toolbox

Difference between revisions of "Luck manipulation"
 Page | Discussion | View source | History

From Glitch City Laboratories

Jump to: navigation, search
[checked revision][checked revision]
(It says a lot about me that I consider this to be not technical enough...)
(Small things)
Line 6: Line 6:
 
The word "random" is essentially synonymous with "unpredictable". It is believed that [https://en.wikipedia.org/wiki/Hardware_random_number_generator some physical processes] are "truly random", i.e. absolutely unpredictable ahead of time, due to underlying quantum effects. However, specially designed hardware is usually needed to utilize those truly random physical processes. Other "random" processes, like rolling a dice or tossing a coin, have their results almost completely determined by the initial conditions, like the height, velocity, and spinning speed of the throw. However, since it is almost impossible for a normal human to control or otherwise determine those parameters to the precision needed to predict the results, those processes can also be considered random.
 
The word "random" is essentially synonymous with "unpredictable". It is believed that [https://en.wikipedia.org/wiki/Hardware_random_number_generator some physical processes] are "truly random", i.e. absolutely unpredictable ahead of time, due to underlying quantum effects. However, specially designed hardware is usually needed to utilize those truly random physical processes. Other "random" processes, like rolling a dice or tossing a coin, have their results almost completely determined by the initial conditions, like the height, velocity, and spinning speed of the throw. However, since it is almost impossible for a normal human to control or otherwise determine those parameters to the precision needed to predict the results, those processes can also be considered random.
  
The "randomness" in computers and video games is usually of the later kind. In this case, the "initial conditions" mostly come from user inputs, including their precise timings. It is theoretically possible for cycle-level (on the order of 10<sup>-6</sup> second) timings to affect the state of the hardware (possibly in subtle ways, like forcing the V-Blank interrupt to wait for an instruction to complete). Frame-level (~1/60 s) timings tend to affect it in more significant ways, although depending on the specific implementation of the RNG and the game in general, inputs at some frames may not be factored into the RNG.
+
The "randomness" in computers and video games is usually of the latter kind <!-- of which two? -->. In this case, the "initial conditions" mostly come from user inputs, including their precise timings. It is theoretically possible for cycle-level (on the order of 10<sup>-6</sup> second) timings to affect the state of the hardware (possibly in subtle ways, like forcing the V-Blank interrupt to wait for an instruction to complete). Frame-level (~1/60 s) timings tend to affect it in more significant ways, although depending on the specific implementation of the RNG and the game in general, inputs at some frames may not be factored into the RNG.
  
 
The internal state of an RNG is sometimes known as the "seed". Since many random numbers might be needed at a time when there are few or no external inputs, the unpredictability of random numbers depend on the unpredictability of the seed. Even if unpredictable at the beginning, a seed of finite length cannot generate an infinite sequence of truly random numbers, as each random number carries a certain amount of information about the seed, eventually making the seed, and thus further random numbers, predictable. The best RNG designers could do is to make the outputs "pseudorandom", i.e. making it a difficult computational task to predict later outputs from previous ones. However, real world RNGs, especially ones from old console games, are often not very carefully designed, making it feasible to analyze the outputs and retrieve the seed.
 
The internal state of an RNG is sometimes known as the "seed". Since many random numbers might be needed at a time when there are few or no external inputs, the unpredictability of random numbers depend on the unpredictability of the seed. Even if unpredictable at the beginning, a seed of finite length cannot generate an infinite sequence of truly random numbers, as each random number carries a certain amount of information about the seed, eventually making the seed, and thus further random numbers, predictable. The best RNG designers could do is to make the outputs "pseudorandom", i.e. making it a difficult computational task to predict later outputs from previous ones. However, real world RNGs, especially ones from old console games, are often not very carefully designed, making it feasible to analyze the outputs and retrieve the seed.
Line 15: Line 15:
  
 
=== TAS ===
 
=== TAS ===
In tool assisted speedruns (TASes), human precision is not an issue, so the player can get the desired outcomes for all the random events, as long as they are possible at all (although sometimes frames might need to be sacrificed). Therefore from the watcher's perspective, the player would seem to be absurdly lucky. In Pokémon TASes, this might mean getting all the critical hits that would save a turn while the opponent repeatedly misses moves, or walking through caves with no Repels and no encounters, etc.
+
In tool assisted speedruns (TASes), human precision is not an issue, so the player can get the desired outcomes for all the random events, as long as they are possible at all (although sometimes frames might need to be sacrificed). Therefore from the watcher's perspective, the player would seem to be absurdly lucky. In Pokémon TASes, this might mean getting all the critical hits that would save a turn while the opponent repeatedly misses moves, or walking through caves with no Repels and no encounters, etc. <!-- maybe mention button input delay? -->
  
 
The fact that all "randomness" becomes controlled is also why TASes can be encoded as input files ("movie files") instead of videos, and played back on an emulator/console (through the use of a machine). However, as mentioned above, the RNG is affected by some very subtle factors, including hardware timing details. Therefore de-synchronization may occur if the movie file is played on a different emulator/console than the one used to make it, simply because one (or both) of the emulators/consoles didn't mimic the original hardware down to the finest detail.
 
The fact that all "randomness" becomes controlled is also why TASes can be encoded as input files ("movie files") instead of videos, and played back on an emulator/console (through the use of a machine). However, as mentioned above, the RNG is affected by some very subtle factors, including hardware timing details. Therefore de-synchronization may occur if the movie file is played on a different emulator/console than the one used to make it, simply because one (or both) of the emulators/consoles didn't mimic the original hardware down to the finest detail.
Line 30: Line 30:
 
* Not getting unwanted encounters before Repels can be bought.
 
* Not getting unwanted encounters before Repels can be bought.
  
For glitched runs, RNG manipulations are used more intensively. In addition to the above purposes, they are used to manipulate exact byte values that are needed for specific glitches, some not intended to be controllable by the player at all (like the player's Trainer ID and Lucky ID).
+
For glitched runs, RNG manipulations are used more intensively. In addition to the above purposes, they are used to manipulate exact byte values that are needed for specific glitches, some not intended to be controllable by the player at all (like the player's Trainer ID and Lucky ID). <!-- don't glitchless ones have a greater need for them, instead of the other way around? one of the cornerstones in all glitchless RBY and GSC routes is ID manipulation. -->
  
== Out of speedruns ==
+
== Outside of speedruns ==
{{Stub}}
+
 
Luck manipulation techniques can be used to get Shiny Pokémon and Pokémon with perfect IVs.
+
Luck manipulation techniques can be used to get shiny Pokémon and Pokémon with perfect IVs, a necessity for competitive players both in casual Wi-Fi battles and in sanctioned tournaments. The techniques for that will be detailed in the sub-pages.
  
 
==External Links==
 
==External Links==
  
*[http://wiki.pokemonspeedruns.com/index.php/Pok%C3%A9mon_Red/Blue/Yellow_DSum_Manipulation Pokémon Red/Blue/Yellow DSum manipulation].
+
*[http://wiki.pokemonspeedruns.com/index.php/Pok%C3%A9mon_Red/Blue/Yellow_DSum_Manipulation Pokémon Red/Blue/Yellow DSum manipulation], an older generation I technique to manipulate encounter slots based on deducing the RNG state instead of controlling it
 
*[http://www.smogon.com/ingame/rng/emerald_rng_intro Smogon's guide to Pokémon Emerald RNG abuse].
 
*[http://www.smogon.com/ingame/rng/emerald_rng_intro Smogon's guide to Pokémon Emerald RNG abuse].
 
*[http://www.smogon.com/ingame/rng/dpphgss_rng_intro Smogon's guide to Generation IV RNG abuse].
 
*[http://www.smogon.com/ingame/rng/dpphgss_rng_intro Smogon's guide to Generation IV RNG abuse].
Line 52: Line 52:
 
*[[Luck manipulation (Generation VI)]]
 
*[[Luck manipulation (Generation VI)]]
 
*[[Luck manipulation (Generation VII)]]
 
*[[Luck manipulation (Generation VII)]]
 +
*[[Battle Video exploit‎]]
 
*[[Cute Charm exploit]]
 
*[[Cute Charm exploit]]
  
 
[[Category:Non-glitch exploits]]
 
[[Category:Non-glitch exploits]]
 
[[Category:Terminology]]
 
[[Category:Terminology]]

Revision as of 06:12, 1 September 2019

This article is a summary page for different variations of a glitches, etc. when talked about as a whole.
Collective.png
Bulbapedia also has an article about Luck manipulation.

Luck manipulation or RNG abuse (pseudorandom number generator abuse in full), or RNG manipulation refers to making a future event that is supposed to be random predictable, such as whether a wild Pokémon is shiny or has good IVs, whether a thrown ball successfully catches the Pokémon, misses and critical hits in battle, etc. Sometimes a desired "random" outcome could be achieved through trial and error simply by frame-by-frame advance and save states, but advanced manipulation techniques can save time in getting otherwise unlikely outcomes.

Principle

The word "random" is essentially synonymous with "unpredictable". It is believed that some physical processes are "truly random", i.e. absolutely unpredictable ahead of time, due to underlying quantum effects. However, specially designed hardware is usually needed to utilize those truly random physical processes. Other "random" processes, like rolling a dice or tossing a coin, have their results almost completely determined by the initial conditions, like the height, velocity, and spinning speed of the throw. However, since it is almost impossible for a normal human to control or otherwise determine those parameters to the precision needed to predict the results, those processes can also be considered random.

The "randomness" in computers and video games is usually of the latter kind . In this case, the "initial conditions" mostly come from user inputs, including their precise timings. It is theoretically possible for cycle-level (on the order of 10-6 second) timings to affect the state of the hardware (possibly in subtle ways, like forcing the V-Blank interrupt to wait for an instruction to complete). Frame-level (~1/60 s) timings tend to affect it in more significant ways, although depending on the specific implementation of the RNG and the game in general, inputs at some frames may not be factored into the RNG.

The internal state of an RNG is sometimes known as the "seed". Since many random numbers might be needed at a time when there are few or no external inputs, the unpredictability of random numbers depend on the unpredictability of the seed. Even if unpredictable at the beginning, a seed of finite length cannot generate an infinite sequence of truly random numbers, as each random number carries a certain amount of information about the seed, eventually making the seed, and thus further random numbers, predictable. The best RNG designers could do is to make the outputs "pseudorandom", i.e. making it a difficult computational task to predict later outputs from previous ones. However, real world RNGs, especially ones from old console games, are often not very carefully designed, making it feasible to analyze the outputs and retrieve the seed.

By controlling the timings of the input, the player can to some extent control the seed. By observing random outcomes, the player can to some extent deduce the seed. Either or both of those techniques may allow for luck manipulation in video games.

In speedruns

TAS

In tool assisted speedruns (TASes), human precision is not an issue, so the player can get the desired outcomes for all the random events, as long as they are possible at all (although sometimes frames might need to be sacrificed). Therefore from the watcher's perspective, the player would seem to be absurdly lucky. In Pokémon TASes, this might mean getting all the critical hits that would save a turn while the opponent repeatedly misses moves, or walking through caves with no Repels and no encounters, etc.

The fact that all "randomness" becomes controlled is also why TASes can be encoded as input files ("movie files") instead of videos, and played back on an emulator/console (through the use of a machine). However, as mentioned above, the RNG is affected by some very subtle factors, including hardware timing details. Therefore de-synchronization may occur if the movie file is played on a different emulator/console than the one used to make it, simply because one (or both) of the emulators/consoles didn't mimic the original hardware down to the finest detail.

RTA

In contrast to the case for TAS, the main focus of RTA manipulations is human precision. A common technique used in many RTA manipulations is to first save and reset. Since many games do not save any RNG-related information into the save file, after a hard reset, the state of the RNG is fully predictable. This relieves the player of the need to do every RNG-affecting input frame perfectly from the very beginning of the game.

Other techniques help the player reliably do a few frame-perfect inputs after the reset. A common one is "buffering" an input, which means pressing a button before the game is ready to accept it, essentially extending the frame window in which the input can be done. Another is the use of timers which provide audio or video cues, making it easier to hit even single-frame windows. Some manipulations are specifically designed so that multiple adjacent frames give the same desirable outcome. Others let the player look for cues like overworld NPC movements, and then do different manipulations to "recover" from an input that was a little early or a little late.

Since RTA manipulations are both time-consuming (mainly due to the hard reset) and potentially difficult, they are only used for rare random outcomes that can save a lot of time over the course of the run, or that the route is based on in the first place. In glitchless runs, commonly manipulated events include:

  • Getting a main Pokémon with good IVs (might be either the starter or a wild encounter).
  • Encountering the correct species of wild Pokémon (either main or HM users), and catching it with the first ball.
  • Not getting unwanted encounters before Repels can be bought.

For glitched runs, RNG manipulations are used more intensively. In addition to the above purposes, they are used to manipulate exact byte values that are needed for specific glitches, some not intended to be controllable by the player at all (like the player's Trainer ID and Lucky ID).

Outside of speedruns

Luck manipulation techniques can be used to get shiny Pokémon and Pokémon with perfect IVs, a necessity for competitive players both in casual Wi-Fi battles and in sanctioned tournaments. The techniques for that will be detailed in the sub-pages.

External Links

See also