A Bayesian Model for Plan Recognition in RTS Games applied to StarCraft
Submitted
for
blind
review

Abstract
The task of keyhole (unobtrusive) plan recognition iscentral to adaptive game AI. “Tech trees” or “build
trees” are the core of real-time strategy (RTS) gamestrategic (long term) planning. This paper presents ageneric and simple Bayesian model for RTS tech tree
prediction, which parameters are learned from replays(game logs). This unsupervised machine learning approach involves minimal work for the game developers
as it leverage players’ data. We applied it to StarCraft1
and showed that it yields high quality and robust predictions, that can feed an adaptive AI.

Introduction
In a RTS, players need to gather resources to build military
units and defeat their opponents. To that end, they often haveworker units (or extraction structures) than can gather resources needed to build workers, buildings, military units
and research upgrades. Resources may have different uses,
for instance in StarCraft: minerals are used for everything,whereas gas is only required for advanced buildings or military units, and technology upgrades. The military can be ofdifferent types, any combinations of ranged, casters, contact
attack, zone attacks, big, small, slow, fast, invisible, flying...
Units can have attacks and defenses that counter each others
as in rock-paper-scissors. Buildings and research upgrades
define technology trees (precisely: directed acyclic graphs).
Tech trees are tied to strategic planning, because they put
constraints on which units types can be produced, when andin which numbers, which spells are available and how theplayer spends her resources.
Most real-time strategy (RTS) games AI are either not
challenging or not fun to play against. They are not challenging because they do not adapt well dynamically to different
strategies (long term goals and army composition) and tactics (army moves) that a human can perform. They are not
fun to play against because they cheat economically, gathering resources faster, and/or in the intelligence war, bypassing
the fog of war. We believe that creating AI that adapt to the
Copyright c 2011, Association for the Advancement of Artificial
Intelligence (www.aaai.org). All rights reserved.
1
StarCraft and its expansion StarCraft: Brood War are trademarks of Blizzard EntertainmentTM

strategies of the human player would make RTS games AI
much more interesting to play against.
We worked on StarCraft: Brood War, which is a canonical
RTS game, as Chess is to board games. It had been aroundsince 1998, it has sold 10 millions licenses and was the bestcompetitive RTS for more than a decade. There are 3 factions (Protoss, Terran and Zerg) that are totally different interms of units, tech trees and thus gameplay styles. StarCraft
and most RTS games provide a tool to record game logs
into replays that can be re-simulated by the game engine
and watched to improve strategies and tactics. All high levelplayers use this feature heavily either to improve their playor study opponents style. Observing replays allows players
to see what happened under the fog of war, so that they
can understand timing of technologies and attacks and findclues/evidences leading to infer the strategy as well as weak
points (either strategic or tactical). We used this replay feature to extract players actions and learn the probabilities oftech trees to happen at a given time.
In our model, we used the buildings part of tech trees because buildings can be more easily viewed than units when
fog of war is enforced, and our main focus was our StarCraft
bot implementation (see Figure 1), but nothing hinders us to
use units and upgrades as well in a setting without fog ofwar (commentary assistant or game AI that cheat).

Incomplete
Data
Enemy Unitsfiltered map

Infer Opening /(and then) TechTree
Enemy Tactics

Our Tactics
Units production

Production Manager/ Planner / Optim.

Goals

Units Group

BayesianUnit
BayesianUnit
BayesianUnit
BayesianUnit

Figure 1: Data flow of the free software StarCraft robotic
player B ROODWAR B OT Q. In this paper, we only deal withthe upper left part (in a dotted line).

Background
Related Works
This work was encouraged by the reading of Weber andMateas (2009) Data Mining Approach to Strategy Prediction and the fact that they provided their dataset. They triedand evaluated several machine learning algorithms on replays that were labeled with strategies (supervised learning).
There are related works in the domains of opponent modeling (Hsieh and Sun 2008; Schadd, Bakkes, and Spronck
2007; Kabanza et al. 2010). The main methods used to theseends are case-based reasoning (CBR) and planning or plan
recognition (Aha, Molineaux, and Ponsen 2005; Ontañónet al. 2008; Ontañón et al. 2007; Hoang, Lee-Urban, andMuñoz-Avila 2005; Ramı́rez and Geffner 2009). There areprecedent works of Bayesian plan recognition (Charniak andGoldman 1993), even in games with (Albrecht, Zukerman,
and Nicholson 1998) using dynamic Bayesian networks torecognize a user’s plan in a multi-player dungeon adventure.
Also, Chung, Buro, and Schaeffer (2005) describe a MonteCarlo plan selection algorithm applied to Open RTS.
Aha, Molineaux, and Ponsen (2005) used CBR to perform
dynamic plan retrieval extracted from domain knowledge in
Wargus (Warcraft II clone). Ontañón et al. (2008) base theirreal-time case-based planning (CBP) system on a plan dependency graph which is learned from human demonstration. In (Ontañón et al. 2007; Mishra, Ontañón, and Ram2008), they use CBR and expert demonstrations on Wargus.
They improve the speed of CPB by using a decision tree toselect relevant features. Hsieh and Sun (2008) based theirwork on CBR and Aha, Molineaux, and Ponsen (2005) andused StarCraft replays to construct states and building sequences. Strategies are choices of building construction order in their model.
Schadd, Bakkes, and Spronck (2007) describe opponent
modeling through hierarchically structured models of the
opponent behaviour and they applied their work to the
Spring RTS (Total Annihilation clone). Hoang, Lee-Urban,
and Muñoz-Avila (2005) use hierarchical task networks(HTN) to model strategies in a first person shooter with thegoal to use HTN planners. Kabanza et al. (2010) improve theprobabilistic hostile agent task tracker (PHATT (Geib andGoldman 2009), a simulated HMM for plan recognition) byencoding strategies as HTN.
The work described in this paper can be classified asprobabilistic plan recognition. Strictly speaking, we present
model-based machine learning used for prediction of plans,
while our model is not limited to prediction. The plans arebuild trees directly learned from the replays (unsupervised
learning).

Bayesian Programming
Probability is used as an alternative to classical logic andwe transform incompleteness (in the experiences, the perceptions or the model) into uncertainty (Jaynes 2003). We
introduce Bayesian programs (BP), a formalism that can beused to describe entirely any kind of Bayesian model, subsuming Bayesian networks and Bayesian maps, equivalent
to probabilistic factor graphs (Diard, Bessière, and Mazer

2003). There are mainly two parts in a BP, the descriptionof how to compute the joint distribution, and the question(s)that it will be asked.
The description consists in explaining the relevant variables {X 1 , . . . , X n } and explain their dependencies by decomposing the joint distribution P (X 1 . . . X n |δ, π) with existing preliminary knowledge π and data δ. The forms ofeach term of the product specify how to compute their distributions: either parametric forms (laws or probability tables, with free parameters that can be learned from data δ)or recursive questions to other Bayesian programs.
Answering a question is computing the distribution
P (Searched|Known), with Searched and Known two
disjoint subsets of the variables. P (Searched|Known)P
P (Searched, F ree, Known)= F ree
P (Known)X
1= ×
P (Searched, F ree, Known)Z
F ree

General Bayesian inference is practically intractable, butconditional independence hypotheses and constraints (statedin the description) often simplify the model. Also, there aredifferent well-known approximation techniques, for instanceMonte Carlo methods and variational Bayes (Beal 2003). In
this paper, we will use only simple enough models that allow
complete inference to be computed in real-time.






V ariables







Desc. Spec.(π) Decomposition
F orms (P arametric or P rogram)

BP






Identif ication (based on δ)Question

For the use of Bayesian programming in sensory-motor systems, see (Bessière, Laugier, and Siegwart 2008). For its
use in cognitive modeling, see (Colas, Diard, and Bessière2010). For its first use in video games (first person shooter
gameplay, Unreal Tournament), see (Le Hy et al. 2004).

Methodology
Build/Tech Tree Prediction Model
Our predictive model is a Bayesian program, it can be seenas the “Bayesian network” represented in Figure 2. It is a
generative model and this is of great help to deal with theparts of the observations’ space where we do not have toomuch data (RTS games tend to diverge from one another as
the number of possible actions grow exponentially). Indeed,
we can model our uncertainty by putting a large standard
deviation on too rare observations and generative models
tend to converge with fewer observations than discriminative ones (Ng and Jordan 2001). Here is the description of
our Bayesian program:
Variables• BuildT ree ∈ [∅, building1 , building2 , building1 ∧building2 , techtrees, . . . ]: all the possible building trees
for the given race. For instance {pylon, gate} and{pylon, gate, core} are two different BuildT rees.

Building
Building
Building
Building
ssss

Observations

TechTreeλTimeFigure 2: Graphical representation of the tech tree prediction
Bayesian model• Observations: Oi∈J1...N K ∈ {0, 1}, Ok is 1/true if wehave seen (observed) the kth building (it can have been
destroyed, it will stay “seen”).
• λ ∈ {0, 1}: coherence variable (restraining BuildT ree topossible values with regard to O1:N )• T ime: T ∈ J1 . . . P K, time in the game (1 second resolution).
At first, we generated all the possible (according to thegame rules) BuildT ree values (in StarCraft, between ≈ 500
and 1600 depending on the race without the same building
twice). We observed that a lot of possible BuildT ree values are too absurd to be performed in a competitive match
and were never seen during the learning. So, we restricted
BuildT ree to have its value in all the build trees encountered in our replays dataset and we added multiple instancesof the basic unit producing buildings (gateway, barracks),
expansions and supply buildings (depot, pylon, “overlord”
as a building). This way, there are 810 build trees for Terran, 346 for Protoss and 261 for Zerg (learned from ≈ 3000
replays for each race).
Decomposition The joint distribution of our model is thefollowing:=

P (T, BuildT ree, O1 . . . ON , λ)P (BuildT ree)P (O1:N )P (λ|BuildT ree, O1:N )P (T |BuildT ree)A BuildT ree value (buildT ree) is compatible withthe observations if it covers them fully. For instance,
BuildT ree = {pylon, gate, core} is compatible witho#core = 1 but it is not compatible with o#f orge = 1.
In other words, buildT ree is incompatible with o1:N iff{o1:N \{o1:N ∧ buildT ree}} =6 ∅.
• P (T |BuildT ree) are “bell shape” distributions (discretized normal distributions). There is one bell shapeover T ime per buildT ree. The parameters of these discrete Gaussian distributions are learned from the replays.
Identification(learning) The
learningofthe
P (T |BuildT ree) bell shapes parameters takes into
account the uncertainty of the buildT rees for which wehave few observations. Indeed, the normal distribution
P (T |buildT ree) begins with a high σ 2 , and not a “Dirac”
with µ on the seen T value and sigma = 0. This accounts
for the fact that the first(s) observation(s) may be outlier(s).
This learning process is independent on the order of thestream of examples, seeing point A and then B or B andthen A in the learning phase produces the same result.
Questions The question that we will ask in all the benchmarks is:
P (BuildT ree|T = t, O1:N = o1:N , λ = 1)
∝ P (BuildT ree).P (o1:N )×P (λ|BuildT ree, o1:N )×P (t|BuildT ree)
Note that if we see P (BuildT ree, T ime) as a plan, asking P (BuildT ree|T ime) for ourselves boils down to use
our “plan recognition” mode as a planning algorithm, which
could provide good approximations of the optimal goal set(Ramı́rez and Geffner 2009). This gives us a distribution on
the build orders that we can follow.

This can also be see as Figure 2.
Forms• P (BuildT ree) is the prior distribution on the build trees.
It can either be learned from the labeled replays (histograms) or set to the uniform distribution, as we did.
• P (O1:N ) is unspecified, we put the uniform distribution(we could use a prior over the most frequent observations).
• P (λ|BuildT ree, O1:N ) is a functional Dirac that restricts
BuildT ree values to the ones than can co-exist with theobservations.
P (λ = 1|buildT ree, o1:N )= 1 if buildT ree can exist with o1:N
= 0 else

Figure 3: Evolution of P (BuildT ree|Observations...)in Time (seen/observed buildings on the x-axis). Only
BuildT rees with a probability > 0.01 are shown.

Results
All the results presented in this section represents the ninematch-ups (races combinations) in 1 versus 1 (duel) of StarCraft. We worked with a data-set of 8806 replays (≈ 1000
per match-up) of highly skilled human players and we performed cross-validation with 9/10th of the dataset used forlearning and the remaining 1/10th of the dataset used forevaluation. Performance wise, the learning part (with ≈1000 replays) takes around 0.1 second on a 2.8 Ghz Core
2 Duo CPU (and it is serializable). Each inference (question) step takes around 0.01 second. The memory footprint
is around 3 Mb on a 64 bits machine. Our unoptimized C++
implementation is free software2 .

Predictive PowerThe “reconstructive” power of our model is shown in Table 1
with d (distance to actual building tree) for increasing noiseat fixed k = 0.
Figure 4 displays first (on top) the evolution of the error rate (distance to actual building) with increasing random noise (from 0% to 80%, no missing observations to
8 missing observations over 10). We consider that having
an average distance to the actual build tree a little over 1 for
80% missing observations is a success. We think that this robustness is due to P (T |BuildT ree) being precise with theamount of data that we used. Secondly, Figure 4 displays (atthe bottom) the evolution of the predictive power (number ofbuildings ahead from the build tree that it can predict) withthe same increase of noise.

The predictive power of our model is measured by the k > 0
next buildings for which we have “good enough” predictionof future build trees in:
P (BuildT reet+k |T = t, O1:N = o1:N , λ = 1)
“Good enough” is measured by a distance d to the actual build tree of the opponent that we tolerate. We
used a set
S distance: Td(bt1 , bt2 ) = card(bt1 ∆bt2 ) =card((bt1 bt2 )\(bt1 bt2 )). One less or more building in
the prediction is at a distance of 1 from the actual build
tree, the same buildings except for one difference is at a distance of 2 (that would be 1 is we used tree edit distancewith substitution). We call d(best, real) =“best” the distance between the most probable build tree and the one that
actually happened. We call d(bt, real) ∗ P (bt)=“mean” themarginalized distance between what was inferred balanced(variable bt) by the probability of inferences (P (bt)). Notethat this distance is always over all the build tree (and not
only the next inference). This distance was taken into account only after the fourth (4th) building so that the firstbuildings would not penalize the prediction metric (the firstbuilding can not be predicted 4 buildings in advance).
We used d = 1, 2, 3, with d = 1 we have a very strong
sense of what the opponent is doing or will be doing, withd = 3, we may miss one key building or have switched atech path. We can see in Table 1 that with d = 1 and without
noise, our model predict in average more than one building
in advance what the opponent will build next if we use only
its best prediction, and almost four buildings in advance if
we marginalize over all the predictions. Of course, if we accept more error, the predictive power (number of buildings
ahead that our model is capable to predict) increases, up to
6.12 for d = 3 without noise.

Robustness to NoiseThe robustness of our algorithm is measured by the qualityof the predictions of the build trees for k = 0 (reconstruction) or k > 0 (prediction) with missing observations in:
P (BuildT reet+k |T = t, O1:N = partial(o1:N ), λ = 1)2

https://github.com/SnippyHolloW/OpeningTech

Figure 4: Evolution of our metrics with increasing noise,from 0 to 80%. The top graphic shows the increase in distance between the predicted build tree, both most probable(“best”) and marginal (“mean”) and the actual one. The bottom graphic shows the decrease in predictive power: numbers of buildings ahead (k) for which our model predict abuild tree closer than a fixed distance/error (d).

Table 1: Summarization of the main results/metrics, one full results set for 10% noise
k for d = 1

k for d = 2

k for d = 3

d(best, real)d for k = 0
d(bt, real) ∗ P (bt)best“mean”

best“mean”

best“mean”

0.535
0.313
1.051
0.397
0.341
0.516
0.608
1.043
0.890
0.521
0.486
0.399
0.578
0.341
1.043
0.610
0.381
1.062
0.670
0.431
1.131
0.740
0.488
1.257
0.816
0.534
1.354
0.925
0.586
1.414
1.038
0.633
1.683
1.134
0.665
1.876

0.870
0.574
1.296
0.646
0.654
0.910
0.978
1.310
1.250
0.933
0.834
0.694
0.912
0.646
1.310
0.949
0.683
1.330
1.003
0.749
1.392
1.068
0.820
1.497
1.145
0.864
1.581
1.232
0.918
1.707
1.314
0.994
1.871
1.367
1.027
1.999

1.193
0.861
2.176
1.061
0.991
0.882
0.797
0.983
1.882
0.89
0.765
0.9
1.017
0.765
1.882
0.900
0.686
1.697
0.747
0.555
1.394
0.611
0.44
1.201
0.493
0.363
1
0.400
0.22
0.840
0.277
0.16
0.537
0.156
0.06
0.333

3.991
2.8
5.334
2.795
2.911
3.361
4.202
4.75
4.815
3.82
3.156
2.52
3.592
2.52
4.815
3.263
2.3
4.394
2.902
2.03
3.933
2.529
1.65
3.5
2.078
1.33
2.890
1.738
1.08
2.483
1.291
0.79
1.85
0.890
0.56
1.216

2.760
2.239
3.681
2.204
2.017
2.276
2.212
3.45
3.327
2.48
2.260
2.12
2.483
2.017
3.45
2.256
1.858
3.133
2.055
1.7
2.638
1.883
1.535
2.516
1.696
1.444
2.4
1.531
1.262
2
1.342
1.101
1.7
1.144
0.929
1.4

5.249
3.97
6.683
3.877
4.053
4.489
5.171
5.85
5.873
4.93
4.373
3.53
4.683
3.53
5.873
4.213
3.25
5.336
3.801
3
4.722
3.357
2.61
4.226
2.860
2.24
3.613
2.449
1.98
3.100
2.039
1.653
2.512
1.689
1.408
2.033

3.642
3.13
4.496
2.897
2.929
3.053
3.060
3.833
4.134
3.16
3.139
2.71
3.213
2.71
4.134
2.866
2.44
3.697
2.534
2.22
3.176
2.20
1.94
2.773
1.972
1.653
2.516
1.724
1.448
2.083
1.470
1.244
1.85
1.283
1.106
1.5

6.122
4.88
7.334
4.693
5.079
5.308
5.959
6.45
6.546
5.54
5.173
4.38
5.459
4.38
6.546
4.873
3.91
5.899
4.375
3.58
5.268
3.827
3.09
4.672
3.242
2.61
3.941
2.732
2.22
3.327
2.270
1.83
2.714
1.831
1.66
2.176

measure

80%

70%

60%

50%

40%

30%

20%

10%

0%

noise
average
min
max
PvP
PvT
PvZ
TvP
TvT
TvZ
ZvP
ZvT
ZvZ
averageminmax
averageminmax
averageminmax
aerageminmax
averageminmax
averageminmaxverageminmax
averageminmaxConclusions

So that we could ask this (new) model:
P (BuildT reebot |obsop,1:N , time, λ = 1)

Discussion and Perspectives
Developing beforehand a RTS game AI that specificallydeals with whatever strategies the players will come up
is very hard. And even if game developers were willing to patch their AI afterwards, it would require a really modular design and a lot of work to treat eachstrategy. With our model, the AI can adapt to the evolutions in play by learning its parameters from the replay, it can dynamically adapt during the games by asking P (BuilT ree|Observations, T ime, λ = 1) and even
P (T echT ree|Observations, T ime, λ = 1) if we add units
and technology upgrades to buildings. This would allow
for the bot to dynamically choose/change build orders andstrategies.
This work can be extended by have a model for the twoplayers (the bot/AI and the opponent):
P (BuildT reebot , BuildT reeop , Obsop,1:N , T ime, λ)This would allow for simple and dynamic build tree adaptation to the opponent strategy (dynamic re-planning), by theinference path:∝

P (BuildT reebot |obsop,1:N , time, λ = 1)
BuildT reeop P (BuildT reebot |BuildT reeop ) (learned)

P×P (BuildT reeop ).P (oop,1:N ) (priors)×P (λ|BuildT reeop , oop,1:N ) (consistency)×P (time|BuildT reeop ) (learned)
That way, one can ask “what build/tech tree should I go
for against what I see from my opponent”, which tacitly seeks the distribution on BuildT reeop to break thecomplexity of the possible combinations of Obs1:N . It is
possible to not marginalize over BuildT reeop , but consider only the most probable(s) BuildT reeop , for computing efficiency. A filter on BuildT reebot (as simple asP (BuildT reetbot |BuildT reet−1bot ) can and should be added
to prevent switching build orders or strategies too often.
The Bayesian model presented in this paper for opponent
build tree prediction can be used in two main ways:• as the corner stone of adaptive (to the opponent’s dynamic
strategies) RTS game AI:– without noise in the case of built-in game AI (cheat).
– with noise in the case of RTS AI tournaments (as AIIDE’s) of matches against human players.
• as a commentary assistant (null noise, prediction of techtrees), showing the probabilities of possible strategies as
Poker commentary software do.
Finally, a hard problem is detecting the “fake” builds ofvery highly skilled players. Indeed, some progamers havebuild orders which purpose are to fool the opponent into
thinking that they are performing opening A while they are
doing B. For instance they could “take early gas” leading the
opponent to think they are going to do tech units, not gather
gas and perform an early rush instead.

Conclusion
We presented a probabilistic model computing the distribution over build or tech trees of the opponent in a RTS game.
This model yields high quality prediction results (up to 4buildings ahead with a total build tree distance less than 1,
see Table 1) and shows a strong robustness to noise with apredictive power of 3 buildings ahead with a build tree distance less than 1 under 30% random noise (a quality that
we need for real setup/competitive games). It can be used in
production thanks to its low computational (CPU) and memory footprint. Our implementations is free software and canbe found online3 . We will use this model (or an upgradedversion of it) in our StarCraft AI competition entry bot as itenables it to deal with the incomplete knowledge gatheredfrom scouting.

References
Aha, D. W.; Molineaux, M.; and Ponsen, M. J. V. 2005.
Learning to win: Case-based plan selection in a real-time
strategy game. In ICCBR, 5–20.
Albrecht, D. W.; Zukerman, I.; and Nicholson, A. E. 1998.
Bayesian models for keyhole plan recognition in an adventure game. User Modeling and User-Adapted Interaction
8:5–47.
Beal, M. J. 2003. Variational algorithms for approximate
Bayesian inference. PhD. Thesis.
Bessière, P.; Laugier, C.; and Siegwart, R. 2008. Probabilistic Reasoning and Decision Making in Sensory-Motor
Systems. Springer Publishing Company, Incorporated.
Charniak, E., and Goldman, R. P. 1993. A Bayesian modelof plan recognition. Artificial Intelligence 64(1):53–79.
Chung, M.; Buro, M.; and Schaeffer, J. 2005. Monte Carlo
Planning in RTS Games. In CIG (IEEE).
3
https://github.com/SnippyHolloW/
OpeningTech/

Colas, F.; Diard, J.; and Bessière, P. 2010. Common
Bayesian models for common cognitive issues. Acta Biotheoretica 58:191–216.
Diard, J.; Bessière, P.; and Mazer, E. 2003. A survey of probabilistic models using the Bayesian programming methodology as a unifying framework. In Conference on Computational Intelligence, Robotics and Autonomous Systems,
CIRAS.
Geib, C. W., and Goldman, R. P. 2009. A probabilistic plan
recognition algorithm based on plan tree grammars. Artificial Intelligence 173:1101–1132.
Hoang, H.; Lee-Urban, S.; and Muñoz-Avila, H. 2005. Hierarchical plan representations for encoding strategic gameai. In AIIDE, 63–68.
Hsieh, J.-L., and Sun, C.-T. 2008. Building a player strategy
model by analyzing replays of real-time strategy games. In
IJCNN, 3106–3111.
Jaynes, E. T. 2003. Probability Theory: The Logic of Science. Cambridge University Press.
Kabanza, F.; Bellefeuille, P.; Bisson, F.; Benaskeur, A. R.;
and Irandoust, H. 2010. Opponent behaviour recognition
for real-time strategy games. In AAAI Workshops.
Le Hy, R.; Arrigoni, A.; Bessiere, P.; and Lebeltel, O. 2004.
Teaching Bayesian behaviours to video game characters.
Robotics and Autonomous Systems 47:177–185.
Mishra, K.; Ontañón, S.; and Ram, A. 2008. Situation assessment for plan retrieval in real-time strategy games. In
ECCBR, 355–369.
Ng, A. Y., and Jordan, M. I. 2001. On discriminative vs.
generative classifiers: A comparison of logistic regression
and naive bayes. In NIPS, 841–848.
Ontañón, S.; Mishra, K.; Sugandh, N.; and Ram, A. 2007.
Case-based planning and execution for real-time strategy
games. In Proceedings of the 7th International conference on Case-Based Reasoning: Case-Based Reasoning Research and Development, ICCBR ’07, 164–178. SpringerVerlag.
Ontañón, S.; Mishra, K.; Sugandh, N.; and Ram, A. 2008.
Learning from demonstration and case-based planning forreal-time strategy games. In Prasad, B., ed., Soft Computing
Applications in Industry, volume 226 of Studies in Fuzzinessand Soft Computing. Springer Berlin / Heidelberg. 293–310.
Ramı́rez, M., and Geffner, H. 2009. Plan recognition asplanning. In Proceedings of the 21st international joint conference on Artifical intelligence, 1778–1783. Morgan Kaufmann Publishers Inc.
Schadd, F.; Bakkes, S.; and Spronck, P. 2007. Opponent
modeling in real-time strategy games. In GAMEON, 61–70.
Weber, B. G., and Mateas, M. 2009. A data mining approachto strategy prediction. In CIG (IEEE).