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.
@luiscanterohernandez6668Күн бұрын
We shall be careful, this man will crack quantum rng
@MrCheeze15 сағат бұрын
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?
@MrCheeze15 сағат бұрын
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.
@myreneario721614 сағат бұрын
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.
@subscribetopizzatheonlyrea73229 сағат бұрын
@@myreneario7216 you cannot really differentiate all random rolls as most are the same percent rounded, however with recoil you actually can, stalling in gsc ou with lax double edge should work well.
@pc31754Күн бұрын
this is so cool, pleasant surprise to see you now breaking showdown
@gigalh128Күн бұрын
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.
@gigalh128Күн бұрын
Also for gen 5 you could probably get some value out of prankster copycat with roar
@myreneario7216Күн бұрын
"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.
@gigalh128Күн бұрын
@@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.
@karatejoshbКүн бұрын
@@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
@itztaytay25 сағат бұрын
@@myreneario7216For gen 3 specifically Beat Up might be interesting to look into, it's guaranteed a # of hits = to healthy members on your team and notably ignores the opponent's defense IVs, EVs, and potential Nature. HP EVs might still be an issue and seeing the exact amount of damage also maybe but if it works out well can get quite a bit of info in a single turn from like lead Sneasel
@urboixander1826Күн бұрын
How many turns of normal gameplay without using metronome would it theoretically take to find the RNG seed?
@myreneario7216Күн бұрын
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.
@matthewbolan8154Күн бұрын
Ah, neat application
@paolozarcone71921 сағат бұрын
Pandora's box is now open.
@catgameplayerКүн бұрын
Nice, I finally have an excuse to run metronome
@krehera5 сағат бұрын
fascinating!
@NooticusКүн бұрын
wow!!! youre back but in a new form
@Mg07aКүн бұрын
I have no idea what is going on but this makes my brain feel funny so good video
@itztaytay210 сағат бұрын
I can try to explain it more simply, there's basically 2 parts to the manipulation: Finding the Seed and then exploiting it. Getting the seed: Showdown uses a 64 bit RNG system which is fairly typical of games and thus has 2^64 (or ~18 quintillion) different potential seeds which is why Metronome is nice as it can call a lot of different moves. Basically what the program is doing is looking at all those potential seeds and then asking it "Where is it possible that metronome called Headbutt and then 3 calls later Thunder, then 4 calls later [next move you got]..." and so on. Each new move drastically reduces the number of potential seeds you're working with to narrow it down faster. For clarity a "Call" is made everytime the game needs to check something that has a % chance of happening and needs to be tracked, so Thunder for instance has an accuracy check (70% to land normally), a damage roll check, and a secondary effect check (30% chance to paralyze) and all of those can potentially give you more info if this is refined but have some hurdles. This part of the process is what is currently not very feasible in most competitive games as reducing that massive original # to 1 takes a lot of checked calls and it's hard to simply gather that data during a single match, but that's also where all the future improvements will be. Then you have part 2: Exploiting it. Once you have the seed then as long as you're accurately keeping track of what call you're on when then you will always know every outcome of every potential event. That's what's happening around 5:57, because the middle number shown is higher than Confuse Ray's accuracy value on the current call you know it will always hit, if it showed a number like 0.2 then only moves with 80%+ acc would hit and you could adapt accordingly by either trying to force another call (like clicking metronome in this case) or using a more accurate move. Then since he did choose to use Confuse Ray he can see that the call for when the game decides if the opponent will hit themselves or not will force them hit themselves so he can stay in with his Gengar and keep doing stuff as it is 100% safe. The opponent can potentially mess you up such as moving first in the turn with a priority move if you were expecting yourself to be first, moving the rng 3 calls along, but in general this will make you at least aware of what will be happening and opens up taking advantage of it