-
Notifications
You must be signed in to change notification settings - Fork 177
Artificial Intelligence
davechurchill edited this page Sep 11, 2014
·
3 revisions
UAlbertaBot contains a mix of dynamic artificial intelligence systems and scripted rule-based decision making. Here I will give an overview of each main function of the bot and how it is performed.
- All build-orders in UAlbertaBot are planned by our heuristic search based [StarcraftBuildOrderSearch build order planning system]. Build-order goals are given by
StrategyManager
toProductionManager
which then uses this system to dynamically generate near-optimal build order plans. The only two exceptions to this rule are:- A supply producer is build immediately if a supply defficiency is detected
- A detector is made if enemy cloaked units are detected
- Details of this method can be found in our AIIDE 2011 paper: Build-order Optimization in StarCraft
- All battles UAlbertaBot encounters are first run through our SparCraft combat simulation system. If the outcome of this simulation is positive we continue toward the enmy base. If the outcome is negative, we retreat toward our own base.
- Details of the this method can be found in our 2012 AIIDE paper: Fast Heuristic Search for RTS Game Combat Scenarios
<wiki:video url="http://www.youtube.com/watch?v=9441p6uTIVU" width=640 height=360/>
- A flood-fill based multi-agent path finding system is used to determine all ground paths to a given destination on a given map. The results of these are cached efficiently for later re-use if necessary.
- UAlbertaBot can use the UCB algorithm for selecting a strategy to use against a given opponent, based on the results of previous matches. If no match history is available, we use a random selection from given strategies. The following graph shows how UAlbertaBot's win rate went up over time as it learned which strategies to implement in the 2012 AIIDE StarCraft AI Competition:
(Note: This feature is disabled by default as of 2013)
- Currently, all unit micromanagement follows a rule-based scripted policy found in its respective
MicroManager
subclass. We hope to soon extend this to use our full search-based micro simulation system: SparCraft
- Workers are allocated to resources by rule-based scripts using expert knowledge obtained from professional StarCraft players.
- Currently UAlbertaBot only plays the Protoss race, however its architecture allows for any race to be played. The only limiting factor is a fix needed to the build order system which currently has a bug for the zerg race. In the future we hope to play random race.
<wiki:video url="http://www.youtube.com/watch?v=LwWQy7MxT-Q" width=640 height=480/>