Feel free to answer as many questions as you like, but it would be great if everyone answered everything! Please feel free to provide external references/links as necessary Bot Name: MaasCraft Bot Race: Protoss Author Name(s): Dennis Soemers Affiliation(s): Maastricht University Nationality(s): Netherlands Occupation(s): At the time of developing the bot, I was a Bachelor of Knowledge Engineering student at Maastricht University. The coming year, I'll be starting with the Master Artificial Intelligence program at the same university. Q: How did you become interested in Starcraft AI? A: I was mostly looking for an interesting project for my Bachelor Thesis. I wanted a project in game AI, and had a strong preference for a real-time game (as opposed to board games or other abstract games). Then, I found out about the possibilities with StarCraft, such as an existing API for C++ code (which is by itself already fairly rare among commercially succesful games), and a continuously running bots ladder (which helps with experimenting), so StarCraft seemed like a good opportunity. Q: How long have you been working on your bot? A: Approximately 7-8 months. Q: About how many lines of code is your bot? A: I think between 20,000 and 25,000. Q: Why did you choose the race of your bot? A: I looked at previous years' competitions and noticed the majority of bots were Protoss, so I decided to simply follow that trend. Q: Did you use any existing code as the basis for your bot? If so, why, and what did you change? A: No. I did look at the source code of various other bots for some parts (for example, my Map Analysis is based on Skynet's Map Analysis, and my Micro-Control is based on Nova's Micro-Control), but I wrote most code from scratch. Q: What is the overall strategy/strategies of your bot? Why did you choose them? A: The overall strategy is to attack early with Zealots, and transition into a mix of Zealots and Dragoons later. The focus of my thesis was going to be on Tactical Planning, not strategy, so I decided to pick a single strategy and stick to it, as opposed to spending a larger amount of time on implementing a variety of strategies. Since I was going to go with a single strategy, I simply decided to pick a similar strategy to the one that won last year's AIIDE competition (UAlberta's). Q: Do you incorporate learning of any form in your bot? If so, how was it accomplished? A: No. Q: Do you use any interesting AI techniques or algorithms in your bot? If so, which? A: Yes, for Tactical Planning I use Monte-Carlo Tree Search. I've created a simplified abstraction of the Game State which contains; - A Graph-representation of the Map, with nodes on base locations and chokepoints - Units of both armies are clustered into Squads, so there are only ever a few Squads in the abstraction (as opposed to a large amount of individual units) - When, in a Monte-Carlo Simulation, opposing Squads run into each other and fight, the result of a battle is estimated using Lanchester's Square Law. This simplified abstraction of the game state and rules allows the algorithm to run a sufficient number of simulations in real-time. In the version of the bot that I submitted to the AIIDE and CIG competitions, I did take some decision-making away from the MCTS algorithm and hardcoded it instead (so when compared to the version I used for my Bachelor's Thesis, the algorithm is less ''clean''). For example, I added a hardcoded minimum number of Zealots required for the first attack, instead of letting the algorithm decide whether the army was strong enough, and I changed the evaluation function to strongly favor merging the bot's different squads together. I made these changes because both the Graph-representation of the map, and the battle model based on Lanchester's Square Law, are naturally not perfect and cause the bot to incorrectly judge certain situations. These errors would often cause the bot to attack slightly too early or too late. Because the strategy I originally chose is fairly heavily on early attack timings and near-perfect execution of the early-game, this resulted in unnecessary losses, so for the short-term of this year's competitions I preferred making the bot slightly less ''clean'' and more hardcoded. In hindsight, I suspect the algorithm may be better suited for a more defensive and late-game strategy which is less reliant on perfect execution of the early-game. I also believe the algorithm would still be able to run sufficient simulations with a more fine-grained map representation and a more accurate Battle Model, since the bot is currently running on the bots ladder using less time per frame (I believe I use 35ms per frame in the competitions and only 20ms per frame on the ladder), with similar performance. Q: What do you feel are the strongest and weakest parts of your bot's overall performance? The strongest part of the bot, in my opinion, is that it is technically capable of making better use of the map than most bots. I have noticed that many bots simply move their armies back and forth on the shortest path between their base and the enemy's base when deciding to attack or retreat. In earlier stages of developing my bot, when testing against the built-in AI, I noticed my bot would sometimes take a longer path around with one Squad in order to attack an enemy squad from 2 different sides and essentially trap them. Against stronger opponents (like pretty much every BWAPI-based bot), the bot doesn't get a large enough advantage with respect to number of units to be able to pull off such moves though. The weakest part is the mismatch between Strategy and Tactical Planning, the fact that the chosen Strategy is heavily reliant on good early-game decisions, and the imperfect models used for Tactical Planning are not capable of correctly judging the situation, especially not in the early-game where there are few units (Lanchester's Equations for battles were originally used for armies consisting of tens of thousands of units, and time measured in full days instead of in frames). Q: If you competed in previous tournaments, what did you change for this year's entry? A: I did not compete in previous tournaments. Q: Have you tested your bot against humans? If so, how did it go? A: I did not test the bot against humans. Q: Any fun or interesting stories about the development / testing of your bot? A: - Q: Any other projects you're working on that you'd like to advertise? A: - 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? Q: What do you feel is the biggest hurdle (technological or otherwise) in improving your bot's AI? Q: Which bots are the most interesting to you and why?