RNG Manipulation on Pokemon Showdown

  Рет қаралды 2,145

Myren Eario

Myren Eario

Күн бұрын

Пікірлер: 24
@disasterarea9341
@disasterarea9341 Күн бұрын
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
@luiscanterohernandez6668 Күн бұрын
We shall be careful, this man will crack quantum rng
@MrCheeze
@MrCheeze 15 сағат бұрын
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?
@MrCheeze
@MrCheeze 15 сағат бұрын
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.
@myreneario7216
@myreneario7216 14 сағат бұрын
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.
@subscribetopizzatheonlyrea7322
@subscribetopizzatheonlyrea7322 9 сағат бұрын
@@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
@pc31754 Күн бұрын
this is so cool, pleasant surprise to see you now breaking showdown
@gigalh128
@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
@gigalh128 Күн бұрын
Also for gen 5 you could probably get some value out of prankster copycat with roar
@myreneario7216
@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
@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
@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
@itztaytay2
@itztaytay2 5 сағат бұрын
​@@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
@urboixander1826 Күн бұрын
How many turns of normal gameplay without using metronome would it theoretically take to find the RNG seed?
@myreneario7216
@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
@matthewbolan8154 Күн бұрын
Ah, neat application
@paolozarcone719
@paolozarcone719 21 сағат бұрын
Pandora's box is now open.
@catgameplayer
@catgameplayer Күн бұрын
Nice, I finally have an excuse to run metronome
@krehera
@krehera 5 сағат бұрын
fascinating!
@Nooticus
@Nooticus Күн бұрын
wow!!! youre back but in a new form
@Mg07a
@Mg07a Күн бұрын
I have no idea what is going on but this makes my brain feel funny so good video
@itztaytay2
@itztaytay2 10 сағат бұрын
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
@qsns_
@qsns_ Күн бұрын
very cool stuff!!!
@Vildy
@Vildy Күн бұрын
Lol
Why MissingNo Multiplies Items!
21:36
LiveOverflow
Рет қаралды 179 М.
Леон киллер и Оля Полякова 😹
00:42
Канал Смеха
Рет қаралды 4,7 МЛН
Try this prank with your friends 😂 @karina-kola
00:18
Andrey Grechka
Рет қаралды 9 МЛН
Tuna 🍣 ​⁠@patrickzeinali ​⁠@ChefRush
00:48
albert_cancook
Рет қаралды 148 МЛН
My scorpion was taken away from me 😢
00:55
TyphoonFast 5
Рет қаралды 2,7 МЛН
olcPixelGameEngine
20:17
javidx9
Рет қаралды 164 М.
I Redesigned the ENTIRE YouTube UI from Scratch
19:10
Juxtopposed
Рет қаралды 813 М.
Helicarrier as a Redstone Machine
4:01
MythicalPingu
Рет қаралды 9 М.
Minecraft Without Jumping, but Auto-Jump is on…
15:08
GuyBordo
Рет қаралды 973 М.
Looking at the Code that Made Pokémon Red
14:58
Shane Lee
Рет қаралды 31 М.
Reverse Engineering Age Of Empires
12:32
Nathan Baggs
Рет қаралды 233 М.
Catching up with async Rust
17:55
fasterthanlime
Рет қаралды 20 М.
Should the better player ALWAYS win?
29:09
Eddventure
Рет қаралды 272 М.
Dissecting Pokemon Red Savegame
12:56
LiveOverflow
Рет қаралды 237 М.
Леон киллер и Оля Полякова 😹
00:42
Канал Смеха
Рет қаралды 4,7 МЛН