PurpleWave is a StarCraft AI, written by Dan Gant.
PurpleWave executes a large variety of pro-style strategies. It detects enemy strategies based either on direct observation or process of elimination, tracks known enemy tendencies across games, and uses the two sources of information to modify its own strategies on the fly with hundreds of reactions.
- Written from scratch
- Plays as all races ("PurpleWave" as Protoss, "PurpleSpirit" as Terran, "PurpleSwarm" as Zerg, and "PurpleDestiny" as Random), with an emphasis on Protoss.
PurpleWave's macro decisionmaking uses simple hierarchical task networks. A simple task might be "Train a Probe", which may be a step required to fulfill the task "Train Probes continuously until saturation". The tasks strictly order their children, leading to a strict priority ordering for the entire network. This prioritization is used to allocate resources like minerals, gas, supply, units, and building locations. For example, "Scout" may have a higher priority than "Gather" and can thus can requisition a gathering worker to go scouting.
PurpleWave's micromanagement uses a hybrid squad/multi-agent approach. Units are given goals by the tasks which have acquired them. It identifies battles using fixed-radius nearest neighbors clustering, and assigns the participants to an ad-hoc squad. That allows units with different goals to collaborate when they find themselves in the same engagement. Using those ad-hoc squads, PurpleWave then simulates the outcomes of that battle, the results of which inform decisionmaking by each unit's agent. The same estimations, made at a global level, are also used to inform macro decisions.
For navigation, PurpleWave combines threat-aware A* pathfinding with potential fields.
|2018||1st||AIST 2018||3-1 v McRave|
|2018||1st||SSCAIT 2018||4-0 v Locutus|
|2019||1st||SSCAIT 2019||4-0 v BetaStar|
|2020||2nd||AIST 2020||1-3 v Locutus|
|2021||2nd||AIST 2021||1-3 v Stardust|