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: AIUR Bot Race: Protoss Author Name(s): Florian Richoux Affiliation(s): Université de Nantes, France (but AIUR has mainly been developed while I was at the University of Tokyo, Japan) Nationality(s): French Occupation(s): Associate professor Affiliation home page: http://pagesperso.lina.univ-nantes.fr/~richoux-f/index.html AIUR source code: https://github.com/AIUR-group/AIUR AIUR home page: http://aiur-group.github.io/AIUR/ Q: How did you become interested in Starcraft AI? You will laugh. Back to October 2010. I read a post from a blog associated to the French newpapers "Le Monde", dedicated to games (this post, in French: http://playtime.blog.lemonde.fr/2010/10/28/quand-starcraft-fait-progresser-lintelligence-artificielle/). It was the first time I heard about people coding AIs for StarCraft and comparing them via a tournament. I am a researcher in AI, but not in Game AI, but I am curious, and really enjoyed StarCraft when I was an high school student. When I started to gather information about the 2010 winner, Berkeley's Overmind, I was so dispointed: their bot was always doing the same strategy, the source code was not available, no papers, no pre-prints, no articles of any form (just an Ars Technica article several months later), and the professor leading this research project just ignored my e-mails. I told to myself: "I am sure I can do better than that". This is how I started AIUR. Q: How long have you been working on your bot? I started AIUR's design on November 2010, and started to code around March 2011 (till the 2011 competition deadline, end of July if I remember well). Now I don't have time to spend on AIUR, so I fiddle with the code two weeks before competitions. I did that for 2012, 2013 and 2014. :-/ Q: About how many lines of code is your bot? About 18.000 lines of very bad, messy C++. But it is based on BWSAL, so many lines are not mine (if you see something clever or elegent, it's from BWSAL, not from me) Q: Why did you choose the race of your bot? You will laugh. My main idea for my bot was to use random computations for a lot of things, in order to be as few predictable as possible. While designing the bot, the race was not selected yet; actually I aimed to play Random first. Then I came up with the name AIUR: Artificial Intelligence Using Randomness. With such a name, impossible to select another race than Protoss. :-) (for StarCraft uninitiated persons, Aiur is the mother land of Protosses). Q: Did you use any existing code as the basis for your bot? If so, why, and what did you change? BWSAL, because it was sooo faster than starting from scratch. And also, it helpt to understand how to start a StarCraft bot. I fixed a couple of bugs in BWSAL (there were not many), and modify some managers to better fits my purpose. But mainly, I developed my own managers, taking the same architecture than BWSAL's managers. Q: What is the overall strategy/strategies of your bot? Why did you choose them? Since I didn't want to always apply the same strategy, I developed several of them, named "moods" in AIUR, an historical name coming from the design time and that I kept. The current version (2.2) uses 6 different moods: - Cheese: a Cannon rush - Rush: a DT "rush", new since AIUR 2.2. I write "rush" because it is a slow rush. This is due to the fact that AIUR does not have an efficient BO planner yet. - Aggressive: A two-Gate opening where a small army of zealots and dragoons will early attack the opponent. - Fast expo: A Nexus first, ie, AIUR takes its base extension before doing anything else. Thus, very economy-oriented. - Macro: A regular game, peaceful, no rushes no early agressions. - Defensive: Selectable since AIUR 2.2; before it was only to counter cheeses (in particular, Zerg 4-pool). AIUR won't run upgrade, researches and fancy buildings before having a massive army of zealots/dragoons. Q: Do you incorporate learning of any form in your bot? If so, how was it accomplished? Yes, both on-line and off-line learning, and they are similar: AIUR just write in a file which strategy won or failed against a given opponent on a given map size (the number of possible starting slots). Thus after a training period, it applies a classical epsilon-greedy algorithm to select its starting mood for next games. For this competition, the training period was shorten at the maximum, ie, AIUR tries only once each strategy and then start to choose the strategy it thinks to be right. This was due to the relatively few number of games AIUR can play again each bot. Thus for the AIIDE 2013 competition, AIUR trained itself during the first 18 games against each opponent before selecting a strategy. This learning can be on-line (training period during the tournament), or off-line (training period prior to the tournament). This year, AIUR only did an off-line training against UAlbertaBot, Skynet and Ximp. Q: Do you use any interesting AI techniques or algorithms in your bot? If so, which? My bot, like many bots, is way too scripted. The only interesting AI technique I use so far is the on-line/off-line learning, which is, as you understood, very basic. However I plan to apply some Constraint Satisfation / Optimization Problems techniques (CSP/COP) soon... Q: What do you feel are the strongest and weakest parts of your bot's overall performance? Strongest: AIUR is very good at macro. It takes good decisions about what and when unit/upgrade/research to produce, without any planner (let's say it is half-scripted). For this behavior, I was actually insprired by a comment of Sean "Day[9]" Plott analysing a StarCraft 2 game from Greg "IdrA" Fields, telling that IdrA has a smart way to spend his money: He doesn't have something in mind and wait to have enough money to apply his plan; he is doing exactly the opposite, wondering "with my current money, what can I smartly buy?". Weakest: Two things: 1. The most important one: Micro. Totally absent from AIUR, since 2011. 2. The BWSAL part. :-) It was great to start the bot, but now I see that it limit myself and make some extensions harder. Q: If you competed in previous tournaments, what did you change for this year's entry? A couple of small, quick hacks (I copy-paste what is written in AIUR's web page): New mood selection policy: AIUR uses now an epsilon-greedy algorithm. New old mood: The DefensiveMood is selectable again at the beginning of a game (was disabled since AIUR v2.0). AIUR has thus 6 selectable starting moods. Rush mood changed into a rush DT. Implement an off-line learning feature: You can now train AIUR against a given opponent and use that learning for further games, like during tournaments. Improve the Cannon rush pathfinding. Q: Have you tested your bot against humans? If so, how did it go? See by yourself: http://www.youtube.com/watch?v=HJSjcIVvhVU http://www.youtube.com/watch?v=ehDDTT0wsC4 Q: Any fun or interesting stories about the development / testing of your bot? I think I already said some about the development. About testing, not really, except that the first year, I didn't really know how to test AIUR against another bot, thus I just tested it against the built-in AI. Q: Any other projects you're working on that you'd like to advertise? Yes! Me and Alberto (Nova), we have developed a program to compute and optimize a wall-in. You can find the source code here: https://github.com/richoux/Wall-in Alos, we are right now working on a broad generalization of this program, making an easy-to-use and easy-to-modify library to solve any StarCraft problem, as soon as it has been modeled by a CSP/COP. Work in progress, so stay tune! 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? We are sadly far from having interesting AIs, from an pure AI poitn of view. Our AIs (mine first) are heavily scripted, thus not so smart. IMHO, the smartest StarCraft AI thus taking the fewest scripted decision is BroodwarBotQ (BBQ, from Gabriel Synnaeve), that does not participated to competitions anymore. This also shows that, for me, AIs on the top three in competitions are not necessarily the smartest. We still are in a period where it is more efficient to hard-code well-tune strategies than to (try to) be smart. The day we leave this period would be a big step forward for RTS AIs. How long before beating pro-gamers in a BO7? Good question. 10 years? I don't know; it only depend of us, actually. Should we continue to tune our bot to beat to best bots of last year competitions (I am the first to do that, too), or should we try new AI techniques, certainly less efficient at first, but less scripted and hopefully leading to far better bots in a near future? MTCS you said? I don't know, I am not fully convinced (yet) it can work for RTS. Q: What do you feel is the biggest hurdle (technological or otherwise) in improving your bot's AI? I have no idea. I have one, two things in mind I would like to try, but really, I have no clue if it can be efficient. Q: Which bots are the most interesting to you and why? See my answer to the first optional question.