Index of /Kuliah2016-2017/KecerdasanBuatanUntukGame

Artificial Intelligence in Game 
Design
Cooperative Movement

Coordinated Movement
• Steering of individual character based on movement of other
characters
– Organized movement
– Cooperating in pursuit of overall goal

• Moving group in formation
– Creating formations

• Implementing plays in sports games

Fixed Formations
• Line

• Circle

• “V” formation

• Note that all are usually scalable to different group sizes

Leader‐Based Steering
• “Leader” steers towards goal
• Followers have slots
– Fixed position relative to leader
– Move with leader
– Followers seek location of slot

slots
Right
rear

Right
flank

leader

Fixed distance, 
orientation WRT leader


Seek new slot positions

Left
flank

leader

Leader‐Based Steering
• Problem if leader has to steer around obstacles
• Followers will also steer for no good reason! 
• Need greater degree of independence

leader

Leader Marker Steering
• “Invisible” leader marker leads formation
– All characters have slots relative to leader marker
– Leader marker not affected by obstacles
slots

Right
rear

Right
flank
Front

Fixed distance, 
orientation WRT 
leader marker

Left
flank

Leader 
marker

Leader Marker Steering
• Followers steer around obstacles
– Use blending/priorities to determine steering

– May have other goals (seek cover, avoid collisions, etc.)

Seek 
slot

Avoid 
obstacle
Avoid 
collision

Seek 
cover

Right
side

Final steering

Leader 
marker


Leader Marker Steering
• Problem if many obstacles in squad path
– Leader marker not affected
– Followers are slowed by obstacles
– Followers get far behind leader

• Leader marker should move slow if necessary
– Target velocity of leader = Average current velocity of squad
Right
rear

Right
flank
Front
Left
flank

Squad 
moving 

slow

Leader Marker Steering
• Problem if some units slower than others
– Smaller MaxVel, MaxAccel
– Larger units  slower to steer past
– Target velocity of leader = Minimum velocity of units in squad

Right
flank
Center
Left
flank

Front

Hierarchical Formations
• Large units usually consist of smaller squads also in fixed 
relative locations
– Have overall leader marker

– Leader markers of individual squads have slots in overall unit
Flankers
Infantry
Heavy weapons

Infantry

Overall 
leader
Flankers

Slot Assignment
• Different slots in a formation may require different abilities
• Given group of characters, how should those slots be filled?



Example: Heavy weapon
escort group
Hand to Hand 

Weaponry

Long Distance 
Weaponry
Hand to Hand 
Weaponry
Heavy 
Weaponry
Hand to Hand 
Weaponry
Long Distance 
Weaponry

Slot Assignment
• Different characters have different abilities
– Can represent fit to role numerically
Swords‐
man

Pikeman


Axeman

Archer

Catapult

Cannon

Grenadier

Hand to 
Hand

10

10

10


4

0

0

3

Long 
Distance

0

3

0

10

0


0

7

Heavy 
Weaponry

0

0

0

0

20

20

3

Minimal Cost Slot Assignment
• Goal: 
Assign slots to maximize score (or minimize “cost”)
Long Distance 
Weaponry

Long Distance 
Weaponry
Hand to Hand 
Weaponry

Hand to Hand 
Weaponry

Heavy 
Weaponry

Hand to Hand 
Weaponry
Hand to Hand 
Weaponry

Heavy 
Weaponry

Hand to Hand 
Weaponry
Long Distance 
Weaponry

Total score: 10 

Hand to Hand 
Weaponry
Long Distance 
Weaponry

Total score: 67 

Minimal Cost Slot Assignment
• Not feasible to check all possible assignments 
– n characters  O(n!) possible assignments

• Greedy algorithm
– Start with hardest to assign characters first
– Characters with greatest variance between slot scores
Long Distance 
Weaponry

first

Hand to Hand 
Weaponry

second
third
fourth
last

Hand to Hand 
Weaponry

Heavy 
Weaponry
Hand to Hand 
Weaponry
Long Distance 
Weaponry

Dynamic Slot Assignment
• May need to reassign slots dynamically
– Squad members removed

• May need to factor in cost of empty slot
– Can use to put preferences on filled slots
• Without  a heavy weapon, no purpose  for squad!

– Can use to put preferences on 
numbers in slots
• Ok to have one hand to hand 
slot in front, but  not to have
none in front

Long Distance 
Weaponry
Empty = ­ 15

Hand to Hand 
Weaponry

Hand to Hand 
Weaponry

Heavy 
Weaponry

Empty = ­ 20

Empty = ­15

Empty = ­ 50

Hand to Hand 
Weaponry

Long Distance 
Weaponry

Empty = ­ 10 

Empty = ­ 5

Minimal Cost Slot Assignment
• Example: 

Long Distance 
Weaponry

Long Distance 
Weaponry
Hand to Hand 
Weaponry

Hand to Hand 
Weaponry

Heavy 
Weaponry

Hand to Hand 
Weaponry
Hand to Hand 
Weaponry

Heavy 
Weaponry

Hand to Hand 
Weaponry
Long Distance 
Weaponry

Empty

Hand to Hand 
Weaponry
Long Distance 
Weaponry
Empty

Total score: 48 

Total score: 54 

Minimal Cost Slot Assignment
• If costs too great, may need to change squad type
– Try all squad types of new group size

• Example: 
Long Distance 
Weaponry

Hand to Hand 
Weaponry
Hand to Hand 
Weaponry

Hand to Hand 
Weaponry

Long Distance 
Weaponry

Heavy 
Weaponry

Hand to Hand 
Weaponry
Hand to Hand 
Weaponry

Long Distance 
Weaponry

Long Distance 
Weaponry
Hand to Hand 
Weaponry

Empty

Total score: 46 

New attack squad

Squad Cover Movement
• Squad moves one at a time
– Rearmost member moves to next cover position
– Rest of squad remains stationary, providing cover

• Squad as a whole must move in desired direction

Desired direction

Squad Cover Movement
• Can still use formation slots
• Based on nearest cover instead of fixed formation

Cover
Cover

Slot A

Slot B
Seek

Slot B

Cover
Slot C

Cover

Cover
Slot D

Squad Cover Movement
• Choose squad member furthest from goal
• Choosing next cover point
– In direction of squad goal
• Often done by targeting a “squad anchor point” in center of 
formation

– Not used by another member of squad
– Within cover range of rest of squad
• May not necessarily put in front of rest of squad

• Move squad member slot to that cover point
– Squad member will seek that slot

Cover

Squad Cover Movement
Range of 
coverage
Cover
Cover
Cover

Cover
Cover
Cover

Cover

Squad 
center

Cover
Cover
Cover

State‐Based Movement
• Character does not begin movement until signaled to do so by 
another character
• Direction/type of steering depends on location/steering of 
other characters
Character A

State 1A
Steering for
this state 

Change in 
character A 
state

State 2A
Steering for
this state 

signal
Character B

State 1B
Steering for
this state 

Causes change 
in character B 
state

State 2B
Steering for
this state 

Play‐Based Steering
• Typical in most team sports games
– Example: Passing formation

Play‐Based Steering
Quarterback

Arrive at
pocket

Wander,
Avoid
defenders

Throw:
Pursue(football, receiver)

Football 
thrown

Receiver

FollowPath route,
Avoid defenders At route 
end and 
open

Wander,
Avoid
defenders

Pursue
football

State‐Based Implementation
• Character A sets flag in central repository for team in 
state exit
Reciever3 
RunRoute state
void Exit() {

repository.setFlag(
this, “open”, true);


Who set 
flag

Flag 
name, 
value

Team Repository
Sender

Flag

Value

Reciever3

open

true







State‐Based Implementation
• Character B checks for flag as input in checkTransitions 
method to determine whether to change state
Quarterback
WaitForReciever state
int CheckTransitions() {

if (repository.getFlag(
Reciever3, “open”)) {
return THROW_STATE;
}


Team Repository
Sender

Flag

Value

Reciever3

open

true







Handling Failed States
• Example:
– Target receiver never open
– Quarterback must eventually take another action
• Choose another receiver 
• Scramble

– Need a state timeout to recognize this
– Receiver should recognize and change to “blocking” state

Handling Failed States
Seek goal
3 seconds

Avoid defenders

Quarterback

Arrive at
pocket

Wander,
Avoid
defenders

Throw:
Pursue(football, receiver)

Football 
thrown

Receiver

Seek defenders
FollowPath route,
Avoid defenders At route 
end and 
open

Wander,
Avoid
defenders

Pursue
football