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: MooseBot Bot Race: Protoss Author Name(s): Adam Montgomerie Affiliation(s): University Of Bristol Nationality(s): British Occupation(s): MSc Student Q: How did you become interested in Starcraft AI? A: I was vaguely aware of the AIIDE/CIG competitions from previous years. I also needed to come up with a project for my MSc thesis, and since I have been a RTS/StarCraft fan for a long time, making a bot seemed like a good idea because it combined my interests in StarCraft and programming. Q: How long have you been working on your bot? A: I started at the end of May 2014, so about 3 months now. Q: About how many lines of code is your bot? A: Roughly 6000, not including StarCraftBuildOrderSearch. Q: Why did you choose the race of your bot? A: Originally I wanted it to play as Zerg because that's my favourite race, but as the project progressed it seemed more and more difficult. I only switched it to Protoss a couple of weeks before submitting it to this competition because the bot performed a lot better as Protoss than as Zerg or Terran. Hopefully it will be able to play Zerg next year. Q: Did you use any existing code as the basis for your bot? If so, why, and what did you change? A: I used StarCraftBuildOrderSearch and a few other classes from UAlbertaBot. This is because the plan for my project/bot is to create a bot that can reactively generate unit compositions in response to information about its opponent. I needed a way to dynamically generate build orders during a game and UAlbertaBot can already do this so I decided to base my bot on that. Q: What is the overall strategy/strategies of your bot? Why did you choose them? A: The bot's openings are similar to UAlbertaBot's. When it runs out of items in its current build order queue it generates a goal set of units by taking what it currently knows about its opponent's unit composition and comparing that against a table of example enemy unit compositions. Each enemy unit composition has a corresponding 'solution' unit composition that is a set of units that the bot can train in order to counter the enemy composition. It selects the composition from the table that is most similar to the enemy composition in the current game situation and uses the solution unit composition as a build order goal to input into StarCraftBuildOrderSearch. It also keeps a running total of its opponent's army supply and compares it with its own. If it thinks it has a larger army then it attacks and if smaller then it retreats. I found that this means that it does a lot of aggressive pokes and retreating; which turned out to also be a good way for it to gather information that it can use to get unit compositions. It plays on 1 base a lot with lots of gateways usually. It sometimes expands when teching up so it can gather more gas. It also expands when low on minerals in its main. Q: Do you incorporate learning of any form in your bot? If so, how was it accomplished? A: Unfortunately I hadn't finished working on this part of the bot by the tournament deadline so it doesn't have any. Next year hopefully. Q: Do you use any interesting AI techniques or algorithms in your bot? If so, which? A: Not really. The plan is to used a case based reasoning type approach to unit compositions; so it will be able to adapt previous solutions to suit new situations and store them for use in future. At the moment only the retrieval part of the CBR system is implemented though. Next year again. Q: What do you feel are the strongest and weakest parts of your bot's overall performance? A: The strongest part is probably that it doesn't do the same thing every game, and will attempt to make units that are good vs the units that its opponent has. The weakest part is probably the lack of micro. My bot mostly just attack-moves. Q: If you competed in previous tournaments, what did you change for this year's entry? A: N/A Q: Have you tested your bot against humans? If so, how did it go? A: I've played a few games against it myself to test its response to specific strategies I wanted it to be able to respond to. It's pretty easy to beat, even for a terrible BroodWar player like me. Q: Any fun or interesting stories about the development / testing of your bot? A: I had no experience with AI/bot development, BWAPI or even C++ before starting this project at the end of May. I've quickly found I really enjoy it though! Q: Any other projects you're working on that you'd like to advertise? A: Nope. 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? A: Compared to AI systems that play Chess for example, StarCraft seems a long way behind. StarCraft is a much more complex game though, and with really strict real-time constraints, so it's not really a fair comparison. I think StarCraft AIs beating top level human players in a best-of-7 is a long way away. StarCraft AIs being challenging and interesting opponents for casual or intermediate players seems like much more achievable situation though. Q: What do you feel is the biggest hurdle (technological or otherwise) in improving your bot's AI? A: So far the biggest hurdle has just been getting everything done in time. I plan to compete again next year though, so time hopefully won't be a problem. Q: Which bots are the most interesting to you and why? A: I really like UAlbertaBot's build order search! I think bots need to be able to dynamically generate their strategies rather than following scripted build orders if they have any hope of being challenging opponents for humans.