Part 1: Micro-management
Part 2: Enemy strategy prediction

Bayesian Programming Applied to Starcraft
Micro-Management and Opening Recognition

Gabriel Synnaeve and Pierre Bessière
University of Grenoble
LPPA @ Collège de France (Paris)
E-Motion team @ INRIA (Grenoble)

September 3, 2011

1/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Introduction
StarCraft
Our Approach

Part 1: Micro-Management
Problem
Model
Results

Part 2: Enemy Strategy Prediction
Problem
Model
Results

Conclusion
Summing-Up
Future Work

2/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Starcraft: Broodwar
Starcraft (January 1998) + Broodwar (exp., November 1998)

3/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Pro gaming and competitions
eSports, sponsorship, tournaments’ dotations, salaries (Korea)

4/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Starcraft in numbers
12 years of competitive play
200 to 300 actions per minute amongst pro gamers
10 millions licenses sold (4.5 in South Korea)
160 BPM: reached rates of pro gamers hearts
4.5+ millions licenses sold for Starcraft II

5/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Real-Time Strategy Game(“shamelessly stolen with permission” from Ben Weber, UCSC)
The models and approaches presented here are also valid in
Total Annihilation, Age of Empires and Warcraft 2.
6/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Interest for RTS games
Chess / Go / Rock-paper-scissors
Real-time (1/24th second per micro-turn)
Machine learning ready (supervised, unsupervised,
reinforcement)
AI competitions

7/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

low levelhigh level

Problems to tackle

Strategy: tech tree, army composition~3 minTactics: army positioning~30 sec

Micro-management: units control~1 sec8/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Transmute incompleteness into uncertainty

high level

low level

Incompleteness=⇒Uncertainty

Many low level moves
achieving the samehigh level goal

Considering the units as
individual BayesianrobotsFog of war (limited
sight)

Seen units (viewed
units filter)

Partial knowledge of
opponent’s force (sizeand composition)

Probabilistic inference,machine learning from
replays

9/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Bayesianism

10/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

A Bayesian program structure






VariablesSpec.(π) Decomposition

Desc.

Forms (Parametric or Program)

BP








Identification (based on δ)Question










P(Searched|Known)

PFree P(Searched, Free, Known)==

P(Known)
1
Z

×X

P(Searched, Free, Known)

Free

11/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

A Bayesian program example: the Kalman filter
















Specification

Description





































Question



















 Identification

Variables:
S0 , . . . St , O0 , . . . , Ot
Decomposition:
P(S0 , . . . , St , O0 , . . . Ot )= P(S0 ).P(O0 |S0 ).Πti=1 [P(Si |Si−1 ).P(Oi |Si )]Parametric forms:
P(S0 ) = G(S0 , µ, σ)P(Si |Si−1 ) = G(Si , A.Si−1 , Q)
P(Oi |Si ) = G(Oi , H.Si , R)
Learning from instances
P(St |O0 , . . . , Ot )12/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Machine learnings
from replays(parameters of
predictive models)
reinforcement(exploration ofparameters space
for the Bayesianrobots)online (adapt toparticular
opponent)

13/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Model overview

Not a perfect (nor what-we-want-in-the-end) model, but theactual, implemented, bot model.

14/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Part 1

Micro-management

15/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Micro-management in RTS games
Micro-management is the art of maximizing the efficiency of
your units:
Focus-fire enemy units to reduce their fire power,
Move away damaged units (“dancing”),
Allow damaged units to flee (collisions), best placements
w.r.t. wanted/best target possible.

Open question: for humans, another objective is to rank theactions by importance (APM limit).

16/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Serious Stuff (real-time Chess)
24 game simulation FPS, fine grained discrete world (almost
continuous), branching factor out of control, uncertainty
about opponent’s movements.

⇒ “No” computable optimal solution.

Our take: units as independant Bayesian robots.

17/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Where are we?

Incomplete
Data
Infer Opening /(and then) TechTree

Enemy Unitsfiltered map
Enemy Tactics

Units production

Our Tactics

Units Group

Units Group

Sensory inputs
Production Manager/ Planner / Optim.

BayesianUnit
BayesianUnit
BayesianUnit
BayesianUnit

Goals

BayesianUnit
BayesianUnit
BayesianUnit
BayesianUnit

Here

18/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

The Bayesian unit (1)The workers are not controlled as (Bayesian) sensory motor
systems as their tasks are extremely simple.
Modal unit, can be simplified as HFSM:
Scout
Move (small / large group)
In position
Fight:- Attack- Fight-move- Flee} When not attacking

19/67

Problem
Model
Results

Part 1: Micro-management
Part 2: Enemy strategy prediction

The Bayesian unit (2) [Firing]

Scout
Move
Fight

Fire

ReloadFlee
Move

Focus-firing heuristic (simplified): Fire on units that do themost damages, have the less hit points, and take the mostdamages from their attack type.
Inputs to our unit:
wanted/best target: best target w.r.t heuristic
immediate target: best target in firing range

20/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

The Bayesian unit (3) [Moving/Fleeing]
Mode dependant influences,as:“statically” occupied
tiles“dynamically” occupied
tiles
heightdamage map (+gradient)
pathfinder
...

21/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Fight-move example (1)Variables:
Dir n values with n = #{possible directions},
Diri∈{possible directions} ∈ {T , F},
Obji ∈ {T , F}, direction of the objective (quantified)Dami ∈ {no, low, med, high}, subjective potential field,
Ai &Ei ∈ {none, small, big}, allied & enemy units presence,
Occi ∈ {no, terrain, building}, “static” occupation
Decomposition:
P(Dir , Dir1:n , Obj1:n , Dam1:n Rep1:n , Occ1:n )= Πni=1

P(Diri |Dir ) // Dir = i ⇒ 1, Dir 6= i ⇒ 0.P(Obji |Diri ).P(Dami |Diri ).P(Ai |Diri ).P(Ei |Diri.P(Occi |Diri )22/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Fight-move example (2)Parameters:
They are hand-specified for the moment but should be learned
through task-specific maps and maximization (EA/GP, RL).
Questions:
Our pathfinder gives us Obj1:n , the damage map Dam1:n , thesize (or number) of other units in tile/direction i A/E1:n , etc.
P(Dir |Obj1:n , Dam1:n , A1:n , E1:n , Occ1:n )23/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Fight-move example (3)Video: a fight in AIIDE micro-tournament setup 2 (decisionsof movements taken by sampling on Dir):

24/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Bayesian flocking (simplified)
Variables:
Diri∈{possible directions} ∈ {T , F},
Obji ∈ {T , F},
Atti ∈ {too close, close, far , too far }, closeness to allied
units for the ith direction (for instance),
Parameters:
P(Atti |Diri ) can be learned with maze-like maps and on theobjective to minimize the time-to-completion (will find the
optimal flocking distance/attraction-repulsion):

25/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Repulsion applied “in position”(2 videos which can be found on youtube
http://www.youtube.com/snippyhollow#p/a/u/1/sMyF_PlDqFo
http://www.youtube.com/snippyhollow#p/a/u/2/mvv9kUntLHU )Variables: Diri , Obji , Repi , but with different parameters forP(Repi |Diri ) (can be learned also), and a different objective:
the wanted unit position.

26/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

AIIDE 2010 Tournament 1
7 participants
Could not take part (technicalproblem)
FreSC (France, Epita team) won
Played against FreSC: draw! (0-3,3-0, draw (host wins))

27/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Benchmarking the movements efficiency
We designed/implemented a bot without the movements
advantage to highlight the increase in value of our model: atarget selection heuristic only bot (focus-firing bot).
Big Populations Blunder: Collisions

28/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Simplest solution
Sample in the Dir distribution!

(Note that our AIIDE 2010 bot was using the “pick best” policy.)

29/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Recap. Table

OAI
HOAI
BAIPB
BAIS

OAI
(50%)
59%
93%
93%

HOAI
64%
(50%)
97%
95%

BAIPB
9%
11%
(50%)
76%

BAIS
3%
6%
3%
(50%)

Win ratios over at least 200 battles of Original AI, Heuristic
Only AI, Bayesian AI Pick Best, Bayesian AI Sampling in two
mirror setups: 12 and 36 ranged units. Read line vs column
win %.

30/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Compulsory Mike’s Slidefor 59% wins:vv = c ( rep(100 , 118) , rep (0 , 200−118))
t . test ( x=vv , mu=50)
One Sample t−testdata : vv
t = 2.5814, df = 199,199 p−value = 0.01056
alternative hypothesis : true mean i s not equal to 50
95 percent confidence i n t e r v a l :52.12475 65.87525
sample estimates :mean of x
59(>60% with 200+ games are all significative results)

31/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

A word on parameters
Parameters can be hand specified, so we can provide gamedesigners with a slider on a λ or µ parameter controlling the
distribution on the model’s probability tables. For instance,P(Dmgi |Diri = T ) controls the risk-taking/bravery/temerity of
the unit. Game designers can toy around with behaviours thisway.

In the framework of a competition, we can learn theseparameters to maximize the objective. Being it amicro-management only or a complete game (objectives
differ a little: the higher tactic level can decide to sacrifice agroup on an objective).

32/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Next?
A lot of possible improvements/follow-ups:
Other sensory inputs (heights/tactical positions...),
Learning the tables (EA/GP/RL for big combinations) w.r.t.
situations,
Either a case-based approach for situation recognition orsituations recognition tables fusion,
Group controllability vs unit autonomy (≈ unit
recklessness/sacrifice).

33/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Part 2Strategy Prediction

34/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Definition
Infer what the enemy opening1 is from partial observations(because of the fog of war) to be able to deal with it, or
counter it if we can.

(Another problem is then to dynamically adapt our own
opening/strategy.)

1

opening = first strategy = first units + first tactical move (as in Chess),
we will reserve the term strategy for army composition + long term tacticalgoals)

35/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Examples of openings (cheeses)
All-in fast dark templars:
Produce 2 dark templars (permanently cloaked unit type) as
fast as possible to destroy the enemy while he can not detectthem. Attempt to finish the game with a very specific (andweak when countered) unit deep in the tech path.

All-in 2 gates zealots rush:
Produce only zealots (lowest tech Protoss military unit),
stream them once a critical attack mass (6+) is reached.
Attempt to finish the game before the opponent’s economy ortechnological ROI kicked in.

36/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Where are we?

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

Here

37/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

A word on the meta-gameOpenings prior probabilities are influenced by maps andprevious games (meta-game) in the same match and/or
against the same opponent (pros tourneys: BO5+). We will
not consider it for the rest of this work. This is a huge
mistake2 , as it is central to StarCraft gameplay balance, but
we play by the rules of current bots tournaments (BO1).

2

it is very easy to adapt in our model: just put/change a prior

38/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Replays
Record all the actions of the player so that the game can be
deterministically re-simulated (random generators seeds areserialized).

Supervised learning model:
Need for the replays to be annotated with openings.
Used Ben Weber (UCSC) dataset (annotated with techtree deployment order / rules) for comparisons purposes:
9316 games, between 500 and 1300 per match-up.
Can use other (more) replays (as we can automaticallyannotated them).

39/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Replays openings labelingas many EM as labels

replaysreplaysreplaysreplayjoint

replays

EM 2 clusters

replays +multiplelabelsscore filtering

replays +1 label /replaypositive labeling 1 cluster vs others
different features for different labels

Semi-supervised labeling: manually extracted features +clustering + annotation heuristic (“earliest happening” clusteris labeled positively).

40/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Features selection
Features selected for each label (opening value) that we wantto put. From experts knowledge.
For instance:
what is important for the “fast dark templars” opening is
the time of the first production of a dark templar.
what is important for the “2 gates rush” opening are thetime of constructions of the first and second gate, andthe time of production of the first zealot.

41/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Clustering (1), PvT Fast DT opening
Tried many techniques, used Mclust (R) full EM (best results):

42/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Clustering (2), PvP Speed zealots opening

43/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Clustering (3), ZvP Fast mutas opening

44/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Bayesian Model
Opening

LastOpening

Building
Building
Building
Building
ssss

Observations

λBuildTree

Time

45/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Variables
BuildTree ∈ [∅, building1 , building2 , building1 ∧building2 , buildtrees, . . . ]N Observations: Oi∈J1...NK ∈ {0, 1}, Ok is 1 (true)
Opening: Opt ∈ [opening1 . . . openingM ]LastOpening: Opt−1 ∈ [opening1 . . . openingM ]λ ∈ {0, 1}: coherence variable (restraining BuildTree topossible values with regard to OJ1...NK )Time: T ∈ J1 . . . PK

46/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

BuildTree variable by example
Pylon

Gateway ForgeCore

CannonStargate Robotics Adun
BuildTree ∈ {∅, {Pylon}, {Pylon, Gateway}, {Pylon, Forge},{Pylon, Gateway, Forge}, {Pylon, Gateway, Core}, . . . }47/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Decomposition

P(T , BuildTree, O1 . . . ON , Opt , Opt−1 , λ)= P(Opt |Opt−1 )P(Opt−1 )P(BuildTree|Opt )P(OJ1...NK )P(λ|BuildTree, OJ1...NK )P(T |BuildTree, Opt )48/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Forms
P(Opt |Opt−1 ), a filter so that the previous inference
impacts the current one (functional Dirac)
P(BuildTree|Opt ), histogram learned from replays
P(λ|BuildTree, OJ1...NK ) restricts BuildTree values to theones that can co-exist with the observations
P(T |BuildTree, Opt ) are discretized normal distributions.
There is one bell shape per (opening, buildTree) couple.
The parameters of these discrete Gaussian distributions
are learned from the labeled replays.

49/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

A note on identification/learning
Learning of the P(T |BuildTree, Opt ) bell shapes
parameters takes into account the uncertainty of thecouples (buildTree, opening) for which we have few
observations by starting with a high σ 2 .
Learning on human replays for bots opening recognition
does not work well. We had to impose a large minimal σ 2(more robustness at the detriment of precision).

50/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Question

P(Op|T = t , OJ1...NK = oJ1...NK , λ = 1)

×P

∝ P(Op).P(oJ1...NK )BuildTree P(λ|BuildTree, oJ1...NK ).P(BuildTree|Op).P(t|BuildTree, Op)

Note: P(BuildTree|Opening, Time)
would use the plan recognition model as a planning model.

51/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Evolution of predictions (1)Ben’s labels

52/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Evolution of predictions (2)Our labels

53/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Low CPU and memory footprint

Race

T
T
P
P
Z
Z

# Games
1036
567
1021
542
1028
896

Learning time

0.197844
0.110019
0.13513
0.056275
0.143851
0.089014

Inference µ0.0360234
0.030129
0.0164457
0.00940027
0.0150968
0.00796715

Inference σ 20.00892601
0.00738386
0.00370478
0.00188217
0.00334057
0.00123551

54/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

In game prediction(Video: watch the right of the screen.)
http://www.youtube.com/watch?v=7ycEkK54lTg

Used it in BroodwarBotQ, free software (BSD 3-clauses):
http://github.com/SnippyHolloW/BroodwarBotQ

55/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Evaluation metrics
the final prediction, opening that is predicted at the endof the test.
the online twice (OT), counts the openings that haveemerged as most probable twice during a test (not due tonoise),
the online once > 3 (OO3), counts the openings that haveemerged as most probable openings after 3 minutes(meaningful information).

56/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Recap. performance tablematch-up

PvP
PvT
PvZ
TvP
TvT
TvZ
ZvP
ZvT
ZvZ
overall

Weber and Mateas’ labels
5 minutes
10 minutes
final
OO3
final
OT
OO3
0.65
0.59
0.69
0.69
0.71
0.75
0.71
0.78
0.86
0.83
0.73
0.66
0.8
0.86
0.8
0.69
0.76
0.6
0.75
0.77
0.57
0.65
0.5
0.55
0.62
0.84
0.81
0.88
0.91
0.93
0.63
0.64
0.87
0.82
0.89
0.59
0.59
0.68
0.69
0.72
0.69
0.67
0.73
0.74
0.77
0.68
0.68
0.73
0.76
0.78

5 minutes
final
OO3
0.78
0.68
0.62
0.69
0.61
0.62
0.50
0.54
0.72
0.77
0.71
0.77
0.39
0.52
0.54
0.61
0.83
0.85
0.63
0.67

Our labels
10 minutes
final
OT
OO3
0.83
0.83
0.83
0.62
0.73
0.72
0.66
0.66
0.69
0.5
0.6
0.69
0.68
0.89
0.84
0.72
0.88
0.86
0.35
0.6
0.57
0.52
0.67
0.62
0.81
0.89
0.94
0.63
0.75
0.75

57/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Tolerance to noise (1)Zerg (versus Protoss) opening recognition with increasing
noise (15 missing attributes ↔ 93.75% mission information).

58/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Tolerance to noise (2)Protoss (versus Zerg) opening recognition with increasing
noise (15 missing attributes ↔ 88.23% mission information).

59/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results“Ours is bigger than yours” compulsory slideCompared to previous work by Ben Weber [CIG 2009]:
Works with partial information (fog of war),
Resists quite well to noise,
Gives a distribution, not just a decision (that’s how highlevel human player think).

Kudos to Ben, who was a nice enough pioneer to distribute his
dataset.

60/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Problem
Model
Results

Limitations
Dependant on the labeling: while I think ours is better
than Ben’s, it’s not systematically the case,Can not deal with multiple-labels (Unknown label contains
some unexploited information),
Should use some other (sometimes more advanced, notnecessarily more numerous) features.

61/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

low levelhigh level

Things that work

Strategy: tech tree, army composition~3 minTactics: army positioning~30 sec

Micro-management: units control~1 secMicro-management “in general” is quite efficient androbust (could be more optimized and more controllable),
Opening/Strategy recognition/prediction gives goodenough results online.

62/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Possible Improvements
Direct possible improvements:
Micro-management optimization for particularsituations through learning (see Part 1),
Learning the parameters of the opening recognition
model from a bigger dataset,
Learning the parameters of the opening recognition
model from bot vs bot replays,
Add Openingt+1 and so the P(Openingt+1 |Observationst )question explicitly.

63/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Next? (1)
If we want a bot capable to compete at the highest level
against bots (for 1.0 RC1):
Most important: develop (with a release→benchmarkloop) the full model (!),
Add tactics (drops, run-by, contain...), and their counters,
Vary tactics from learned outcome (enemy defenses type
and position, UCT?),
Abuse the game engine more (drop trick...),
Deal with economy/tech/production andscouting/defense/attack concurrencies forresources/units (full model).

64/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Next? (2)
If we want a bot capable to adapt to “good” human play (forv2.0):
Dynamic adaptation of the strategy/build order, forinstance throughP(BuildTreet+1 |Observationst , BuildTreet ) (see AIIDE 2011
for more informations),
Detect fake builds,
Detect fake tactical moves.

65/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

Bibliography
Bayesian Robot Programming (2004) [Lebeltel O. et al.]Teaching Bayesian Behaviours to Video Game Characters(2004) [Le Hy R. et al.]A Data Mining Approach to Strategy Prediction (2009) [Weber B.
& Mateas M.]
Case-Based Planning and Execution for RTS Games (2007)[Ontañón S. et al.]Opponent Behaviour Recognition for Real-Time Strategy Games(2010) [Kabanza F. et al.]
Building A Player Strategy Model by Analyzing Replays of
Real-Time Strategy Games [Hsieh J-L. & Sun C-T.]
Probability Theory: The Logic of Science (2003) [Jaynes E.T.]

66/67

Part 1: Micro-management
Part 2: Enemy strategy prediction

ThanksThank you for your attention,

67/67