Bot Name: McRave Bot Race: Protoss Author Name(s): Christian McCrave Affiliation(s): None Nationality(s): Canada Occupation(s): Controls Engineer (These will be listed on the competition website) Bot URL: https://github.com/Cmccrave Personal URL: https://sites.google.com/view/mcrave/ Affiliation URL: None 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? StarCraft is a game where you can win purely by making more correct decisions than the opponent, such as choosing the correct tech or defending a timing attack correctly. McRave tries to model this aspect of the game, trying to play a standard game and being able to adapt to anything. I coded McRave this way to try and play a more standard game of StarCraft, with the ability to be versatile and consistent. It has strong micromanagement, with some rules that help keep units alive or target enemies more appropriately. The micro is helped out through a custom short horizon combat simulator which gives individual results for each unit, with individual retreat/engage logic for each unit. I used this individual logic because of the hysteresis and scalability issues that open source combat simulators have, as well as incorrect results due to lack of proper ground distances. Units use threat aware BFS path-finding to navigate to their objective or target. This was done to be able to safely transfer workers, attack expansions, execute drops, and giving a better distance input for combat simulation. Its macro tries to model modern human builds, with some optimizations to account for mineral locking. All of its builds are reactionary to enemy builds, with the ability to completely change the overall strategy to exploit an enemys decision. Its tech decisions and unit compositions are based on rules of what units are countered by, while the production tries to keep up with these suggestions while aiming to never be idle. The building placement makes extensive use of BWEB for walls, production and defenses. I used modern human play as a goal for McRaves builds and reactions because although StarCraft is not a solved game, there are solutions to some matchups, which can be implemented easily. 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) McRave uses BFS pathfinding for safely moving to objectives, ground distance approximation and combat simulation. BWEB is a library McRave uses that I developed as well, which uses BFS pathfinding and a simple recursive algorithm for wall placement. b) Offline Machine Learning (Supervised or Unsupervised, but not RL) None c) Offline Reinforcement Learning None d) Online Learning of any kind (Including competition file IO for strategy selection) UCB1 learning for build orders. e) Influence Maps Potential fields for collisions, threats (including splash attacks), and clustering. f) Custom Map Analysis BWEB analysis for placement of buildings and walls. g) Hard-coded or rule-based strategy / tactics Rules for countering enemy tech/strategies, defending/attacking objectives with subset of units, targeting. h) Analysis of bots from previous competitions / hard-coded specific bot counter strategies None i) Any techniques not mentioned here Short horizon combat simulator, collects all units that could possibly have an impact in the simulation and spits out a % chance of winning. Q: How did you become interested in Starcraft AI? SSCAIT Twitch stream, then tried to code without any coding knowledge. Q: How long have you been working on your bot? Almost 2 years. Q: About how many lines of code is your bot? ~50,000. Q: Why did you choose the race of your bot? Been a Protoss player for BW and SC2 for a while. Q: Did you use any existing code as the basis for your bot? If so, why, and what did you change? No, all scratch. Q: What do you feel are the strongest and weakest parts of your bot's overall performance? Micromanagement is by far the strongest, I'd emphasis my Shuttles, Corsairs and Arbiters are particularly strong. Q: If you competed in previous tournaments, what did you change for this year's entry? Everything. Last year had 3 terrible hardcoded builds, poor tactics, and plenty of bugs and crashes. Last years McRave was basically a bot that made a bunch of units and attack moved. Q: Have you tested your bot against humans? If so, how did it go? Yes, continually testing them versus mid tier humans to get ideas on what exploits are possible in order to cover them now before it's a problem. Q: Any fun or interesting stories about the development / testing of your bot? Honestly every day it either is amazing or terrible, it somehow manages to disappoint and impress at all times. Q: Any other projects you're working on that you'd like to advertise? I'm working on BWEB, an open source building placement tool. Right now the wall placement is top notch, with most placements being above semi-pro level. With placement like this, we have seen bots starting to use BWEB and use more and more fast expand builds. BWEB needs more help in order to stay relevant, as my time is already spread too thin on my projects. I'm the host of AITT, a for fun StarCraft AI golf tournament. We just had season 1 conclude with some amazing bots, including one that had 7 builds with learning! These bots are less than 3000 bytes and create some hilarious games. You can catch a VOD of it here: https://www.youtube.com/watch?v=FC1Om8ES0zE. Season 2 will take place in spring of 2019. Lastly I'm working on an open source version of the combat simulator I use in McRave, it's still a work in progress but I plan to release it soon for the public. 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? Last year I said it would be late 2018/ early 2019. I think we're on track. We're seeing bots coming from Samsung and Facebook that could probably take out semi-pro players if they haven't studied up on the bot before hand. Q: What do you feel is the biggest hurdle (technological or otherwise) in improving your bot's AI? Most of the issues I face are strategic now, which I don't find particularly interesting most days. Fine tuning builds, strategies, timings, all of it comes with time and patience. Q: Which bots are the most interesting to you and why? Any bot that breaks away from the bot meta and forces change. Any bot that tries to drop, recall, dark swarm, mind control, burrow micro, all of this is capable from bots and is very entertaining to see. 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? Seems fine to me, if you beat the best you should be able to beat the worst.