Bot Name: Ecgberht Bot Race: Terran Author Name(s): Francisco Javier Sacido Affiliation(s): Student at University Carlos III of Madrid Nationality(s): Spain Occupation(s): Student Bot URL: https://github.com/Jabbo16/Ecgberht Personal URL: https://www.linkedin.com/in/fco-javier-sacido-lopez/?locale=en_US Affiliation URL: https://www.uc3m.es/Home Q: What is the overall strategy/strategies of your bot? Why did you choose them? The bot started as an university project assignment, we were required to use behavioural trees to implement general logic to the bot, like recollection, training and combat logic. After the course finished after the SSCAIT deadline from last year I continued developing and improving my bot on my own. I have always played as Protoss back when I still played Starcraft: Brood War and Starcraft II but on this assignment we were forced to develop a Terran bot. The bits of Terran I have played on Starcraft II were always Bio related strategies (marines + medics + marauders + medivacs) so this is why Ecgberht prefers this kind of strategies. Seeing as using marines+medics with stim its not as good in Brood War than in the sequel I added a handful of strategies like BioMech (marines + medics + tanks) and full mechanical plays (tanks + vultures + wraiths). I also added some cheese strategies just for fun like a Proxy BBS (building two barracks at 8 supply at the center of the map). Main strategy consists in swarming the enemy with lots of marines and medics while expanding all over the map. 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) It uses the built-in BWEM pathfinding to calculate ground distances to calculate the "what to attack next" score. b) Offline Machine Learning (Supervised or Unsupervised, but not RL) Nothing c) Offline Reinforcement Learning Nothing d) Online Learning of any kind (Including competition file IO for strategy selection) It uses the UCB-1 algorithm to choose the "best" strategy based on past results against an opponent. e) Influence Maps First versions of the bot used influence matrices for choosing the best attack and defense positions, because It didnt use cell propagation this method was discarded, latest version doesnt use this kind of technique. f) Custom Map Analysis Uses BWEM for map analysis g) Hard-coded or rule-based strategy / tactics It has some hard-coded enemy strategy and reactions, Currently the bot knows to detect a 4-5 pool (will build a bunker near the command center) and a zealot rush or also known as 9-9 gates (It will build a bunker and send two SCVs to the bunker right to be repaired). h) Analysis of bots from previous competitions / hard-coded specific bot counter strategies Because Its early defense its not really good It has hardcoded some zerg bots that always execute the 4-5 pool strategy, this was added for the SSCAIT ladder but was left in because It worked well enough in CIG. i) Any techniques not mentioned here Some kind of units behaviours are implemented as agents, like the Science Vessels, this allows a better and more concise logic. I implemented dynamic squad creation logic using the Gaussian Mean Shift clustering algorithm. Q: How did you become interested in Starcraft AI? Doing the uni project assignment hooked me as I always loved playing the game when I was younger. Q: How long have you been working on your bot? The bot was started around the first days of December 2017, so almost a full year. Q: About how many lines of code is your bot? Right now its around 13k lines of code. Q: Why did you choose the race of your bot? Forced. Q: Did you use any existing code as the basis for your bot? If so, why, and what did you change? No Q: What do you feel are the strongest and weakest parts of your bot's overall performance? I feel that my bot its a jack of all trades, master of none. It knows how to do lots of things but usually performs bad in most of them compared to other bots that only do few things but are very good at executing them. Currently at SSCAIT my bot is in a weird state where It can beat some high elo bots but also lose against some of the "worst" ones of the ladder. It lacks using proper strategies and build orders and timings. Q: If you competed in previous tournaments, what did you change for this year's entry? I didnt compete in previous tournaments. Q: Have you tested your bot against humans? If so, how did it go? Havent tested against humans. Q: Any fun or interesting stories about the development / testing of your bot? Just some funny bugs: - Bugged learning for almost 2-3 months because of a division by zero... - Breakdancing SCVs... - Using "return" instead of "continue" when simulating battles (It would only simulate the first battle and then send the rest of the army to suicide). Q: Any other projects you're working on that you'd like to advertise? Nothing really interesting. 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? I think its in a very good state, lots of strong bots showing lately (like SAIDA). I think that current top bots can do very well against most human players but are still waay far of pro players. I dont expect AIs beating pro players in the next few years. Q: What do you feel is the biggest hurdle (technological or otherwise) in improving your bot's AI? Starcraft its a very complex game and Its very hard to implement really good logic for most situations. Q: Which bots are the most interesting to you and why? - Krasi0: the best Terran bot and king of the SSCAIT ladder, feels very satisfying watching it play with its methodical approach. - Hannes Bredberg / Neohuman: sounds, memes and nukes, nothing more to say. - Proxy: Watching it play its like watching the real Zerg Swarm overwhelming the enemy. - PurpleWave: Lots of strategies, top quality gameplay and happy vision! 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? I feel that the current format its very good and a good indicator of bot skills.