> My bot has a variety of different strategies that it can execute. The strategy to execute is chosen randomly using weights, and the weights are adjusted based on previous match results. It's pretty simple but I guess it could be called learning.
The top 3 bots are independent entries, and beat the bots using learning algorithms such as UCB1 from research institutions. The author of the bot ranked second does think that other bots that minimized hand-crafted solutions would be more interesting: https://dl.dropboxusercontent.com/u/23817376/Starcraft/AIIDE...
Basically, 4 pool beats all but one of the bots in the game over 50% of the time (often above 80-90%).
Monte Carlo over the StarCraft state-space would be very hard to implement but I don't see any particular reason why it wouldn't work decently well.
You are also wrong about your last statement, the limiting factor for zerg that's you're talking about it APM which is pretty much unlimited for a bot. Injects can be automated without taking any attention from anything else.
Having an interactive REPL seems like it would be helpful for iterating on micro routines (this is what I want to focus on). I see you already have some situational micro examples too.
I feel like a kid again. Can't wait to try this! Now I'm wishing I still had my StarCraft discs with me.
Would be fun to experiment with the data and see if it would be possible to infer game tactics from professional players and "simulate" those against another bot based on the current game state.
There are probably too many variables in Starcraft for this to be practical. With a game like chess there's a fairly obvious set of state variables to keep track of (max of 32 pieces that each have a position in essentially an 8x8 2D array), with Starcraft it's pretty nuts though, each side can have dozens of buildings, dozens of units of ~15 types, each of which has a position on a much larger grid, health, sometimes energy, status effects, etc. Obviously there are RTS games that are more complicated yet, but the jump from a turn-based board game to an RTS is just huge.
That's why it would be interesting to see how much can be inferred from offline learning first.
For example, looking at unit positions over time for the map can be quite rewarding, especially between the different phases of the game (early, mid, late).
StarCraft is a very, very deep game. It seems like it would be very easy to waste time on paths that lead to no real gains. And that rather than using interesting AI techniques, the most important thing might in fact be the StarCraft knowledge of the author. And how good they are at distilling the game down to the parts that is going to yield the biggest returns.
Also, StarCraft has very distinct early, mid, and late stages to the game. Focusing only on the early game, and going with a single strategy eliminates a ton of complexity. If you spend all your time on getting an all-or-nothing rush perfected, you've essentially "skipped" all the sophisticated techniques some of the other authors spent their time creating for the mid and late stages. In fact, it seems like some authors did just this and were quite successful.
But even an all-or-nothing rush has a surprising amount of depth, and perfecting that would be a quite a feat. The biggest thing being micromanagement/unit control and knowing what to target first (this is actually very hard). If you don't perfect that, beating a pro doesn't seem like it would be even remotely possible.
I was a huge StarCraft BW fan, and it's the only game where I got to the point where I could sometimes hold my own against pro players. I'm tempted to try BWAPI. Creating a full bot seems like a huge amount of work that I probably don't have time for, but creating a unit control AI sounds like it would be fun. I remember there used to be micromanagement custom game maps that people used to create (basically a series of situational challenges where you have a bunch of units and you could face other human players 1v1). Doing a competition for that as well would be pretty cool I think.
If you want I can give you my micro bot for that map as a benchmark to compete against.
I see you even hosted a micro tournament recently. I didn't know that was a thing. How did it go? So there's at least some interest for that it seems? If so, I think I'd like to give it a shot too in the future (it'll probably be a while before I can get to this though).
It's relatively easy to program a version of all these basic builds for each race into the AI. It's practically impossible to configure an AI so that it can scout all possible common early builds for 3 different races and respond properly to each one. Even a human has no single build that works against everything, and will go into really really strange improvised responses when they get hit by something unexpected.
As you say "practically impossible to configure an AI so that it can scout all possible common early builds" so an AI is essentially flying blind anyway. Hence no advantage in picking random just more things to worry about.
BWAPI GitHub page [0]
StarCraft Broodwar AI development Wiki[1]
The obligatory IRC channel where we discuss random topics concerning AI development[2]
[0] https://github.com/bwapi/bwapi
That problem is the AI problem these game designers are trying to tackle.
Just seems interesting...
1. Human players use scouts to counter fog of war followed by looking at build patterns to determine likely strategy. Spotting strategy should be easy for pattern matching. They also often micro the scout to (a) disrupt mining or (b) keep it alive for as long as possible. This should be similarly easy.
Note: Units damaged from a prior battle can also be used as scouts and simply not factored into further combat.
2. Simulations should be done using most likely combos of units for each strategy against most likely combos of opponents' units. This should be done for macro and micro. Patterns here will be used in the micro-engine. Bonus against machines: use unlikely combinations that prove effective in simulations.
3. Combat analysis should be a global thing that factors into overall goals. That the human player moved units from one base to another should never surprise an AI. The AI should've shifted some or all defence to that base immediately with use of fast-moving scouts (eg zerglings) to track opponents if they run.
4. Building laying and build order heuristics should be datamined from top players while attached to specific strategies. No one size fits all. Have two for each: one ideal, optimized build order; a heuristic, on-the-fly set if an attack or change throws off the plan.
5. Identify the common strategy changes that happen as a result of what enemy does. Simulate likely situations with units or build orders for those. Identify heuristics for safe transition. Will help for adaptation.
6. Put as many human strategies in there as possible from the A-listers, both specifically and generically.
Those are where I'd start on improving the situation, esp against human players. However, I think an even more interesting line of research is augmenting human players with an AI to efficiently execute their strategy. One that constantly assesses, micro's, follows build orders, etc. Basically never misses a step. More practical for real-world applications.