AIIDE StarCraft AI Competition - Survey *Feel free to answer as many questions as you like, but it would be great if everyone answered everything!* *Many people are interested in learning as much as possible about the bots that competed!* *Please feel free to provide external references/links as necessary* *Bot Name:* CherryPi *Bot Race:* Zerg *Author Name(s):* Jonas Gehring, Vegard Mella, Daniel Gant, Zeming Lin, Da Ju, Danielle Rothermel, Nicolas Carion, Nicolas Usunier, Gabriel Synnaeve *Affiliation(s):* Facebook AI Research *Nationality(s):* Citizens of the World *Occupation(s):* Facebook AI Research engineers and researchers. *(These will be listed on the competition website)* *Bot URL:* https://github.com/TorchCraft/ (https://github.com/TorchCraft/TorchCraft) *Personal URL:* *Affiliation URL:* https://research.fb.com/category/facebook-ai-research/ Questions about your bot (please answer as many as you can, especially Q 1-3) *Q: What is the overall strategy/strategies of your bot? Why did you choose them?* CherryPi has 8-13 strategies per matchup. It selects one at the start of the game based on history against the current opponent, using a bandit model with time-decaying weights on previous games. Using a pre-trained model, and given the current state of the game, it estimates the expected likelihood of winning (“value”) with each of the available strategies, and under certain conditions will switch to the strategy with the highest value. This can produce “mixed” strategies by switching back and forth. The strategies were chosen with several considerations in mind: 1. Diversity, such that the strategy switcher has solutions to as many situations as possible 2. Robustness, due to the round robin format, as to put us in a position to win up to 100% of games (for example, avoiding 12 Pool/12 Hatch openings in ZvZ due to the random chance of opponents opening 4 Pool) 3. Leveraging the bot's strongest skills *Q: Did you incorporate any of the following AI techniques in your bot?* If you did, please be as specific as possible *a) Search-Based AI (Path-Finding, A*, MiniMax, MCTS, etc)* Yes. We use region-level pathfinding to send units around map obstacles, and threat-aware pathfinding to kite and navigate units out of combat. *b) Offline Machine Learning (Supervised or Unsupervised, but not RL)* Yes, to learn building placement from human data. *c) Offline Reinforcement Learning* Yes *d) Online Learning of any kind (Including competition file IO for strategy selection)* Yes *e) Influence Maps* No *f) Custom Map Analysis* Yes (uses BWEM) *g) Hard-coded or rule-based strategy / tactics* Yes *h) Analysis of bots from previous competitions / hard-coded specific bot counter strategies* Yes *i) Any techniques not mentioned here* *Q: How did you become interested in Starcraft AI?* NA *Q: How long have you been working on your bot?* NA *Q: About how many lines of code is your bot?* About 50k lines of C++ *Q: Why did you choose the race of your bot?* Randomly *Q: Did you use any existing code as the basis for your bot? If so, why, and what did you change?* We use some libraries like BWEM. CherryPi is not based on any other bots. *Q: What do you feel are the strongest and weakest parts of your bot's overall performance?* Some of CherryPi's key strengths include: * Efficient macro-management: Optimized harvester distribution, automatic tuning of mineral:gas ratio, building Drones in unsaturated bases, and a build queue that automatically expedites build items wherever possible eg. by inserting Hatcheries or Overlords as needed. * Strategy selection: Having a diverse set of openers and the ability to intelligently switch between them * Army positioning: Pre-positioning armies to achieve maximum surface area in combat; using threat-aware pathfinding to evacuate armies smoothly with minimized losses * Basic unit control: Distributing targets so units don't collide; controlling Hydralisks between shots Areas CherryPi could be better: * Specialized unit control: Understanding spell usage, dedicated harassment, and tactics like drops or runbys * Map safety awareness: Understanding how enemy Vultures or speed-upgraded Zerglings affect the safety of leaving our base * Experience against diverse strategies: The strategy-switcher is trained on publicly available bots. The approach naturally overfits to the strategies that are currently represented in the bot pool and is at risk of extrapolating poorly to novel or un-represented strategies. *Q: If you competed in previous tournaments, what did you change for this year's entry?* Compared to AIIDE 2017, we added: * An LSTM model for high level strategy selection, using the partially observed game state as input (supervised + RL trained) * A ConvNet model that places buildings based on human data from https://arxiv.org/abs/1708.02139 * Lots more high level strategies * Optimized macromanagement: harvester assignment, automatic gas:mineral tuning, building Drones in less-saturated bases * Micromanagement improvements: Pre-positioning armies, maximizing Zergling surface area, kiting Hydralisks, improved worker defense *Q: Have you tested your bot against humans? If so, how did it go?* NA *Q: Any fun or interesting stories about the development / testing of your bot?* NA *Q: Any other projects you're working on that you'd like to advertise?* https://github.com/TorchCraft/ (https://github.com/TorchCraft/TorchCraft) *Optional Opinion Questions:* *Q: What is your opinion on the current state of StarCraft AI? How long do you think before computers can beat humans in a best-of-7 match?* NA *Q: What do you feel is the biggest hurdle (technological or otherwise) in improving your bot's AI?* NA *Q: Which bots are the most interesting to you and why?* NA *AIIDE Specific Question:* *Q: Do you feel that the current format of iterated round-robin win percentage* *is a good indicator of bot skill ranking? If not, how would you change it?* Round Robin puts an emphasis on beating weaker bots consistently and does not put all the races on equal footing as some match-ups are more about initial bets than others (for example, achieving the required >95% winrate in ZvZ means that opening with the very standard 12 Pool isn't viable due to the inescapable >0% chance of facing 4 Pool), but that is the rule of the tournament that everybody knows and adheres to by participating. We think changing the rules in the future – way ahead of time, so that everybody can adapt their bot – to favor winning every match-up/pair statistically significantly, would lead to more variety in strategies and approaches being viable in order to win the tournament.