Artificial Intelligence in Game Design

Download Report

Transcript Artificial Intelligence in Game Design

Artificial Intelligence in
Game Design
Behavior Trees
Reactive Planning
• Plan: Set of steps to accomplish some goal
– Move to door  Open door  Enter room
– Can easily be done with state machine
• Reactive planning:
Altering plan if steps not currently possible
– What if player locks door?
– What if player barricades door?
• Key idea in real-world AI
Reactive Planning
• Decision-making process like tree
• Possible courses of action may require many steps
– Decision trees just defined for single step
Door opens
Enter room
Door opens
Enter room
Get key
Door
doesn’t
opens
Try unlocking door
Door
doesn’t
opens
Try breaking
down door
Behavior Trees
• Designed for appearance of reactive planning
– Plans, contingencies actually scripted
• Combine features of several representations
– Decision trees (unambiguous)
– Finite State Machines (hierarchical)
• Often used to design games (Halo 2, etc.)
– Easy to translate into code
– Easy for non-programmers to design, understand
Tasks
• Leaves of tree = tasks performed by NPC
• Conditions: Is something currently true or not?
– Internal to character or external in world
– Ideally, can be quickly checked against game state
Door
open?
Hit points
< 5?
Tasks
• Actions: Outputs/instructions to game engine
– Internal to character state
– External, often in form of firing animation
– Can fire other actions
(hear player  start path planning routine)
Open door
Move(room)
hit points --
Composites
• Define how tasks combined
• Sequence node: Execute tasks in given order
– Often involve tests at beginning to insure sequence
can be completed
– Sequence halts and fails if any tasks fail

Door open?
Move(room)
Close door
Composites
• Selector node: Try tasks in order until one
succeeds
– Multiple tasks with same goal
– Like if / else if/else if …/ else
– Best if last task always succeeds (like else)
?
Open door
Break down
door
Bang on
door
Decision Tree Structure
• Example: Entering a room
– Problem: Player may have closed the door to prevent
guard from entering
?


Door
open?
Move
(room)
Move
(door)
Open
door
Move
(room)
Hierarchical Structure
• Can nest to any level
– Usually alternate levels of selection, sequence
?


Door
open?
Move
(room)
Move
(door)
Open
door
?
Break
down door
Move
(room)
Door
open?
Translation into Code
• Each task/node is subroutine that returns boolean
• Sequence node:
for each task T {
success = execute T
if (!success) return false
}
return true
• Selector node:
for each task T {
success = execute T
if (success) return true
}
return false
Decorators
• Used to modify structure of nodes below in tree
• Common case: looping
– For limited number of times
– Until fail …
?
Limit = 3
Open door
Break down
door
Bang on
door
Nondeterminism
• Characters should not always take actions in
same order (appears scripted)
Barge door
• Door locked
Set fire to door
Don’t always
try the same
one first!
• Set fire to door: Get matches, get gasoline
Don’t always do in this order!
Partial-Order Planning
• Understand what steps must happen in a certain order
• Other steps can be done in any order
– Choose order randomly in those cases
Try
opening
door
Try
unlocking
door
Barge door
Try in
either
order
Set fire to door
Get gasoline
Pour gasoline on door
Ignite gasoline
Get matches
Do in any order
Nondeterministic Behavior Tree
?
~?

Door
open?
Move
(room)

Barge
door
Nondeterministic
sequence node
Get
matches
Nondeterministic
selector node
~
>
Douse
door
Get
gasoline
Ignite
door
Parallelism
• Controls behavior for multiple characters
working towards common goal
– Each character has behavior subtree that runs in
parallel (usually implemented as concurrent threads)
– All characters exit tree when goal succeeds/fails



Charcter 1’s
task
Charcter 2’s
task
Charcter 3’s
task
Parallelism



• “Sequence” parallelism:
Exit (and fail) if any
thread fails
Quaterback
avoids rushers
• “Selection” parallelism:
Exit (and succeed) if any
thread succeeds
Rifleman shoots at
boss opponent
Reciever gets
open
?
?
?
Grenadier throws
grenade at boss
opponent