I’ve been interested in developing AI for StarCraft for several years now. I recently came across the Broodwar API project, which provides hooks into StarCraft. It enables developers to query game state as well as issue orders to units. The Broodwar API makes it possible to write custom AI bots for StarCraft.
There are several benefits to using StarCraft as an environment for evaluating game AI. StarCraft is a robust, commercial RTS game that has been around for over 10 years. The game is more complex than current research systems due to its distinct races, deep tech trees and large map pool. Also, StarCraft has developed a large following of players, resulting in a huge number of game traces available for analysis.
The Broodwar API provides several features that make StarCraft a viable AI testbed. First, the API provides a flag for enabling or disabling perfect information. When the flag is disabled, the “fog of war” is enforced. There is also a flag to enable or disable user interaction. Second, the API can be used when running single or multiplayer games. Therefore, bots can be configured to compete against a human, the standard StarCraft AI or another bot utilizing the Broodwar API.
My goal is to develop an AI system for StarCraft that integrates planning and data mining techniques. The target planning language is ABL, which compiles to Java code. In order to enable communication between StarCraft and ABL, I built the StarCraft ProxyBot, which uses socket communication. The ProxyBot makes it possible to develop a Java-based StarCraft AI system.
About the author: Ben Weber is a PhD student at UC Santa Cruz.