17
Artificial Intelligence in Game Design Behavior Trees

Artificial Intelligence in Game Design Behavior Trees

Embed Size (px)

Citation preview

Page 1: Artificial Intelligence in Game Design Behavior Trees

Artificial Intelligence in Game Design

Behavior Trees

Page 2: 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

Page 4: Artificial Intelligence in Game Design Behavior Trees

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

Page 5: Artificial Intelligence in Game Design Behavior Trees

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?

Page 6: Artificial Intelligence in Game Design Behavior Trees

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

Page 7: Artificial Intelligence in Game Design Behavior Trees

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

Page 8: Artificial Intelligence in Game Design Behavior Trees

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

doorBang on

door

?

Page 9: Artificial Intelligence in Game Design Behavior Trees

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)

Page 10: Artificial Intelligence in Game Design Behavior Trees

Hierarchical Structure

• Can nest to any level– Usually alternate levels of selection, sequence

?

Door open?

Move(room)

Move(door)

Open door

Move(room)

?

Break down door

Door open?

Page 11: Artificial Intelligence in Game Design Behavior Trees

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

Page 12: Artificial Intelligence in Game Design Behavior Trees

Decorators

• Used to modify structure of nodes below in tree• Common case: looping

– For limited number of times– Until fail …

Open doorBreak down

door

Bang on door

?

Limit = 3

Page 13: Artificial Intelligence in Game Design Behavior Trees

Nondeterminism

• Characters should not always take actions in same order (appears scripted)

• Door locked

• Set fire to door: Get matches, get gasoline

Barge door

Set fire to door

Don’t always try the same one first!

Don’t always do in this order!

Page 14: Artificial Intelligence in Game Design Behavior Trees

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

Set fire to door

Try in either order

Get matches

Get gasoline Pour gasoline on doorIgnite gasoline

Do in any order

Page 15: Artificial Intelligence in Game Design Behavior Trees

Nondeterministic Behavior Tree

?

~?

Door open?

Move(room)

Barge door

Get matches

Douse door

Ignite door

~>

Get gasoline

Nondeterministic selector node

Nondeterministic sequence node

Page 16: Artificial Intelligence in Game Design Behavior Trees

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

Page 17: Artificial Intelligence in Game Design Behavior Trees

Parallelism

• “Sequence” parallelism: Exit (and fail) if any thread fails

• “Selection” parallelism: Exit (and succeed) if any thread succeeds

Quaterback avoids rushers

Reciever gets open

Rifleman shoots at boss opponent

Grenadier throws grenade at boss

opponent

? ?

?