Bot Name: Steamhammer Bot Race: zerg Author Name(s): Jay Scott Affiliation(s): Nationality(s): U.S.A. Occupation(s): (These will be listed on the competition website) Bot URL: http://satirist.org/ai/starcraft/steamhammer/ Personal URL: Affiliation URL: Questions about your bot (please answer as many as you can, especially Q 1-3) Q: What is the overall strategy/strategies of your bot? Why did you choose them? Steamhammer knows 142 opening book lines, ranging from fast rushes to extreme macro play, and with tech choices from zerglings to hive units. (There is no guardian rush, but it does know a defiler rush opening and an ultralisk rush opening.) Later in the game, it can choose almost any unit mix depending on the situation. Versatility first. The aim is systematic development to produce the best performance in the long run. Q: Did you incorporate any of the following AI techniques in your bot? If you did, please be as specific as possible a) Search-Based AI (Path-Finding, A*, MiniMax, MCTS, etc) Various trivial 1-ply searches with hand-written evaluators for local alternatives, like where to expand to next or where to cast dark swarm. b) Offline Machine Learning (Supervised or Unsupervised, but not RL) In this tournament, for known opponents Steamhammer starts with a pre-trained opponent model, trained with games against that opponent. c) Offline Reinforcement Learning d) Online Learning of any kind (Including competition file IO for strategy selection) Opponent modeling is a key skill. Steamhammer records game information including the opening line it followed and the predicted and recognized enemy plan. Starting at the second game, it tries to choose an opening that counters the predicted enemy plan. With more experience, it tries to balance openings likely to win with exploration of alternatives. If the enemy appears to always follow the same plan, Steamhammer tries to exploit the predictability with a variant of epsilon-greedy, modified to account for the issue that Steamhammer knows more openings than it can explore even in a long tournament. If the opponent varies its play, Steamhammer uses an ad hoc weighted random choice algorithm to vary its play in response, so that its choices are difficult to exploit. e) Influence Maps f) Custom Map Analysis Steamhammer does its own map analysis and does not rely on any external library. But it doesn't do anything special. g) Hard-coded or rule-based strategy / tactics Separate sets of rules operate at four levels of abstraction, strategy, operations, tactics, and unit control. h) Analysis of bots from previous competitions / hard-coded specific bot counter strategies See item b. Also, for some opponents which cannot be trained against but may be somewhat predictable, I hand-selected and edited small numbers of game records to give the opponent model a running start. i) Any techniques not mentioned here Q: How did you become interested in Starcraft AI? I love the game, and I have always been an AI person. I've been aware of BWAPI since 2009. Q: How long have you been working on your bot? Since December 2016. Q: About how many lines of code is your bot? wc counts 45K lines in Steamhammer proper, plus 82K in BOSS which is used only for terran and protoss and not at all in this tournament. Q: Why did you choose the race of your bot? It's the most fun. Q: Did you use any existing code as the basis for your bot? If so, why, and what did you change? UAlbertaBot is a strong base. Over time I am restructuring it substantially. Q: What do you feel are the strongest and weakest parts of your bot's overall performance? Steamhammer's late game macro play is scary, especially with the recently improved defiler support. Most losses are due to poor strategy decisions or clumsy unit control earlier in the game. ZvZ and ZvT are stronger, ZvP is weaker. Q: If you competed in previous tournaments, what did you change for this year's entry? The map analysis is the only major new feature. There are many, many other changes, and they are all bug fixes and refinements. the bug fixes and refinements brought a big strength increase. Q: Have you tested your bot against humans? If so, how did it go? Not with a recent version. Past versions could win occasionally against a strong amateur. Q: Any fun or interesting stories about the development / testing of your bot? Q: Any other projects you're working on that you'd like to advertise? http://satirist.org/ai/starcraft/blog/ http://satirist.org/whale/ 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? The best are now superior to most amateurs, but are still weak compared to pro players. We don't have a good strength measure to estimate how long it may take. There is no annual AI-versus-human competition to be the benchmark. Q: What do you feel is the biggest hurdle (technological or otherwise) in improving your bot's AI? Shortage of resources. Compared to (say) DeepMind, I have to solve much smaller problems. Q: Which bots are the most interesting to you and why? None to point out by name this year. I do notice that many bots which are weak overall nevertheless have impressive skills in some narrow area.