archive by month
Skip to content

2016 and 2017

Now that the new year—wait wait wait, how did it get to be February already? Well, I’ll go ahead and ignore the mistake in the calendar. No need to file a bug report, I’m sure they’re on it.

2016 brought big progress in BWAPI bots. Killerbot by Marian Devecka finished #1 in SSCAIT 2015 with a 96% win rate in the round robin, seeming nearly unbeatable. But even after late updates, it landed #6 in the SSCAIT 2016 round robin with 85% win rate. The 5 bots that finished above it had all seen updates repeatedly during the year.

Iron brought hyperaggression and amazing micro. Krasi0 fixed crashes and weaknesses and became more aggressive. Sudden sensation Bereaver put together a variety of skills in a balanced package to reach the top ranks. ZerGreenBot showed us the first skilled overlord hunting and the first skilled reaver drops, both of which were then picked up by Bereaver and Tscmoo protoss. Zia gave a taste of zerg variety with opening learning. Even ZZZKBot by Chris Coxe, less heavily updated than the others, proved that it is still possible to beat many opponents with prepared strategies. Overall, the meta shifted somewhat away from rush strategies toward macro play, though rush defenses need to be strengthened further before the shift will be complete.

In 2017 I see progress speeding up further. The community is larger and more active. I see people in the chat talking about their plans for new skills. Openbw is preparing new tools. Bots are playing an ever-wider range of strategies. The level of play is higher, and bot authors are adapting to it in a virtuous cycle of improvement. 2016’s top Krasi0 and Iron are updated, and so is Tyr by Simon Prins. Many of the fresh bots popping up during the post-SSCAIT surge are starting out stronger than new bots did last year (except for Bereaver, of course). I think both AILien and my own Steamhammer are at risk of becoming top bots and having to work to stay there, and the new from-scratch bots like McRave and ZurZurZur are improving rapidly and may catch up.

Even today’s entrant “Newbie Zergrush” is causing trouble for one opponent after another with its simple nonstandard opening of 8 hatch 7 pool (at least against protoss and terran; it played differently in its one game vs zerg so far). That rush gets zerglings over a minute later than 4 pool, but with 2 hatcheries the numbers grow fast and it seems that many bots were caught sleepy-eyed. XIMP did not add cannons or send defenders in time, and Krasi0 was surprised by the timing too. Steamhammer, by the way, knows a similar opening of 9 hatch 9 pool 9 gas, which gets the first lings 2 seconds later (seriously!) and also researches speed and boots up a stronger economy with greater chances to transition later. Steamhammer only plays it versus zerg, though. Now I’m thinking I should have enabled it versus protoss and terran too.

In 2017 I predict multiple bots with new skills of taking island expansions and carrying out doom drops. For Steamhammer I also plan deeper map analysis so it can do things like backdoor attacks when the map allows it. The tactics and strategy in bot play will grow more complex, and everybody will be scrambling to keep up.

Trackbacks

No Trackbacks

Comments

Jay Scott on :

Funny story: I added the 8 hatch 7 pool opening to Steamhammer development version to make sure I measured all the timings consistently. But this version of Steamhammer is not able to play it! It started the hatchery, then suddenly worried “uh oh, I don’t have enough drones to support 2 hatcheries—I must have lost some—better cancel it, it’s an emergency and I need the money back.” It was an off-by-one error in my code. The build creates exactly enough drones to support lings from 2 hatcheries.

toriak on :

Bear in mind u need enough drones to support zerglings + overlords. Amount of overlords depends on number of lings u lose.

Jay Scott on :

It’s a point that ZZZKBot exploits. The 4 pooler by Chris Coxe makes one extra zergling pair when necessary using the extractor trick, taking it up to 10 supply, and attacks so persistently that it doesn’t ever need a second overlord.

AIL on :

"Newbie Zergrush" really encourages me to step up my game!

It is one thing to lose against the huge established Bots with massive effort put into them like it is the case for Leta, Iron or Krasi0.

But losing to a Stock-UAB with a new, gimmicky build, really triggered that: "This cannot be, I must defeat him!"-mentality in me.

And it shows the shortcomings in UAB, when it comes to defending.
I told it to open pool first, I told it to scout early, I told it to put up sunkens, when it sees the lings incoming and I told it to not try and expand under those circumstances.
Now the problem is to get it to not mess up the unit-controls.

Per Default UAB does not know how to regroup when the Squad is assigned to defending. And just changing that does not produce the right results for all scenarios. Whatever I did, there's always something wrong.

And it's not even a single issue, it's a bunch of them combined.

SparCraft gets fed by units near "closestToEnemy" but by default that's "closest to Squadorder.getPosition()", doesn't really work well with defending.

The next question is: What to do when the units have already gathered at the Defense-Location and still think they are gonna lose?
Want to know what happens? Watch the latest Ailien vs. krasi0 game. They just sit there and let themselves be killed by units that outrange them. Would have been a thousand times better to just engage in an probably unfavourable fight in the middle of the map and then rely on faster reproduction-rates. A simple A-Move of the Ultra-Muta-Ling-Comp could have achieved so much more than backing-up till there was no where else to back up to.

So I tried to mess with that and this made the units suicidal against NZR, where staying at the sunken and only attack units that come into it's range would have been the right thing to do.

SparCraft is great when it comes to determining the outcome of small clashes like 4 zealots vs. 12 lings.
But when it comes to bigger decisions, you need more than that. Avoiding a confrontation to do damage elsewhere often is what should have been done instead. Or fighting a slightly lost fight anyways but recover faster.

Macro, Micro, everything in vain, if the decision-making about where to send the units is not on par.

I think I need to conceptualize and realize a completely new approach to handling my units, when I want to compete on level that exceed the UAB-shuffle.

Jay Scott on :

It does, it does. I wrote 3 different openings timed to defeat the 7 pool 12 hatch, and none of them wins 100% despite producing superior force for every fight, because defense is so poor. Fixing it will help hugely, especially in ZvZ and ZvP, but no small tweak will do. It will take serious rethinking. By the way, maybe this will help you think about it: There’s a connection between back-against-the-wall defense and the kind of all-out offense you want after you do a runby or a drop. In both cases, you have no safe retreat and the tradeoff between keeping your units alive and doing damage is different than usual.

AIL on :

I have made some relatively big changes yesterday to how I use drones defensively. Giving them to the Squad-Manager was what caused them to mess up in combination with my code to then send them to the least saturated base.

Now the drone-defense is handled directly by the worker-manager and the drones don't change their state there.

The good thing is, that they are now behaving Stone-prove by doing the following:
Only attack non-moving targets that are within 50 radius and go back to work immediately if target begins to move. Stone likes to micro and try to lure out drones from the defense.
Well, no luck for you Stone!

The other thing I do is to put up a pool asap when any unit is near my base. Including SCVs.

So in my test-games against Stone I lost only 1-2 SCVs before I had Zerglings out, that just mopped up the SCVs.

The not quite fortunate side-effect is that the pool is also put up against anyone else who just happens to scout my base. But on the other hand: If they planned to go macro heavy, they now need to worry about the early lings.

I also found the bug that caused my whole Idea against NZR not to work. I basically just forgot an else, which made code always run, that should only be run, when no enemy was known.

Winrate against it is not at 100% yet because there's some other bugs. One of those involves building-workers being killed after the fix that caused the multitude of same buildings. Also there's a small chance my scouting-worker doesn't see the early lings and then it's also doomed.

Have not been able to really tackle the issue of being outranged when defending near a sunken.

What is kinda interesting is that one of my main-feature of randomized openings is more and more watered down by the reactive play to the different kinds of rushes. So the randomness kinda only applies for as long as neither I nor my opponent have scouted each other.

Oh, and NZR now also has a 1-base-muta-build with 7 or 8 sunkens. I might need to implement Spore-Colony logic in order to deal with that.

Jay Scott on :

I hadn’t thought of the wrinkle of non-moving targets, but except for that it sounds nearly the same as what I have been planning for worker defense. As usual, you are ahead of me. Early pool seems like an overreaction to a scout, though. Maybe only after there is more than 1 enemy worker in your base? Also, Newbie Zergrush’s mass sunken build is the same idea as ZZZKBot’s. Any mass defense build is easy to beat in theory, because you can get ahead in your choice of economy, tech, or both. Don’t let the enemy expand and don’t waste money doing what the defenses counter, and you have an advantage. Of course XIMP showed Steamhammer that practice is not as simple as theory....

krasi0 on :

As evident as it has become that UAB as a whole has a magnitude of critical unfixed issues, I have started to recommend that people base their bots on top of SH v1.0 instead.
A more general approach would be (given that DChurchill hasn't updated UAB since Aug 23, 2016) that you two (AIL and J Scott) should team up, create an UAB fork on Github and clear up all of the remaining issues there, so that newcomers could benefit from your mutual advance and the tons of work done during the last few months. The current statistics are of more than 50% of the bots playing on SSCAIT right now being UAB based bots, so you can imagine what an impact such an endeavour would have.

Jay Scott on :

With people starting to fork from Steamhammer, I am going to put more effort into making sure that it remains as versatile as UAlbertaBot. Right now, not all the build order features work if you pick random, and although playing as any race SHOULD still work, I haven’t TESTED it, so bugs are likely. Version 1.1 is next; maybe for version 1.2 or 1.3 I’ll have it play as random for a while to flush out any issues.

krasi0 on :

Sounds great! Should I point newcomers to the UAB starting video tutorial or are you going to make one targeted at SH in particular?

Jay Scott on :

Point at Dave Churchill’s. It is and probably will remain correct in every important way. I’ll add a note to my release checklist to make sure to document any deviations.

Jay Scott on :

Meanwhile, though the wait is long, Dave Churchill has promised updates to SparCraft and hinted that they come with substantial changes to the rest of the codebase. Of course he’s very busy, and the wait may be longer yet. But when that comes out, I will look closely and up-port anything that looks good for Steamhammer.

AIL on :

Well, I have to admit that the changes I've made for AILien never were with having compatibility to UAB-core-features in mind.

The whole macro-code with all the conditional things tucked into, for example, is fundamentally different from UABs opening-book-approach.

A lot of stuff in other places is intertwined with that.

Of course there's also a lot of parts which could be put back into UAB-base.
Worker-Micro, Overlord-Scouting including Overlord avoidance-micro, Targetting-Priority-Changes, and maybe strategic targetting too.

Then there's a lot of stuff where it's questionable whether changes I made are an improvement or not.

The way I distribute workers to get a more equalized saturation for example, which so horribly failed in one of the games against NZR, constantly sending drones to the besieged expansion.

I also think that catering to potential forks requires a lot more care about the things I try and would slow down my progression tremendously.

Jay seems to be making well-thought out and planned changes keeping the code well-readable and structured. I don't really plan much and even if I do, I let myself sidetrack by other things that suddenly change my priorities.

Most of the time it's like this: I see AILien do something stupid in a game, and I want to fix it immediately. Sometimes it's easy, sometimes it's not and oftentimes my "fixes" produce side-effects, that lead to other problems.
My bigger long-term plans, which are not really well-thought-out in the first place, are being pushed back.

That being said, I surely can send Jay my code-base from time to time to sift through for useful feats but I don't plan to implement my changes in a way to make them a solid and well-structured enough base that would make for a good starting-point to fork from.

krasi0 on :

2016 has indeed been a huge success in BW AI development and 2017 has started in an even more promising way! The whole analysis is quite good, in addition to the one that you have already mentioned, I think there are a few also promising and memorable bot names such as Beebot (needs more work on fixing the perf issues and TvZ and TvP play), Tscmoo (with more interesting experiments), Sungguk Cha and Zia with new and planned updates, etc. etc.

Overall, I'd say that Killerbot by Marian D. has been mostly a disappointment given the former expectations.

Additionally, I anticipate a long and bloody battle for dominance throughout the year between Igor's Iron and my bot while having to deflect the brutal pounces by the hordes of other mid and high tier bots. Not to forget the nasty surprises by the likes of Newbie Rush X who aim for a bite of flesh, too.

GG! GL & HF! :)

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.