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: LetaBot Bot Race: Terran Author Name(s): Martin Rooijackers Affiliation(s): Universiteit Maastricht Nationality(s): Dutch Occupation(s): Student Q: How did you become interested in StarCraft AI? Making a bot for a game was part of a Game AI course. I choose StarCraft due to my interest in RTS games. Q: How long have you been working on your bot? I made some small experiments during the game AI course in 2013. I have been working at this bot since the beginning of 2014, when my master thesis started. Q: About how many lines of code is your bot? 7243 in total when "find . -type f -print0 | xargs -0 cat | wc -l" is used in the source directory. Besides comments and white space, there is also some code that is not used in the final tournament (still work in progress, therefore disabled). Q: Why did you choose the race of your bot? One of the strategies (bunker rush) turned out to be very strong against a lot of bots. The other reason is that wraiths are very strong when controlled with a lot of apm. I already made some small test maps to test wraiths with a lot of apm, just like this video: https://www.youtube.com/watch?v=NcjQhig88wE But for now the wraiths are only used to end the game after a successful rush. Q: Did you use any existing code as the basis for your bot? If so, why, and what did you change? I used the UAlbertaBot framework to set up the visual studio. Finding suitable building locations close to the command center is based on the way Nova bot's build manager works. Q: What is the overall strategy/strategies of your bot? Why did you choose them? - Bunker rush Proxy 5 rax followed by building a bunker at the choke. Either inside the main or in the natural. This strategy is based on experiments that I have performed (included in the replay pack). Most bots automatically attack the bunker, which causes the bots to lose The 8 rax variant is used to stop a fast expand. This one is not yet build in my bot: http://wiki.teamliquid.net/starcraft/Bunker_Rush - Barracks Barracks Supply Well known rush build for Terran. I use the non-proxy variant: http://wiki.teamliquid.net/starcraft/Barracks_Barracks_Supply This strategy is based on experiments that I have performed (included in the replay pack). Works against most Terran bots due to a lack of wall-in or reaction against scouting BBS. - Worker rush: Sending 3 initial SCV's to the opponent (split up to scout first). This strategy is based on experiments that I have performed (included in the replay pack). Some bots are not able to handle multiple worker units attacking at the early game. In the replay pack I managed to win against several top bots using this strategy (included in the replay pack). - Gas steal: Stealing the opponent's gas, followed by a bunker rush. This strategy is based on experiments that I have performed (included in the replay pack). This mainly works against Skynet, who does not react properly to a gas steal. - BioMech: Implementation of the following build (with wall-in): http://www.teamliquid.net/forum/bw-strategy/97127-d-adventures-in-bio-tank This build works really well against all the Protoss bots that rely on Zealot + Dragoon. Q: Do you incorporate learning of any form in your bot? If so, how was it accomplished? Simple I/O which keeps track of the wins/losses of a strategy used on a certain opponent. See the BestStrat() function in LetaBotModule.cpp for strategy selection based on this data. Q: Do you use any interesting AI techniques or algorithms in your bot? If so, which? Wall-in is calculated with Depth first search to find potential wall locations combined with floodfill to check if the potential wall is (zealot/marine/zergling) tight. The tightness depends on the unit and can be specified. The function can be found as WallOff() in BuildManager.cpp See also: http://wiki.teamliquid.net/starcraft/Walling_as_Terran In future work I will use A* instead of floodfill to check if a wall is tight. to save computation time. Q: What do you feel are the strongest and weakest parts of your bot's overall performance? Strong parts: - Wall-in prevents most of the early aggression strategies used by a lot of bots. - Most strategies use an even earlier aggression which most bots cannot deal with. Weak parts: - The implementations of the Late game build orders and mechanics is not finished. Hence the bot can only play early and mid game. - Most strategies have less success rate on 4 player maps. Q: If you competed in previous tournaments, what did you change for this year's entry? I did not compete in previous tournaments. Q: Have you tested your bot against humans? If so, how did it go? Before I started the bot, I played as a human against the AIIDE 2013 entries. This is how I figured out some of the strategies that I use in my bot (see replay pack). I have not played against my own bot, because each strategy is very easy to counter. Q: Any fun or interesting stories about the development / testing of your bot? I was able to SCV rush every 2013 bot that I know of, including krasi0 (see replay pack). The SCV rush in my bot was able to win against all opponents except an old 2011 version of AIUR: http://bots-stats.krasi0.com/botDetaails.php?id=35 Q: Any other projects you're working on that you'd like to advertise? None at the moment. Once the wall-in implementation has the A* and is tested, I might turn it into a library just like BWTA so that other starcraft AI developers can use it. 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? Most bots can still be stopped by cheese (bunker rush, BBS, worker rush). The first big goal in my eyes is a bot that can survive the 10-minute mark. With a new wall-in module, this should become more feasible (note that the module also works for Protoss and Zerg by adding a unit as a 32x32 building). Once we know how to deal with any cheese,rush or early timing attack the bots will become a decent match against any C- player. One option for this is to build a bot with all kinds of possible early attacks and build another bot with learning to deal with all of them. I think that it will take about 1 year (next AIIDE tournament) for the best bot to be able to survive the 10-minute mark against any decent C+/B- player. Another year after this (2 years from now) bots will most likely be around D+/C- level and consistently defeat D+ players. Q: What do you feel is the biggest hurdle (technological or otherwise) in improving your bot's AI? The main problem at the moment is how to store and use the knowledge of a win/loss. For example: Changing a build order does not work against a worker rush (with the exception of build orders that cut a lot of workers). Q: Which bots are the most interesting to you and why? UAlbertabot- The build order search and battle simulation using MCTS allows the bot to be more dynamic (not relying on a script). Skynet - Does not have a set of complete static strategies from which it chooses, and thus has more effective learning capabilities. IceBot - From the results thus far, it seems that IceBot is able to counter the bunker rush by using a learning technique. I am very interested to see what technique they used.