Artificial Intelligence in Game
Design
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
Fixed Formations
•
Line
•
Circle
•
“V” formation
Leader‐Based Steering
•
“Leader” steers towards goal
•
Followers have slots
– Fixed position relative to leader
– Move with leader
– Followers seek location of slot
leader
Fixed distance,
orientation WRT leader
leader
Left flank Right
flank Right
rear
slots
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 Marker Steering
•
“Invisible” leader marker leads formation
– All characters have slots relative to leader marker
– Leader marker not affected by obstacles
Fixed distance, orientation WRT leader marker
Leader marker Left
flank Right
flank Right
rear
slots
Leader Marker Steering
•
Followers steer around obstacles
– Use blending/priorities to determine steering
– May have other goals (seek cover, avoid collisions, etc.)
Leader marker Right
side
Seek
slot
Avoid
obstacle Seek cover
Final steering
Avoid
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
Left flank Right
flank Right
rear
Front
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
Left flank Right
flank
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
Heavy weapons Infantry Infantry
Flankers 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 Hand to Hand
Weaponry
Long Distance 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
Minimal Cost Slot Assignment
• Goal:
Assign slots to maximize score (or minimize “cost”)
Hand to Hand Weaponry Hand to Hand
Weaponry
Long Distance Weaponry
Hand to Hand Weaponry
Long Distance Weaponry
Heavy Weaponry
Total score: 10
Hand to Hand Weaponry Hand to Hand
Weaponry
Long Distance Weaponry
Hand to Hand Weaponry
Long Distance Weaponry
Heavy Weaponry
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
second
third
fourth
last
Hand to Hand Weaponry Hand to Hand
Weaponry
Long Distance 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 Hand to Hand
Weaponry
Empty = 10 Hand to Hand
Weaponry
Empty = 15
Long Distance Weaponry
Empty = 15 Hand to Hand Weaponry
Empty = 20
Long Distance Weaponry
Empty = 5 Heavy Weaponry
Minimal Cost Slot Assignment
• Example:
Hand to Hand Weaponry Hand to Hand
Weaponry
Long Distance Weaponry
Hand to Hand Weaponry
Long Distance Weaponry
Empty Heavy Weaponry
Total score: 54 Hand to Hand
Weaponry
Empty Hand to Hand
Weaponry
Long Distance Weaponry
Hand to Hand Weaponry
Long Distance Weaponry
Heavy Weaponry
Minimal Cost Slot Assignment
• If costs too great, may need to change squad type
– Try all squad types of new group size
• Example:
Hand to Hand Weaponry
Hand to Hand Weaponry Long Distance
Weaponry
Hand to Hand Weaponry
Long Distance Weaponry
New attack squad Hand to Hand
Weaponry Hand to Hand
Weaponry
Long Distance Weaponry
Hand to Hand Weaponry
Long Distance Weaponry
Empty Heavy Weaponry
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
Cover Cover
Cover Cover
Squad Cover Movement
• Can still use formation slots
• Based on nearest cover instead of fixed formation
Slot B
Slot D Slot C
Slot A
Cover
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
Squad Cover Movement
Cover
Cover
Cover
Cover
Cover
Cover Range of
coverage
Cover 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
State 1A
Steering for this state
Character A State 2A
Steering for this state
State 1B
Steering for this state
Character B State 2B
Steering for this state
Change in character A state
Causes change in character B state
Play‐Based Steering
• Typical in most team sports games
Play‐Based Steering
Arrive at pocket
Quarterback
FollowPath route,
Avoid defenders
Receiver
Wander, Avoid
defenders
At route end and open
Wander, Avoid
defenders
Throw:
Pursue(football, receiver)
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
Handling Failed States
Arrive at pocket
Quarterback
FollowPath route,
Avoid defenders
Receiver
Wander, Avoid
defenders
At route end and open
Wander, Avoid
defenders
Throw:
Pursue(football, receiver)
Pursue
football
Football thrown
Seek goal
Avoid defenders 3 seconds