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
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
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
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