Bot Name: Stone Bot Race: Terran Author Name(s): Igor Dimitrijevic Affiliation(s): independant Nationality(s): french Occupation(s): R&D Software Engineer (These will be listed on the competition website) Bot URL: http://bwem.sourceforge.net/Stone.html Personal URL: Affiliation URL: Q: How did you become interested in Starcraft AI? As far as I remember, I've always been fond of RTS games, with the very first I played: Dune 2. I started programming by this time. A couple of years later, I studied AI at university because... that's pretty cool isn't it? This was the time of StarCraft, but I didn't like it much. I've always preferred the 'Age of' series. By this time, I was programing a lot of games during my spare time, and would have loved to make an AI for some AAA game. Unfortunately, STR AI competitions didn't exist! Many years later, I heard of several Starcraft AI competions. Having some free time on my hands this summer, I decided I could make my old dream a reality (big thanks to the developers of the BWAPI)! Q: How long have you been working on your bot? It took me 2 months. One month for the map analyser, plus one month for the bot itself. Q: About how many lines of code is your bot? 5000 raw lines for the map analyser + 8000 raw lines for the bot itself, so 13000 raw lines altogether. Q: Why did you choose the race of your bot? As a newbie to StarCraft, I chose the Terrans because the other races confused me too much. When later on I designed the basic strategy of my bot, I thought this was a good choice. In StarCraft, the races are incredibly heterogeneous, which makes me think dealing with all of them in a generic manner should be considered an exploit. UAlbertaBot not only does this, but it is carefully designed so that it can be used as a starting point for testing ideas with minimal effort... quite impressive! Q: Did you use any existing code as the basis for your bot? If so, why, and what did you change? No. Other than implementing AI techniques, I particularly appreciate designing architectures. Not a painful task for me. I would have used some of the existing map analysers, unfortunately none of them fulfilled my needs so I came up with my own. Q: What is the overall strategy/strategies of your bot? Why did you choose them? What Stone does is, I think, an early SCV rush. Not an aggressive one though. Stone's SCVs first aim at stopping opponent's workers from doing anything useful, like gathering ressources. All they want is to keep the game in the Age of Stone because only SCVS can be produced... hence the name of the bot. Q: Do you incorporate learning of any form in your bot? If so, how was it accomplished? No, though this could make sense. For exemple, the way the SCVs are produced (the economy) is entirely scripted. Unless the game ends soon, up to 3 additional bases will be built in order to produce the SCVs faster and faster. The corresponding timing could be adapted by taking in account the previous games with the same oponent, using learning techniques. Also, SCV's have some carefully designed behaviour (micro) which could benefit from learning techniques too. Actually, I see machine learning as an optimization technique. As such, this is not a priority for me, as there are still many obvious areas for improvement in Stone. Q: Do you use any interesting AI techniques or algorithms in your bot? If so, which? Not that much. Stone's architecture is strongly Agent oriented, so if you consider Multi-Agent Systems an AI technique, well, that's one. The very raison I chose such a design, though, is that it provides both a good encapsulation of the agent's behaviour, and a good abstraction level so it is easy to swap or share behaviors. Agents can communicate with each other directly or by emiting signals, or even by leaving traces on the ground. Nothing very special. Q: What do you feel are the strongest and weakest parts of your bot's overall performance? Stone's strategy is an all-in strategy, so it is possible for its oponents to defeat it quite easily. Maybe the easiest way for an oponent to defeat Stone is to make its base safe early on, either by building a Sunken Colony or a Photon Cannon, or by training a single Marine and ordering him to stand. By the way, once they have discovered the enemy base, Stone's SCV's will always target its location, so a very simple and opportunistic way to defeat them as a Terran is to move the Command Center away as soon as Stone's first SCV attacks. Stone's SCVs strength comes from their many behaviours, which I have carefully designed in such a way that each one can behave well on its own, in any situation (well, that's the intent...). That they can act and fight independently from each other makes it hard, for an other bot with no such capability, to deal with them. In addition, Stone's SCVs can cooperate as well if necessary. For exemple they can repair each other. They can raise alerts or launch a group attack. I believe that to get some good overall behaviour, and still a robust one, one have to focus on individual behaviours. That is, write unsupervised algorithms rather than supervised ones. Q: If you competed in previous tournaments, what did you change for this year's entry? Q: Have you tested your bot against humans? If so, how did it go? Unfortunately, I could not. Neither could I test it against other bots, so I'm very uncertain about the results! Q: Any fun or interesting stories about the development / testing of your bot? Not a very fun one: It took me about two months to write my bot. But this was after three months of previous work, which I lost due to a crash of both my computer and the backup on my external drive... After that I've given up the idea of competing this year. I wanted to get something out of my involvement, though, so I decided to make the map analyser I had written an open source library, as I had been quite satisfied with it. Only after I thought about this very simple strategy, that would only require me to deal with one type of units, and would allow me to compete! An interesting one: after having submitted my bot, I discovered on the site http://bots-stats.krasi0.com/ a bot named SCVRushBot with a very similar strategy. This surprised me a lot and disappointed me because my strategy was not that original... Watching some of the replays of SCVRushBot, I've concluded this bot is much more aggressive than mine! It appears SCVRushBot's author is Martin Rooijackers, who is currently competing with LetaBot. I'm wondering if LetaBot now implements the strategy of SCVRushBot. I hope so, so we can see the clash of styles! Q: Any other projects you're working on that you'd like to advertise? Yes! As I mentioned, I've written a map analyser for Broodwar. I made it an open source library so anyone can use it now (http://bwem.sourceforge.net). It is written in modern C++11/14. To put it simply, it is fast and robust, easy to use, easy to modify and debug. I believe it may prove useful for other programmers. By the way, Stone demonstrates its use and its effectiveness. Important to notice, the BWEM library depends on BWAPI 4.1.2. That could encourage the adoption of the new BWAPI which seems to be slow. 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? - On the current state of StarCraft AI: I've read a couple of papers, and I was impressed by the number of AI techniques that have been tried and implemented. A couple of thoughts: * I think the set of AI techniques that may be interesting to test through the BWAPI, from the point of vue of research in AI, is distinct from the set of (AI) techniques that are likely to make a bot beat pro-gamers. I believe the two set overlap, though. * By the way, I'm not sure StarCraft is the best RTS game for testing AI techniques. While some (I don't remember who) have pointed that the heterogeneous of Starcraft races may encourage the use of specific AI techniques [to overcome this heterogeneous], I think this heterogeneous hamper efforts to test AI techniques above all, despite the pretty good abstraction provided by the BWAPI library. I whish we'd had a simpler STR game with such a big community. * When StarCraft Bots will be strong enough, I think we should distinguish between two kinds of AI: AI vs AI and AI vs human. I don't believe the winning (AI) techniques involved will be same, so making a bot with both goals might be twice as difficult as one bot whith only one goal. - On my prediction: First you have to remember I am a newbie to StarCraft... Now I believe that computers will beat StarCraft pro-gamers... next year! Q: What do you feel is the biggest hurdle (technological or otherwise) in improving your bot's AI? Setting up a convenient environnement for testing my Bot against other bots. Replays would help very much (thanks for the competition!), as well as putting my bot in a ladder. Q: Which bots are the most interesting to you and why? I'have talked about UAlbertaBot. TSCMoo(Zerg) is the one bot that impressed me the most. I think its way of occupying the space, together with the use of the cheap Zerg units, is a winning strategy.