write a bot!
I’m starting to worry about the lack of new bots on SSCAIT. The old standbys are going strong, with updates and improvements, but there are no newcomers. With nothing added to the pipeline the pressure falls, that’s physics, and eventually it will run dry.
I don’t know the causes, but I know there are two places to look, outside and inside. How much is due to shifts of interest outside in the big world? What’s hot depends on factors like visibility and prestige, and I don’t feel that I can affect it—maybe you can. How much is due to the inside, shifts in perception of the BWAPI community? Do people feel discouraged from joining? It might be due to perceived difficulty in getting started, or perceived newbie-unfriendliness in some form (elitism, rudeness, etc.), or something else. I may be able to make a small difference on that side.
write a bot!
The game of Starcraft Brood War opens a huge range of strategies for players. The hundreds of bots that have been written to play the game are nowhere near exhausting them. In practice, that means that if somebody writes a bot and doesn’t flat out copy a strategy already used, then the bot will play differently than any other bot—it may be good or bad, but it will be fresh. That makes it a contribution to the community, which is why I want to encourage new bots.
Writing a Starcraft bot is sort of like drawing pictures. You have to learn some basic skills first, or your picture won’t be any use. But the most basic skills you need to draw a recognizable picture are not difficult, and it doesn’t take long to learn to draw a simple cartoon. To extend the metaphor, if the cartoon expresses an interesting idea, then it is an interesting cartoon even if the technical drawing skill behind it is not well developed (the secret of Randall Munroe). A Brood War bot that does something different from all others is an interesting bot.
Coding a bot is also like drawing in that you are free to choose your stopping place. You can draw one cartoon that expresses your idea and be done with it (I have literally done that and I think it was worth it), or you can devote your life to improving your skills and try to become Rembrandt. Or anything in between. Marine Hell is an example of a “first cartoon” bot. Its description says This bot was written from scratch in 5 hours following official tutorial. I would like to keep it “as it is” to show how easy can be to write simple bot which is capable of winning. Marine Hell is not a strong contender, but it wins games and it has been playing continuously on SSCAIT since March 2017. At the other end of the spectrum, I’ve been working on my bot Steamhammer since December 2016 and intend to continue for years, and I think that is worth it too; others started earlier and are still going. Do as little or as much as you want.
The AITT tournament series of bots with severely limited code size are another way to see that a bot does not need to be large and complex to be interesting.
If you decide to go ahead and write a bot, your first decision—before you type a line of code—is whether to start from scratch or to fork a starter bot. Both ways are good; both ways can be fairly easy or as hard as you like; both ways can lead to strong bots. Look around and take your choice.
If you are unsure about interesting play strategy, I offer two hints. A large proportion of bots follow one or the other of these broad strategic patterns: 1. Make tech switches. If you make one unit type and press aggressively with it, your opponent is forced to respond. Then you switch to another unit type, one that puts different pressure on the opponent, and you are sure to win some games. It can be a complex calculation (Steamhammer tries to figure out what tech switch will hurt its opponent), or a sequence of tricks (krasi0P goes cannon contain then dark templar then carriers), or it can be as simple as always making this, then at a fixed time making that instead. 2. Defend soundly, build up during the defensive phase, then when you’re big and strong, head out and go break stuff. Bots as varied as SAIDA, Johan Kayser, XIMP by Tomas Vajda, and ZurZurZur follow this pattern.
I don’t have to offer more detail than that. By the time your bot is able to play a complete game, at the latest, you will have your own ideas. I promise.
In the meantime, I am making slow progress myself. I bought new hardware to replace a laptop that’s 10 years old (seriously!), and I have workflows and stuff to migrate, mostly things that have nothing to do with Starcraft.
Comments
Dan on :
Joseph Huang on :
Marian on :
1. BWAPI 5 and integration with StarCraft remastered
- right now more effort is being invested into this and we hopefully can see some fruits soon
2. Seamless setup and running of BWAPI bot for a player to play against it
- it is not easy for a non-techical person to setup a bot; at best it should be a one click installer and one click + select a bot from list like setup is needed
- some people are actually working on this
3. More tutorials for starters
- complete text turtorial with pictures or youtube videos?
- both for from-scratch bots and Steamhammer/UAlberta/... children
- perhaps it makes sense to wait until BWAPI 5?
4. More promotion for the above content
- when we have actually something to present we should do so; I only know of teamliquid.net but there should be also some AI game research dedicated sites that could be targeted
krasi0 on :
So I've been thinking on how to increase the visibility of the BW AI community, too. IMHO, we need at least one of the following:
1) one or more killer bots that can sometimes beat a (semi-)pro player; (my hopes are with SAIDA and CherryPi). A live exhibition showmatch is due.
2) SC:RE BWAPI 5 support
It'll be a long and rough road ahead in order to achieve either of those goals but let's just *keep walking* :)
The AlphaStar showmatch didn't help, either. As a result of it, SC2 AI kinda stole the limelight which is a shame! :(
P.S. Fingers crossed, the BLADDER project will see the light of day and attract some players + viewers, too.
Joseph Huang on :
Sonko on :
BLADDER is just a (terrible) temporary name for the Human vs. Bot ladder I'm working on. It's goal is to have an user-friendly, persistent online way to play vs. bots.
MarcoDBAA on :
I agree with Marians points.
2.
There is (at least when I was chatting there, not possible with current internet connection) no elitism in SSCAIT twitch chat.
However I do think, that they disabled too many weaker bots now. Years ago Lermant/Garmbot had a 50% winrate. Now it is one of the weakest bots there.
I do believe that you need low tier bots, so that new entries won´t be the bottom of the pile (within reason). Sure, the weaker active bots should have an interesting enough playstyle, shouldn´t crash or slow down the game, but bots like Opprimo, Kadek, Shelton... are/were good enough to fit that role.
And what is the problem? You can disable the weaker ones for the yearly tournament, but let them run otherwise. People that watch the twitch channel can vote them out, if they are bored by them.
In conclusion there might be bots in existence, that weren´t uploaded or (later) abandoned, because the author´s bot couldn´t really win enough games at home vs the active bots. Or he might already have been discouraged because of this at an earlier stage of development.
Further if most/all bots, that are as good as his bot, are disabled, he might think, that people would want his bot to be disabled (not uploaded) too. So he might not upload it, and/or even give up prematurely.
3. Personal reasons:
I surely had some interest to create a bot myself, or rather use an existing Java bot to create one, but it just looked hard, and see 1. and 2.
But mainly I still have a pet project active really (click on my name...), and it is doing well (and I still have new ideas for it), and I would have to start from 0 to create a bot, and I am not a great coder (just a hobbyist) anyway...
And lastly, not being able to watch (twitch channel) with my internet connection is also discouraging now.
Well, I might still try to create a bot, most probably using another Java bot as template. But I cannot promise it xD^^
Jay Scott on :
Why disable weak bots? 1. I think the main reason is that stream watchers prefer to see the strong bots play. 2. Having fewer active bots means that updated bots get more games each, on average. 3. Another possible reason is that a bot which loses most games provides little ranking information about the stronger bots. I think that should be a secondary consideration for SSCAIT, outside of the annual tournament. Are there more reasons?
Thought for SSCAIT: Instead of disabling weak bots, give them a lower chance of playing randomly-chosen matches. If the first purpose of the stream is to get people interested and engaged, then it’s reasonable to give fewer games to bots which are poor performing and have not been updated in a long time, but if they’re interesting it’s also reasonable to give them occasional games. And people can vote them in if they like.
MarcoDBAA on :
I really think, that this problem exists. That people are discouraged to upload (or give up, or do not try), when their bot cannot compete vs (most of) the field. You shouldn´t create an "elite" field, if you want new people to throw their hat into the ring. Also, former mid tier bots look worse now. So even if you have a "mid tier" (in a non elite field) bot, you might think, that it is too bad for the competition now.
Your idea is actually interesting.
Higher elo (or no elo yet) = higher chance to play a random match.
Lower elo = lower chance to play a random match.
And vote what you want.
P.S: krasi0 (terran) and CherryPi (especially the newer one, that never played there) not playing SSCAIT anymore is by far the bigger loss (although the authors can of course do what they want), but low tier bots are also needed.
jtolmar on :
The simplest way to do it would be to look at all pairings that haven't been played and schedule one at random. If all have been played (somehow), look at all pairings that have only been played twice, etc. There could be faster ways if you're willing to make assumptions about the matchup table.
Barcode on :
You are making a difference, your blog is a pillar of the bw bot community, for beginners and experts alike.