jncraton / BWMetaAI

A StarCraft Brood War AI designed to follow the modern 1v1 metagame
Other
100 stars 12 forks source link

Protoss AI seems very weak vs. Zerg? #37

Closed riccso closed 1 year ago

riccso commented 1 year ago

Since I'm a total beginner I wanted to practice some ZvP, but it seems that the AI can't really handle even just 6 Lings (simple Overpool timing), never scouts or reacts to Mutas (never builds Corsairs unless it picks the Corsair opening). I even started to suspect that the AI wasn't loading properly so I tried loading it on different versions/different maps (1.16.1 and 1.23.10) but the AI's chat message showed up each time.

Am I expecting too much from the AI, or could something be indeed off?

(ps. I didn't experiment much with the other races)

jncraton commented 1 year ago

Thanks for bringing this up.

There are a number of weaknesses to this AI, perhaps the biggest being that it lacks any concept of proper micro or building placement. This isn't something I can fix without significantly complicating this project and the install process (e.g. using something like BWAPI).

It seems that the AI can't really handle even just 6 Lings (simple Overpool timing)

This AI favors Forge expands. This is only viable when executed correctly including scouting, blocking, timing, and building placement. Early ling timings can likely run by the cannon and/or arrive before the cannons are complete. This is not ideal, but there's not a lot that can be done to fix it.

In the case where Gateway builds are used, the AI will still be vulnerable to lings, as their AI is incredibly poor. Properly managed speedlings are able to kill all probes while keeping Zealots distracted.

never scouts or reacts to Mutas (never builds Corsairs unless it picks the Corsair opening)

The AI scripting provided by the game lacks the ability to scout. However, this script does "cheat" to detect when certain enemy units or structures are present on the map. It should respond to mutas by adding cannons at each base. It should also build Corsairs defensively if it has a Stargate, but it doesn't look like it will add a Stargate early if it detects a Muta build. It favors responding with the tech that it has, such as HTs and Archons.

I'm not saying that is the best response, but that is the current behavior. One weekness of the games AI scripting system is that it can detect the presence of enemy units on the map, but it can't get specific counts for units. This makes it very difficult to respond appropriately, especially vs Zerg where army composition can change very rapidly.

Am I expecting too much from the AI, or could something be indeed off?

The scripting system makes it very difficult to respond well to early rushes, or even midgame harassment. If you want more of a challenge, you could play 2v1. If you aren't aware, you can do this in the game client by starting a multiplayer Top vs Bottom game.

If I have some free time, I will see if it might be appropriate to add a Stargate and Corairs earlier in response to Mutas. I'm not sure that this will ultimately make things much more challenging, as Corsairs are often used extremely poorly by the AI, but it would at least provide a more human-like response.

riccso commented 1 year ago

Thank you for the detailed response! I understand that making an AI is everything but simple and your AI has been a great tool while I was more preoccupied with familiarising myself with the interface and my units. Keep up the good work :)