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?
Comments
PurpleWaveJadien on :
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 :
krasi0 on :
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 :
krasi0 on :
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 :
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 :
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 :
Jay Scott on :
krasi0 on :
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 :
krasi0 on :
krasi0 on :
Jay Scott on :
Joseph Huang on :