There's something magical watching the micro and macro-management unfold in StarCraft: Brood War. Once the game moves beyond that early phase, there's simply too much going on for one person to perfectly and precisely control every production facility, the movement of every unit, the timing of every expansion.
There's as much attention management required as there is tactical mastery. So you'd think, in theory, getting bots to play Brood War would result in some truly spectacular play.
Computers, after all, aren't limited by the physical restrictions of humans. Several hundred actions per minute is entirely within the realms of possibility for an AI. So you'd think that would result in some excellent unit control, as well as some truly refined build orders.
But watching the Student StarCraft Artificial Intelligence Tournament's mixed division, a tournament featuring a range of bots coded by computer science and AI, I'm left with a sense of wonderment. It's not quite like watching the GSL, South Korean Proleague tournaments or even European StarCraft competitions. The level of play is much more rudimentary than that: it's rather casual.
According to the SSCAI website, Brood War bots currently don't have anywhere near the adaptive capabilities of humans. Because of that, it's pretty easy to wipe the floor with them by pushing them into scenarios that they're not yet equipped to respond to. "Russian player Djem5 played a couple of demonstration matches for [Artificial Intelligence and Interactive Digital Entertainment conference] 2015, in which he summarily beat all AI opposition without breaking a sweat," the SSCAI added.
So instead of getting robotic versions of Flash and Jaedong duking it out, what you have is a rather casual affair filled with mistakes that you or I might make on a regular basis. It's actually kind of fun to watch, particularly if you approach it from the view of trying to unpack how a certain AI is built and trying to process how it might respond to the situation on hand.
If you're curious, the bots are coded using in Java or C++ using the custom BWAPI instructions and standards. "BWAPI only reveals the visible parts of the game state to AI modules by default. Information on units that have gone back into the fog of war is denied to the AI," the description on the GitHub page reads.
But despite all the limitations, that doesn't mean there aren't some incredibly long and intense matches. If a Terran bot faces a Zerg opponent that isn't focused on four-pooling or some other all-in rush, the action can quickly get out of hand, with marines, medics, zerglings and mutalisks dancing in all manner of directions. The video above also has a pretty enjoyable Protoss mirror match.
It's worth noting that all the matches are drawn out to the last building, simply because bots don't have the capacity to resign. And there can be some incredibly silly situations as well, like this one.
The Terran AI had a handful of marines clustered around its command centre for a solid minute while the refinery absorbed blows from a single zergling. I wonder what the process would have been like on the coding side: did the building have to take a certain amount of damage before the threat level warranted a response? And what level of force does the Terran AI need to have to respond to a threat? Is it a ratio thing? Does the lack of vision around the area affect proceedings?