archive by month
Skip to content

SAIDA’s learning and SAIDA’s weaknesses

SAIDA is holding its position as #1 on SSCAIT, but it is under constant attack from other bots and loses some games. On the one hand, SAIDA has weaknesses against early harassment and timing attacks, especially if the opponent denies scouting. On the other hand, SAIDA appears to have a learning mechanism that recognizes rush timing and figures out a defense. The SAIDA page describes it as “He also catches perfect rush timing by using information he collected.” That’s a vague description, but the behavior does appear to involve learning from experience. MicroDK noted that SAIDA writes data only after it loses; this must be why. For example, BananaBrain tried a dark templar rush and won a series of games, but finally the learning kicked in and SAIDA figured out how to get turrets in time to stop it (SAIDA’s code was not updated). Since then, BananaBrain has mostly lost games, defeating SAIDA only once, in this game where the turret was seconds late.

Other examples include PurpleSpirit winning one game with BBS then being unable to win with it again, and Krasi0 winning with its fast barracks marine cheese with similar results.

In the latest attacks, Locutus won with center gates, making only 2 zealots before switching into dragoons, and Krasi0 added a bunker to its marine cheese to overcome SAIDA’s vulture counter to the marines (SAIDA crashed this game). Will SAIDA learn to defeat these tricks too? I don’t know, let’s find out!

How powerful is this learning mechanism? Surely there must be attacks that it cannot figure out how to forestall—or can’t figure out in reasonable time. If you find 2 winning tricks and switch between them, can it learn to defend against both? If you DT rush once so that it learns to get early turrets, does it get early turrets for the rest of time after you switch back to regular play? The unnecessary turrets give you a small advantage, and at a high level of play, small advantages are big.

Here are some of the weaknesses I see in SAIDA’s play.

  • Poor defense against unscouted early attacks, mitigated by the learning mechanism. SAIDA loses more SCVs than it should.
  • SAIDA recovers poorly from economic setbacks. It does not replenish lost SCVs as well as it should, and stops expanding after a while. If you gain an early lead, you can win by holding on and waiting for SAIDA to mine out.
  • SAIDA is vulnerable to mine drags. It sees no danger in having its spider mines and its forces next to each other. It will even place mines in its mineral line, begging you to blow up its SCVs.
  • SAIDA does not know how to build in safe locations. On some maps, like Moon Glaive, parts of the main base are easily sieged from outside. Krasi0 has won games by blasting down factories that are in range, and SAIDA keeps trying to rebuild in places that are also in range.
  • SAIDA is consistent and predictable. It varies to counter the opponent, but at heart always plays the same strategy and the same tactics. The dropships always fly along the edge.

SAIDA also has great strengths. The greatest may be the big red animated arrow that points out the main attack position. As long as SAIDA has a monopoly on big animated arrows, I think it will remain #1.

Trackbacks

No Trackbacks

Comments

Dan on :

I endorse the big bouncing arrow and encourage more authors to get creative with animating their bots :D we already use bots as a form of personal expression and actually drawing on the screen is a fun way to do so.

Antiga / Iruian on :

As a human playing it its hard to notice the learning as it may take more loses to the same thing than I would be willing to do manually. I really love the work that they have done, but I doubt that one build can ever be flexible enough to close all the holes.. for every one you close you open others. It will need multiple builds at some point to remain on top in my opinion or the other competitors will continue to exploit it heavily.

Jay Scott on :

Agreed. Take advantage of the fog of war!

Jay Scott on :

There is a counterargument, though. Progress is faster if you specialize in one thing and get all the aspects right (the opposite of Steamhammer’s approach).

MarcoDBAA on :

Another problem I have seen is being static with respect to its main army, that will often just hold position somewhere in the middle of the map (vs terran) and does not (or very slowly) react to bots that circle (mostly accidentally) around it.

Many Movements seem to be hardcoded in general (like drops, as you said). Always 2 tanks and 2 goliaths to protect the expansions, and they will never leave them, even if reinforcements are really needed.

Versus P and Z it plays like a better (but completely mech) letabot, but if the first attack fails, it has problems to reorganize the army and its units get picked up.

Jay Scott on :

My impression is that it first calculates where to set up its tank line and then goes there. I think you’re right, it’s not dynamic enough. Sometimes it successfully stakes out space and restricts the opponent’s room for maneuver, and sometimes not so much.

Marian on :

SAIDA is a strong bot with Korean quality flowing all over it.
It will drive the bot developers to new hights but I don't expect it to lose #1 position in the near future.

MarcoDBAA on :

You tried your lurkers/hydras vs him already? Your old version was suffering because of his vulture runbys. Might be a chance now if that weakness is fixed?

Muta stack is doing really well btw in general, they just have to spread out vs Archons, Corsairs and High Templars (or also in general in other situations) Also like that they really search for weaknesses in the defense of the opponent. Looks like a working proof of concept version overall with obvious higher ceiling. Congrats.

Marian on :

Thx.
I was testing some other builds vs SAIDA but the results were not pleasing. Only build I got working was fast speedling rush but this does not work so well if the terran goes more vulture heavy.
What I think might be the best counter is to rush defilers and basically hold enemy timing rush with a 2-3 lurkers + endless swarm.
Any zerg bots that already implemented swarm up to the challenge?

MicrDK on :

Agree with Marian here. 9PoolSpeedlings works 1 or 2 times and then SAIDA makes more vultures.

Dilyan on :

Saida will drop 1st place, even 2nd in next 24h if it does not update.

Jay Scott on :

Sure enough, SAIDA has fallen to #3. It seems unable to cover the holes discovered by Krasi0 and Locutus. I feel that my early impression is justified: Very knowledgeable and capable, but somewhat brittle.

LetaBot on :

Has anybody already tried worker rushing it? Changing your build order doesn't really work in worker rushes, you just have to micro and keep producing worker unit.

Jay Scott on :

Stone has won a couple of games against SAIDA, but it mostly loses. A more aggressive worker rush might work well.

Simon Prins on :

For SC2 AI, they have opponentIDs, so you can do learning against specific opponents. (Though not the opponent name, so you can't hardcode counters to enemies). So far very few bots make use of it. My bot uses it to cycle through its builds to find a good one against the specific opponent.

They are now considering removing the ID again, because they believe it encourages 'large numbers of low effort strategies' that find and abuse holes in the opponents play. I think I am going to show them this blog post to point out what amazing things you can do with it.

Simon Prins on :

I wrote a blog post defending the opponentID for Starcraft 2. I mentioned Steamhammer and SAIDA, linking this post as well. You can read it here: https://tyrai.wordpress.com/2018/11/06/165/

Jay Scott on :

Good arguments. I would add, if you don’t learn about your opponents, what do you learn about? Isn’t the idea to promote AI?

MarcoDBAA on :

It is very strange, that people are against the possibility, that an AI learns from previous encounters with the same opponent. Humans will do this too.

Without memory, you cannot really be considered "intelligent".
A human player would realize very soon, that the opponent just plays the same strategy over and over. And when a human plays an AI player, it would be unfair in principle, when the human can react to what the AI does, but the bot can not.

P.S: But I am also against hardcoding vs specific opponents on the other side.

Jay Scott on :

Perhaps the authors imagine that it is difficult and don’t want to deal with it? If so, the counterargument is, “Look how simple UCB is!” Even simpler ideas are not bad: Stick with this strategy if it won the previous game, otherwise rotate to the next. Then you store one number per opponent, the strategy to play next.

Dan on :

The biggest counterargument has been that it discourages new developers by forcing them to beat multiple strategies from top bots. I think new bots will generally die to top bots regardless.

Jay Scott on :

That is another way of saying it makes the game deeper. Not a convincing objection.

Jay Scott on :

Or maybe they want to follow the Do One Thing Well, and don’t want anybody to rain on their parade.

MarcoDBAA on :

Right, it is not strange, if you consider selfish reasons... :P

Add Comment

E-Mail addresses will not be displayed and will only be used for E-Mail notifications.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

Form options

Submitted comments will be subject to moderation before being displayed.