Should I use reinforcement learning to automate the throw of a ball in a Pokemon game?

I am trying to automate the throw of a ball in a game in order to get "Excellent Throw".

To achieve an "Excellent" throw, you need to hit the center of the shrinking target circle when it's at its smallest size. The mechanics involve:

Target Circle: When you encounter a Pokémon, a target circle appears around it, which shrinks and expands. The size of this circle determines the throw bonus:

Large Circle: "Nice" throw

Medium Circle: "Great" throw

Small Circle: "Excellent" throw

Timing: The key to getting an "Excellent" throw is to release the Poké Ball when the target circle is at its smallest.

Accuracy: You need to aim for the center of the target circle to hit the Pokémon accurately.

Examples:

What I would normally do is:

1. Initialize game screen capture.
2. Detect and track the target circle's size.
3. Calculate the optimal release time when the circle is at its smallest.
4. Aim for the center of the circle.
5. Simulate the throw with appropriate speed and trajectory.


The thing is I would need to adjust these for each pokemon, since each one has a different circle. So I was wondering if ML would be preferable in this case scenario and more specifically if RL would be the more preferable choice.

The reward would be of course reading from the screen capture "Excellent!" after the throw.

• Why are you worried about need to adjust your algo for each pokemon? The same algo should apply to each appeared pokemon universally once it detects its appearance on the screen. Also note your reward is sparse and binary at the very end of throw assuming the algo only has one chance to throw for each pokemon. Commented Aug 2 at 23:47
• @cinch Because different pokemon have different circles size and distance. The problem is not so much with the circle size but with the distance of the pokemon, so I would need to adjust the velocity of the swipe. Not necessarily binary the reward since I could also provide also rewards with lesser values. Miss: -1 Normal throw: 0 Nice throw: 1 Great throw: 2 Excellent throw: 3 Commented Aug 18 at 9:39