rh-hideout / pokeemerald-expansion

Feature branche for the pokeemerald decompilation. See the wiki for more info.
349 stars 1.04k forks source link

AI gets easily protect/switch baited #3346

Open DizzyEggg opened 1 year ago

DizzyEggg commented 1 year ago

Description

I knew our AI was easy to exploit, but this is ridiculously bad. AI is too predictable with its move selection when switching is involved. Here's a gif which illustrates the issue perfectly.

Ai protect switch bait

I have some ideas on how to fix it, but I'm open to hear what you guys have in mind. I also plan to have AI tests in the near future, so we would have more control over different AI scenarios, without the need to test everything by hand.

Version

1.5.3 (Default)

Upcoming Version

No response

Discord contact info

No response

AlexOn1ine commented 12 months ago

As far as I know most hacks that have some form of anti abuse AI work with counters (that are increased on switching/no damage taken). Once it reaches a certain number, the player will be punished for it.

DizzyEggg commented 12 months ago

As far as I know most hacks that have some form of anti abuse AI work with counters (that are increased on switching/no damage taken). Once it reaches a certain number, the player will be punished for it.

Yeah, counters are a good idea. There's already a switch-in counter which I added back in(though it's never used at this point) #2230. As for punishing it depends what you mean by it. Ideally I'd want AI to 1) predict this may happen and 2) react appropriately. Maybe something like using a move which hits hard the predicted switch mon. Or AI would themselves switch to a different mon, or use Roar. Obviously, it would need to be random, so the player couldn't predict what AI does.

AlexOn1ine commented 12 months ago

As for punishing it depends what you mean by it.

An example from the CFRU would be that it reads the switch in and changes it's move accordingly. I guess it's similar to what you described but in this case it will always know what mon is switching in. Even if you know it will read the switch, there is not much you can do so besides protect. Protect reduces the switch counter (not sure by how much).

An idea I had is to use a switch counter for every mon on your team. Once a threshold is reached, enemy mon will start using random moves against the mons that reached the threshold (reset once enemt mon dies). Might be overkill though and one counter is enough.

ShadowzLmao2 commented 3 months ago

I think that being able to abuse the AI is key to making good strategies in difficult ROMHacks. An AI like Radical Red where it punishes you after enough switches as Alex mentions is a good idea. One change to RR's AI is that protect turns shouldnt count as turns between switches. Personally, in the scenario above, I would EQ the stunfisk and tbolt the pelipper but after player switches back into stunfisk, i would then make a safe play and pick the move that does the most to stunfisk while hitting pelipper and worse case there is no move that hits both, go for the hard predict into pelipper. It would have to be done in a realistic fashion and not based on % chances to do something otherwise playing a ROMHack would no longer be fun and only luck dependant. if the ai is manipulatable, it makes good videos

AlexOn1ine commented 3 months ago

I think that being able to abuse the AI is key to making good strategies in difficult ROMHacks. An AI like Radical Red where it punishes you after enough switches as Alex mentions is a good idea. One change to RR's AI is that protect turns shouldnt count as turns between switches.

I don't think we should port the CFRU (RR) behavior at all and come up with our own ideas.

hedara90 commented 2 months ago

This might've been fixed, or at least mitigated. The AI no longer gets completely manipulated when switching around. switches

pkmnsnfrn commented 1 month ago

In the recent poll, this specific issued was mentioned twice, once by Pawkkie and once by Awakeon