For those who have not watched, this is not "I am a blind and deaf person, here is how I do this" it is "Imagine that we have to construct a program to solve pokemon, accounting for its RNG, where that program gets no feedback".
This is amazing. For those who don’t watch, there are a few tricks to make this work:
1. The start menu doesn’t work in battle. So you can press start, input directions, and then press start again to move the battle menu cursor without moving if you’re not in battle.
2. Because of 1, you never know where the cursor is in the start menu. He has a way of deterministically correcting that.
3. His training strategy relies on fighting trainers multiple times by killing their first Pokémon and then intentionally losing so he can face them again with the XP gained from the first KO.
I’m sure there are many other tricks but I could only watch the first few minutes. Super cool!
Training strategy is sped up by using daycare center later. Fighting trainer multiple times is also how he gets infinite money, since there's a trainer who gives you a golden nugget each time you start facing them, even after you lose to them
Things get tricky in a few battles where he can't one shot every enemy. Importantly, swapping out pokemon gives opponent initiative, compared to having a pokemon faint to swap in the desired one. So his team has an unleveled Abra used to faint swap
Final team is Charzard, Abra, Gyrados, Lapras, Jolteon, Articuno. Rare candy is used to converge xp values & evolve pokemon when convenient. Repel is used to avoid random fights (which then needs some tricks because there's certain situations where repel counter diverges & using repel when at 1 tick doesn't put it back at 100 ticks, but leaves at 1 tick)
This is a masterpiece, and I agree the title doesn't do it justice. He's literally found an almost completely deterministic set of inputs to beat the game. Had no idea you could retry trainers you lost to, or abuse the Nugget battle for unlimited money.
If I remember correctly, it says something about you running back to the closest pokemon center to heal your team. The games show your team getting experience within battles as each member of the opponent's team is defeated (even letting you gain levels and learn/replace moves from those level gains mid-battle, although evolution via leveling up is deferred until after the battle), so I think it's pretty clear about those gains not being reverted if you lose.
I think the main reason that people might not be aware that you can retry things with no penalty (other than losing a small amount of in-game money) is that most of the time people will save right before every trainer battle, and then just restart the game if something major goes wrong. I imagine a decent number of players have never seen what happens when you lose because it's often just as fast or faster to just turn the console off and back on and load the last save rather than go through the in-game sequence.
Between the two of us, at least one is in for a "wow, I really thought the way I played it was how everyone did" moment in that I've never even imagined playing the game by saving before most battles let alone restarting the console if it goes south. That seems more like a speedrunning strategy to me, whereas for most of normal play there tends to be very little actual risk in the battles to worry about.
My first realization (and I am going through Higurashi again) was this can be applied immediately to Higurashi / Umineko and other visual novels that rely on that same puzzle factor -
I didn't realize it before, it was a truly serendipitous realization, perfect game and the most basic steps that can be repeated ad infinitum to establish an always win scenario.
This is so cool - I can't imagine the amount of experimentation and work that went into this project. It's also interesting to ponder the fact that this could have been impossible without some of the various advantages. I love the hacker spirit shown of using every little advantage and trick to make everything work out.
Part 4 of the video is maybe the most interesting, because you really get a look at the planning necessary to make everything shake out identically (or close enough) in a battle.
This makes me think of crash-only programming. If he didn't try to avoid variance and just quit, what are the odds that he could finish the run? Or like, how much does each risk mitigation cost?
If he made it twice as risky, is it twice as fast?
Thank you for sharing, this made my evening. For others that enjoyed this, I also recommend watching this excellent video in the same vein: "SM64 – Watch for Rolling Rocks – 0.5x A Presses": https://www.youtube.com/watch?v=kpk2tdsPh0A
Impressive. And this is what basically happens during tool assisted speedruns, except for here you have to account for randomness between demo runs, if that makes sense. Tons of work and probably a lot of fun if you have automation for repetitive stuff.
I have a feeling that there’s probably a way to resync in every case where do don’t run away but that it balloons the command set by every by a huge amount each time making it computationally unfeasible to complete in real time.