my understanding is that, as a matter of policy, pokemon showdown does not attempt to implement the RNG as it exists in the games If this exploit reaches a point where it is usable in battle, then there are a couple of options: 1 - "patch" it by implementing a new/more complex RNG system. not sure the feasibility of this 2 - implement the game's RNG faithfully where possible. this is probably more effort, and wont be feasible in newer generations. so i think this option is less likely.
Oh, I love this. Looks like right now it doesn't have any serious competitive impact, because you need to gather waaaay too much information before you can get any practical use from it. However, I think things would be very different if you also gathered information from damage rolls. Gen 1 would be perfect for this, since natures and the EV limit don't exist - the only reason for someone NOT to run perfect DVs and Stat Exp is to fool your program. So in normal circumstances we know every Pokemon's exact stats. (Alternatively, later gens would _sometimes_ work too, if you make the simplifying assumption that every stat is 0 EV, 252 EV, 252 EV + positive nature, or negative nature.) Have you taken a look at how many turns it takes to crack the RNG seed from damage rolls when the stats are perfectly known?
Also, separate thought - Showdown could definitely make this impossible if they wanted to. One of the many ways to do it would be to have both users send a random number whenever they click a move, and reseed the RNG with both.
Reading off RNG info from damage rolls is definitely something I should look into, and it seems to be easiest in Gen1, where the damage roll works by randomly choosing a number between 217 and 255 and then dividing by 255. If we have 12-13 attacks where we can exactly figure out the random damage roll number between 217-255, then we can use this to reverse the RNG. Right now I don't know whether we can always figure out the damage roll number exactly. But I will start looking into this right now.
Any thoughts on multi-hit moves? Haven't done much research on it, but I'd think you could use the damage rolls to extract information more quickly -- namely if there's at least 4 different percentages, the damage rolls alone would provide 4^5 bits of information if all 5 hits happen, and then you could combine this with a scope lens to make better use of crits for information. Of course, the caveat here is that you don't know the opponents stats, so the ranges you would have to guess through might end up making multi-hit moves less useful. Obviously skill link doesn't exist in gen 3, so it wouldn't work there, but it seems like it could net more information.
"the caveat here is that you don't know the opponents stats" Yes, exactly. I think moves with recoil damage could be useful, because you know your own health EVs. For moves with recoil damage you might be able to find out how high the damage roll actually was, and use that to crack the RNG. But for normal moves you can only do this if you know the enemies health and defense EVs which you usually don't. But finding other ways to collect info about the RNG is definitely something to look into, because using 9 metronomes is not competitively viable. And damage rolls are one of the most promising things to look into.
@@myreneario7216 Oooh recoil moves would be quite good in combination with multi-hit moves. Or something like seismic toss/leech seed just to gauge the opponents HP because one could probably narrow down their defense stat afterwards.
@@myreneario7216 given that the sets of all pokemon in random battles are known (evs, moves, items, etc), this might be a good sandbox to look into for using damage rolls as a way to find seeds. ive been told that the random team generation seed is specific to each user, so you cannot reverse engineer your opponents team, but it may be interesting to see if one can easily access the battle seed using damage rolls for rng manipulation
Not sure. Depends on how closely you analyze the game. You need to collect 64 bits of informations. Every metronome gives you 7-10 bits of info, depending on the generation. Every critical hit gives you roughly 4 bits of info. Every full paralysis gives you 2 bits of info. It might be possible to get a lot of information from damage rolls, but that usually requires you to know the health and defense EVs of your opponent. Edit: Reversing the RNG from 32 full paras seems to be computationally infeasible, and takes over an hour on my computer. Reversing the RNG from 16 crits only takes a few seconds, so that works. So if you want the LattiCG algorithm to finish in less than a minute you should better give it a few pieces of high value information instead of a lot of low value information.
my understanding is that, as a matter of policy, pokemon showdown does not attempt to implement the RNG as it exists in the games
If this exploit reaches a point where it is usable in battle, then there are a couple of options:
1 - "patch" it by implementing a new/more complex RNG system. not sure the feasibility of this
2 - implement the game's RNG faithfully where possible. this is probably more effort, and wont be feasible in newer generations. so i think this option is less likely.
We shall be careful, this man will crack quantum rng
Oh, I love this.
Looks like right now it doesn't have any serious competitive impact, because you need to gather waaaay too much information before you can get any practical use from it.
However, I think things would be very different if you also gathered information from damage rolls. Gen 1 would be perfect for this, since natures and the EV limit don't exist - the only reason for someone NOT to run perfect DVs and Stat Exp is to fool your program. So in normal circumstances we know every Pokemon's exact stats. (Alternatively, later gens would _sometimes_ work too, if you make the simplifying assumption that every stat is 0 EV, 252 EV, 252 EV + positive nature, or negative nature.)
Have you taken a look at how many turns it takes to crack the RNG seed from damage rolls when the stats are perfectly known?
Also, separate thought - Showdown could definitely make this impossible if they wanted to. One of the many ways to do it would be to have both users send a random number whenever they click a move, and reseed the RNG with both.
Reading off RNG info from damage rolls is definitely something I should look into,
and it seems to be easiest in Gen1,
where the damage roll works by randomly choosing a number between 217 and 255 and then dividing by 255.
If we have 12-13 attacks where we can exactly figure out the random damage roll number between 217-255, then we can use this to reverse the RNG.
Right now I don't know whether we can always figure out the damage roll number exactly. But I will start looking into this right now.
this is so cool, pleasant surprise to see you now breaking showdown
Ah, neat application
Any thoughts on multi-hit moves? Haven't done much research on it, but I'd think you could use the damage rolls to extract information more quickly -- namely if there's at least 4 different percentages, the damage rolls alone would provide 4^5 bits of information if all 5 hits happen, and then you could combine this with a scope lens to make better use of crits for information.
Of course, the caveat here is that you don't know the opponents stats, so the ranges you would have to guess through might end up making multi-hit moves less useful.
Obviously skill link doesn't exist in gen 3, so it wouldn't work there, but it seems like it could net more information.
Also for gen 5 you could probably get some value out of prankster copycat with roar
"the caveat here is that you don't know the opponents stats"
Yes, exactly.
I think moves with recoil damage could be useful, because you know your own health EVs.
For moves with recoil damage you might be able to find out how high the damage roll actually was, and use that to crack the RNG.
But for normal moves you can only do this if you know the enemies health and defense EVs which you usually don't.
But finding other ways to collect info about the RNG is definitely something to look into, because using 9 metronomes is not competitively viable. And damage rolls are one of the most promising things to look into.
@@myreneario7216 Oooh recoil moves would be quite good in combination with multi-hit moves. Or something like seismic toss/leech seed just to gauge the opponents HP because one could probably narrow down their defense stat afterwards.
@@myreneario7216 given that the sets of all pokemon in random battles are known (evs, moves, items, etc), this might be a good sandbox to look into for using damage rolls as a way to find seeds.
ive been told that the random team generation seed is specific to each user, so you cannot reverse engineer your opponents team, but it may be interesting to see if one can easily access the battle seed using damage rolls for rng manipulation
I have no idea what is going on but this makes my brain feel funny so good video
Pandora's box is now open.
wow!!! youre back but in a new form
How many turns of normal gameplay without using metronome would it theoretically take to find the RNG seed?
Not sure. Depends on how closely you analyze the game.
You need to collect 64 bits of informations.
Every metronome gives you 7-10 bits of info, depending on the generation.
Every critical hit gives you roughly 4 bits of info.
Every full paralysis gives you 2 bits of info.
It might be possible to get a lot of information from damage rolls,
but that usually requires you to know the health and defense EVs of your opponent.
Edit: Reversing the RNG from 32 full paras seems to be computationally infeasible, and takes over an hour on my computer.
Reversing the RNG from 16 crits only takes a few seconds, so that works.
So if you want the LattiCG algorithm to finish in less than a minute you should better give it a few pieces of high value information instead of a lot of low value information.
Nice, I finally have an excuse to run metronome
very cool stuff!!!
Lol