Index of /Kuliah2016-2017/KecerdasanBuatanUntukGame

Artificial Intelligence in
Game Design
Intelligent Decision Making and
Decision Trees

Decision Making
• Based on internal and external information
“I am hungry”

“There is food nearby”

• Defines a current action (“eat food”)

• Changes world and internal state
“Food nearby is gone”

“I am not hungry”

“Intelligent Agent” Approach
• Reflex agent


No memory, just “if-then” rules

• Memory-based agent
Also based on current state

input

input

• Goal-based agent

action

rules

rules

action

memory


Chooses actions that best help meet
current goal

• Utility-based agent
Balances multiple weighted goals,
choosing actions that give best
overall state

Goal-based
planning
Sims

Reflex Agents
• Example: “orc” reflex agent
if hitPoints < 5
then run away from player
if distance to player < 2 units
then attack player
if player visible

then run towards player
else
move in random direction

Internal state
External state

Scripted Actions
• Visible actions usually limited to set
of animations created in advance
• Often sequence of actions (“scripting”)
Self destruct
sequence

Game
AI

Poll again
when script
finished


Game
Engine

Reflex Agents
• Must consider cost of gathering inputs
if hitPoints < 5
then run away from player
This requires complex
if distance to player < 2 units
computations
then attack player
if player visible
if player in same room or distance to player < 5 units
then run towards player
else
move in random direction

Hierarchical Rules
• Actions often hierarchical

if hitPoints < 5
then moveTowards(player)
if distance to player < 2 units
then attack(player)
if player visible
then moveTowards(player)
else
moveTowards(random)

These will call complex
navigation subroutines
to implement the action

Hierarchical Rules
• Lowest level = actions supported by game engine
void moveTowards(object)
if not facing object
then turn towards object
else if facing obstacle at distance < 2 units
then turn right or left at random

move forward
else move forward

Designing Hierarchies
• Strategy Level
– What goal does character attempt to meet?
• Build, attack, negotiate

• Tactical Level
– How does character meet current goal?
• Which city to attack
• Which resources to use

• Motion Level
– What action does character take this turn?
• Move forward, left, right…

Designing Hierarchies
• Task based
– Major tasks NPC performs

• Guard
• Patrol
• Defend

– Steps in tasks
• Wait
• Chase
• …

High level character design team
(works with game designers)

– …
– Motion
• Turn
• Move
• …

Character motion team
(works with animation team)


Level of Detail in Graphics
• Only render graphics at detail necessary for
what player can see
– Close up = full detail

– Far away = little detail

• Minimize load on graphics engine

Level of Detail in AI
• Only use full AI when necessary
– Fast approximations in other situations
– Often when NPCs “off screen”

Use full passing AI
for cars visible to
player

Simple rule for cars not visible to player

“Faster car has 75% chance of
successful pass”

Swarm Intelligence
• Simple NPCs in groups can appear to cooperate
• Decision example:
if no other player shooting, I shoot
if in open, run for cover and shout
if in cover, reload and wait

• Orc motion example:

if NPC blocking path to player
then run sideways
else run towards player


NPCs appear to be covering one
another and coordinating attack!


Randomness in Games
• Randomness adds to playability
– Characters less predictable, more “realistic”
– Greater replayability
– Rare occurrences can surprise player

• Example: choice of weapon in Fight state

60%

35%

5%

Randomness in Games
• Goal: Randomness should not appear random
• Best solution: Randomness used to “tweak”
existing rules
if hitPoints < 5
then run away from player

else if hitPoints < 10
and random# < 0.5
then run away from player
else attack player

Logical behavior in extremes
Unpredictable behavior in
borderline situations

Potential Problems with Randomness
• Possibly many parameters to tweak
– How do we know these are the best probabilities to use?
Confident

Angry

Frightened

Attack Left

40%

60%

30%

Attack Right

40%

35%

20%

Defend

20%

5%

50%

• Difficult to thoroughly test
– Combinations of probabilities may create a bad case (i.e.
easy win) which is possible but very unlikely
– That case will be found by some player

Prioritization
Problem:
• Multiple rules may fire with contradictory actions
– Problem if rules added by multiple developers
(side effects)

if hitPoints < 5
then run away from player
if distance to player < 2 units
then attack player

What if next to player
and have low hit
points?

Decision Trees
• Simple tree traversal
– Node = question
– Branch to follow
= answer
– Leaf = final action
to take

Hit points < 5?
no

yes

Obstacle between
myself and player?
yes

hide

no
run

Within one unit
of player?
yes

no
Path to
player
clear?

attack

yes

run towards
player

no

run
sideways

Decision Trees
• Not necessarily binary
• Can merge branches

Hit points
HP < 5

5 ≤ HP < 10

run away

HP ≥ 10

Weapon type

light

heavy
Within one unit
of player?

hold
position
yes

attack

no
run
towards
player

Designing Decision Trees
• Identify possible actions (leafs)
• Identify internal/external knowledge for choosing action
• Order questions in tree:
– Crucial factors (health, etc.)
– Ease of gathering knowledge (fastest first)
Player visible?

HP < 5?
yes

no

yes
hide

attack

no
patrol

patrol

HP < 5?

Player visible?
yes

no

yes
hide

no
attack

Randomness in Decision Trees
• Make decisions at some nodes based on
random number
Math.random() < 0.5

yes

defend

no

Math.random() < 0.2

yes

Swing sword
from left

no
Swing sword
from right

Randomness in Decision Trees
• Problem:
Randomness in high level decisions
Math.random() < 0.4
yes

Stand still

no
Patrol

• Stands still or patrol for a few frames at a time
• Better if it decided to do one and keep doing it for a while

Timeouts in Decision Trees
• Execute decisions for specific time
Math.random() < 0.4
yes
Stand still
For 10 min

no
Patrol
For 30 min

• Problem: must have some way to interrupt actions if
world changes