archive by month
Skip to content

attack of the clone bots

Krasi0 wonders what should be done about the flood of related zerg bots. As Californians know, it may relieve the drought, but it is still a flood. Some bots play very similarly and could be boring to watch. Anyway, the ideal SSCAIT should have a good balance of races and play styles and not grow too lopsided, at least not for long.

It’s the kind of decision that should be made pluralistically. Stream watchers have a legitimate interest in seeing a variety of styles of play. It’s more fun. Bot developers have a legitimate interest in trying out adjustments to other bots: I think this change is a good idea, am I right? That’s fun too. But the interests can come into conflict, especially with a new bot like Steamhammer: It is accessible, it is successful, it is easy and fun to modify, and it has obvious flaws in its play that call out for correction. We might get too many near-identical Steamhammer clones.

Doing nothing for now is a choice. There is no serious problem yet (if you ask me), only a threat of one. When you first get into bot development, it’s natural to start with small tweaks to a starter bot; I did it too. Historically, most bots are developed for a while and then left to age and slowly turn into vinegar. Nobody will object if a near-clone bot is turned off after its active development ends. Some bots get ongoing development, and those won’t be clones for long. They will diverge. If that’s how things go, then we don’t need a new policy, we only need to continue the current policy of disabling bots which are boring and not under active development.

Here are some ideas if we want to make a change. They are not mutually exclusive; we could do all of them.

1. Make rules. Admins could decree that clone-like bots will be summarily disabled unless and until they do something interesting. It might be a good idea if stream viewers get tired.

2. Implement a server-side incentive for more varied behavior. For example, let people vote bots up and/or down, maybe with a long-term effect on how many games to bot gets to play. Or maybe adjusting a public “interestingness” ranking value that bot authors may be happy or unhappy with. (I would like to have that measure, if somebody can think of a good way to implement it distinctly from a measure of strength: Roman Danielis is interesting but not strong; Marian Devecka is strong but has predictable play). Or have admins flag near-clone bots in their opinion, which (say) counts for -1 vote for that bot in the existing match voting system. Many designs are possible. The goal would be that boring bots are allowed, but get less stream time or are otherwise discouraged. A related idea is to somehow mark bots for similarity, so that when one bot plays, others that are similar to it get less time depending on how similar they are seen as being.

3. Promote bots other than Steamhammer on the SSCAIT site. I think Skynet by Andrew Smith would be a good protoss starter bot. It is Gnu licensed. It is old code and still on BWAPI 3.7.4, which may be a drawback, but it comes with a cool strategy programming system that lets you specify behavior at a high level. It should be relatively easy to give it fun new behaviors, plus it already has a large number of skills that could be improved one by one. I’m not sure what a good terran starter would be.

4. Make Steamhammer better at terran and protoss. Not me; I’m itching to get back to zerg after the upcoming batch of terran and protoss features. Once my collaboration site is set up (hopefully by early May), it will be easier to propose improvements to Steamhammer. I’ll incorporate any that make sense to me, even if race-specific. In general, the different strains will more easily cross-fertilize. Alternately, maybe some developer is interested in starting a terran or protoss fork that will get ongoing development.

5. Supporting more units and skills will also help Steamhammer forks be more diverse. Does anyone want to implement spider mine placement, or psionic storm, or arbiter recall? If you do a good job, I’ll be glad to put it into Steamhammer with credit. I will eventually get to these skills myself, but it is not a priority so it will be a long wait.

6. UAlbertaBot and Steamhammer carry out simpleminded tactics that obstruct alternate styles of play, as PurpleWaveJadien pointed out in comments to the previous post. So one mitigation is to put a smarter tactical boss into Steamhammer, one that supports more varied tactics. It’s not a matter of using SparCraft or not, it’s the tactical framework. “Main force here, sandwiching force there, go!” A new tactics boss is a priority for me, and I’ll be working on it over the year. I may start with mutalisk tactics only, but in the end I want an easy-to-adjust framework that represents its goals explicitly, works for all races, works with all kinds of unit mixes, carries out a wide variety of tactical plans, and has hooks to apply machine learning. I expect it will come piece by piece over months, so no quick fix.

7. Keep Steamhammer temporarily closed-source after a new feature release. Publish the source only after some suitable period, or when the following feature release is ready. Maybe it would help? I’m not sure. At least Steamhammer itself would be more distinct from its recent clones.

8. Seek a super-configurable starter bot whose behavior can be radically changed by changing data files, or which provides a Starcraft-specific higher-level language that makes it easier to code strategies and tactics. If we had that, clones might diverge more rapidly. Well, it’s a long-term aspiration more than a plan. Somebody would have to be convinced to do it, and then figure out how.

The world is full of more ideas than one person can think of. What do you think?

Trackbacks

No Trackbacks

Comments

PurpleWaveJadien on :

AIIDE and CIG rules require submissions to be GPL compatible, so the majority of bots on the ladder are fair game for extension.

I've read the source of (almost) every bot with available source. In addition to Skynet, some other well-architected bots that lend themselves to adaptation include GarmBot, OpprimoBot, AIUR/Icelab, and (in my entirely unbiased opinion, of course) PurpleWave.

Part of the challenge is that authors will tend to act in their own interest. When they see Steamhammer at the top of the rankings, and hear that it can play all races, that's where they'll want to start.

Jay Scott on :

My opinion may not be as unbiased as yours :-) but I agree, PurpleWave looks well-organized and well-written.

krasi0 on :

It's a tough "problem" to solve surely and one that we should all be happy to have at the same time - that means more new entries to SSCAIT after all :)
I guess the final solution will be a mix of 1), 2) 3) + some others, where "doing nothing for now" seems to be the only feasible option ATM :)
There is one more suggestion, I can come up with:
9) flag some bots as team / community developed, e.g. SH, Opprimo, PW, UAB, etc. And let the main developer / original author pick *maximum two* entries per race that will represent that bot / framework.

E.g. in the case of SH, Jay would be the one who could say: I pick SH vanilla + 5 pool to represent my bot / framework on the server. What this means is that any other SH based entry will be given some time (say 2 weeks) to show off play on the server and that entry will be disabled once the trial period is over and Jay hasn't picked it as one deserving to represent SH for that particular race. At this exact time, this would still leave 4 more slots (2 for Protoss and Terran each) to fill in.

At the same time, individual author bots would still obey the current rules, i.e. a single entry per bot.

Of course, some exceptions could always be made during *non-competition* time for entries with some unique and interesting play that viewers enjoy watching.
Just my two cents

MicroDK on :

Thats the silliest suggestion I have read... Sine I have a day time job I only spend spare time on my bot. That means that it will take more than two weeks to add features that make it play much differently from SH. At the moment the difference is in the details using short openings and let the bot freestyle, changed target prioritizing and changes to pick which unit to make. A lot work has been put in to fix bugs and other quirks since it is based on SH 1.0 and its not at all at par with the current SH. It looks like you only want entertainment. However I have new features on my todo list that eventually will be implemented when serious bugs are gone.

krasi0 on :

Sorry, my suggestion certainly was NOT a personal attack against you or your bot. You know that I respect your hard work, especially now that you have won a Bo5 match against Iron! ;)
One thing is for sure - for now, we are NOT disabling any bots based on their heritage! As I said in another comment, the current "problem" is a good one to have and the more bots - the merrier! :)

I was more concerned about the end year competition where a huge cluster of very-close clones (say many submissions based on the same SH version) would probably start moving together up the ranking following each SH update. That would push other bots with more diverse styles (like Bereaver, Vajda, etc) down into oblivion since SH is already a confirmed top bot and (due to the way software development and copying a piece of software works) all of its clones automatically end up being top bots, too. Which is cool, BUT you could only have a *handful* of top bots (otherwise they won't be called "top" anymore, but average ;) )
We need a solution and from what I've read so far, we do NOT have a good one yet, so I was just spit-balling in my previous comment :)

MicroDK on :

I was a bit unsure if you meant your end year competition only or the regular all-year competition. I agree that we cant have 10 clones of the same succesful bot in the end-year competition and letting the framework owners pick which bots should represent could be the way to go. Well for now if I choose to use Steamhmmer for a protoss or terran bot it will have the same strengths and weaknesses as UAB, so for now it is only the zerg version of Steamhammer that we have this "problem" with.
And as you said, more interesting play-styles might get pushed down. However, when you fork a bot it will be similar to the original one for a while but will eventually diverge since we dont have the same ideas or goals for the bots.

Sq on :

Maybe “interestingness” could be average number of stream viewers when the bot plays. Assuming that actually deviates and isn't just a steady pool of lurkers. It might not even need a concrete benefit to encourage people to be interesting; people like seeing their scores go up.

I think the traditional approach works fine in most circumstances. A steady stream of clones that diverge or get pruned is healthy enough. The only problem is the current ecosystem, where there's one obvious bot to clone, which prefers a specific race, is based on the previous obvious-to-clone bot, and has a very specific distinctive style. If there were, say, two easily configurable tri-race bots (one UAB style giant unit ball and one Iron style fuzzy independent swarm?) we'd still be drowning in clones, but they'd have enough different lineages that it wouldn't be much of a problem. So I think your options 4+5, and hope someone else makes the same happen for some other bot as a base.

Also, I expect OpenBW's AI IDE to make a big difference in how the clone wars play out. We could be drowning in even more clones, or suddenly have a big enough community to support multiple clone bases. It's hard to predict.

Jay Scott on :

Oh, good idea about interest, but I would like to make it harder to implement. Strong bots are interesting in themselves, and I would prefer the interest score to be independent of strength so it depends only on the play style. The idea is to use viewer counts or vote counts over time (or whatever) as a raw interest measure, and fit some simple curve to the (rank, raw interest) values. Subtract out the curve, and the residual is the interest in that bot independent of its strength. It would probably take rather a lot of data to get stable numbers.

Jay Scott on :

My hope is that the “interest” or “fun” score would encourage some authors to work on unique and varied skills or styles of play (as Tscmoo does) and not only on playing strength. I expect that Bereaver would score high, because it uses a wide range of high-tech units in varied ways, and Steamhammer would score lower, because it uses a smaller range of units as a bulk army in rote ways. Never mind that Steamhammer wins when they face off.

krasi0 on :

Yet another silly idea :)
10) A clone gets to stay if it can consistently beat its parent (say in a Bo5/7) and is rated at least X (say 100) ELO points higher than the parent?

MicroDK on :

What about beating an top opponent that the parrent cant beat? :D

krasi0 on :

Well, Steamhammer for example is already capable of beating top bots consistently, so that wouldn't prove much. The idea is to demonstrate divergence from the part (SH) in this case, so a head to head Bo7 should be able to prove that

krasi0 on :

Continuing with 10) That should encourage divergence as clones would probably like to keep an edge over the competition (their parent in this particular case). Also every author MUST disclose *any* lineage relations, i.e. what code bases they have based their work on. If they do not do so and some plagiarism gets eventually detected - a forfeit. Such disclosure would give credit where credit is due to the original author(s)

Jay Scott on :

Or does it promote convergence when a weakness is found in the parent? Tscmoo protoss figured out by automatic learning, and 5 Pool figured out by manual trial and error, that Steamhammer does not adapt to mass static defense. Now bftjoe has beaten Steamhammer similarly: http://www.openbw.com/replay-viewer/?rep=http%3A%2F%2Fsscaitournament.com%2FReplays%2FBFTJOE%2F193930-bftj_Stea-ZvZ.rep It encourages me to improve, but I don’t see how it encourages diversity.

Joseph Huang on :

I have sunken placement code which averages the hatchery location and the closest choke point. Otherwise the sunken would be in some bad location near the hatchery.

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.