Bot Name: ForceBot Bot Race: Zerg Author Name(s): Tom Peeters Affiliation(s): Delft University of Technology Nationality(s): Dutch Occupation(s): Student Bot URL: https://github.com/tompeeters368/ForceBot Personal URL: N/A Affiliation URL: https://www.tudelft.nl/en/ Q: What is the overall strategy/strategies of your bot? Why did you choose them? The strategy varies from early to mid game strategies. Unfortunately, due to performance constraints the late game is risky for ForceBot, and it will almost certainly start to lose due to poor micro. I don't think a rush/cheese bot is too impressive however, so despite the danger of going late game, I would say ForceBot gravitates more towards mid game. Depending on the size of the map, enemy race and some dice rolls, it will generally go for either a 5-Pool, 9-Pool Speedlings, 9-Pool into fast Lair or a 12-Hatchery expansion, with possibilities of late-game transitions into Ultralisks. The combat units it uses is limited to Zerglings, Hydralisks, Lurkers, Mutalisks and Ultralisks. Overall, these strategies were chosen to keep a balance between more aggressive and more economic strategies, in the hopes that opposing learning bots wouldn't figure out a sure-fire counter. Q: Do you incorporate learning of any form in your bot? If so, how was it accomplished? There is no learning present in ForceBot. ForceBot is written in GOAL which makes I/O difficult, and as a fairly new bot, written in a new language, I'd rather focus on ensuring other elements work well before moving on to learning. Q: Please describe all AI techniques / algorithms used in your bot (for example: What parts of your bot are 'hard-coded', which use learning, search, decision trees, state machines, etc) As GOAL is not an object-oriented language, traditional techniques can't really be applied. GOAL is used to create multi-agent systems, as such all units have their own agent, their own beliefs and their own goals. Each agent more or less follows a rule-based AI pattern. A number of things are hard-coded, such as strategy and number of defensive structures. I'd like to make the majority of hard-coded things dynamic in the long run, but time constraint is a factor. Q: How did you become interested in StarCraft AI? I've been interested in AI's for a long time, and it is a large reason for becoming a programmer in the first place. A GOAL connector for StarCraft was created by students roughly 1.5 years ago, and there was interest in seeing how well a GOAL-based StarCraft bot could compete with other bots. Being able to create an AI for my thesis greatly interested me and so I got involved. Q: How long have you been working on your bot? Roughly 5 months. Q: About how many lines of code is your bot? The bot itself is almost 7000 LOC, mind that this doesn't include the GOAL connector and such as they are not created by me. Q: Why did you choose the race of your bot? I've always liked Zerg the most, although Protoss is cool too. But besides that, I wanted to push GOAL, and thought that a multi-agent system would do well with Zerg (I mean, Zerg basically is a multi-agent system!). Unfortunately, performance bottlenecks hit quite hard, and in hindsight I think I would have done better if I had gone for Protoss. Q: Did you use any existing code as the basis for your bot? If so, why, and what did you change? Unfortunately, there was no such existing code for GOAL. Q: What do you feel are the strongest and weakest parts of your bot's overall performance? The weakest part, as earlier mentioned, is definitely the late game. The performance of the bot starts to crumble and it simply cannot keep up in micro, inevitably losing the eco war by poor micro. I feel its defence is weak as well (static defences amount is hard-coded), but not critically so. I think ForceBot still has a long way to go, so I'm unsure of what I'd say is its greatest strength. I think it has some pretty clever micro for Overlords, hanging around near unused bases at the maximum vision range. It's hard to hide expansions from it. But at the same time I've seen a few bots go on Overlord hunting trips, and well, the Overlords don't really do self-preservation. Another thing that I'm quite proud of is that it can rebuild in another base when its main is lost, something which even a number of far superior bots aren't designed to do. Q: If you competed in previous tournaments, what did you change for this year's entry? N/A Q: Have you tested your bot against humans? If so, how did it go? I have not, but I don't expect it to go well for ForceBot! Q: Any fun or interesting stories about the development / testing of your bot? I guess I'll go with a classic. There was a time where, if the bot lost track of the enemy base, it'd move units to random positions to try and find any trace. Unfortunately, it was bugged and would continuously fire new random move orders instead of completing the current one. This, of course, led to an inevitable dance party at the middle of the map. Q: Any other projects you're working on that you'd like to advertise? I'm also the creator of SpriteClub, a free fake-money betting site that periodically covers live events on Twitch TV. Primarily fighting game events, but also other events such as Games Done Quick. SpriteClub also runs a 24/7 betting site for the SSCAIT stream, as well as our own hosted M.U.G.E.N stream, which is a 2D fighting game that allows people to create their own fighters from scratch. You can check it out over at https://www.spriteclub.tv/ (It is 100% free, but I understand if you'd rather not advertise a betting site) 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? I feel that in the past 2-3 years, StarCraft AI's have really managed to diversify and become more interesting to watch and also play against. Most bots can use a variety of techniques/strategies and adapt to some pretty diverse scenario's. I find it hard to tell if they've actually gotten all that much better though. The distance to professional StarCraft players remains huge, as the decision making skills of a professional player is still on a whole other level. I think with the approaches that are currently in use, it will never happen, as current methods simply are not versatile enough to deal with the weird ways in which humans can outsmart or confuse them. However, the arrival of the StarCraft 2 API may spark some interesting new innovations. Q: What do you feel is the biggest hurdle (technological or otherwise) in improving your bot's AI? Performance constraints, without a doubt. Finer micro such as hit-and-run Mutalisk AI is rather demanding on GOAL. Q: Which bots are the most interesting to you and why? I think mid-game bots are the most interesting, as it is probably the time at which decision making is the most important. Rush bots sometimes boil down to a somewhat complex game of rock-paper-scissors, and late game bots tend to drag on while one bot gradually chokes the other one of all resources on the map. It may be the correct play, but it's not very exciting. I think playing against mid-game bots is also the most entertaining for a human, which I think is a goal that people shouldn't forget about. Beating humans is a grand achievement, but in the end, it's still a game!