Title: AI in games
1AI in games
- Simple steering, Flocking
- Production rules
- FSMs, Probabilistic FSMs
- Path Planning, Search
- Unit Movement
- Formations
2AI in video games
- 5-10 of CPU for Realtime
- 25-50 of CPU for Turn-based
- Chase/Escape behaviors
- Group behaviors
- Finite State machines
- Adaptation/Learning
3Questions
- How good should the AI be?
- Why are people more fun than NPCs?
- Will networked games reduce AI?
- New directions for AI in games?
4Learning/Adaptation
- Increment aggressiveness if player is doing well
- The Computer-Based SATs do this!
- Levels are a pre-programmed version of adaptation
- Tuning
- Stability
- How might adaptation make play Better or Worse?
5Adaptation vs. Play quality
- Do you want the monsters in Quake to get better
as you get better? - Force the user to live with the consequences of
his/her actions - Can surprise the designer (Creatures)
- Pit AI creatures against each other to find bugs
or tune actions - Robotwar
6What is good AI?
- Perceived by user as challenging
- Cruel, but fair!
- User is surprised by the game
- but later understands why
- Feeling that reality will provide answers
- able to make progress solving problem
- What games have used AI effectively?
7Chase/Evade
- Algorithm for the predator?
8Enhancements to Chase
- Speed Control
- Velocity, Acceleration max/min
- Limited turning Radius
- Randomness
- Moves
- Patterns
9Enhancements to Chase
Anticipation Build a model of user behavior
10Steering Behaviors
- Pursue
- Evade
- Wander
- Obstacle Avoidance
- Wall/Path following
- Queuing
- Combine behaviors with weights
- What could go wrong?
11Group Behaviors
- Lots of background characters to create a feeling
of motion - Make area appear interesting, rich, populated
12Flocking -- (HalfLife, Unreal)
Simple version Compute trajectory to head
towards centroid
13Group Behaviors
Craig Reynolds SIGGRAPH 1987
- Reaction to neighbors -- Spring Forces
14What could go wrong?
Forces balance out in dead end
Exactly aligned
- Repulsive springs around obstacles
- Does not handle changes in strategy
15Perceptual Models
16Production Rules
- If( enemy in sight ) fire
- If( big enemy in sight ) run away
- If( --- ) ----
- Selecting among multiple valid rules
- Priority weighting for rules or sensor events
- Random selection
- No state (in pure form)
17Finite State Machines
- States Action to take
- Chase
- Random Walk
- Patrol
- Eat
- Transitions
- Time
- Events
- Completion of action
At woods
Chopping
Enough wood
Take Wood to closest depot
At depot
Drop wood Go back to woods
18State Machine Problems
- Predictable
- Sometimes a good thing
- If not, use fuzzy or probabilistic state machines
- Simplistic
- Use hierarchies of FSMs (HalfLife)
19Probabilistic State Machines
- Personalities
- Change probability that character will perform a
given action under certain conditions
20Probabilistic Example
Enemy Within Hand- to-Hand Range 50
Fire At Enemy
Enemy Within Hand- to-Hand Range 50
Run Away
Far Enough to Take Shot
Run out of Range
21Probabilistic State Machines
- Other aspects
- Sight
- Memory
- Curiosity
- Fear
- Anger
- Sadness
- Sociability
- Modify probabilities on the fly?
22Planning
- Part of intelligence is the ability to plan
- Move to a goal
- A Goal State
- Represent the world as a set of States
- Each configuration is a separate state
- Change state by applying Operators
- An Operator changes configuration from one state
to another state
23Path Planning
- States
- Location of Agent/NPC in space
- Discretized space
- Tiles in a tile-based game
- Floor locations in 3D
- Voxels
- Operator
- Move from one discrete location to next
24Path Planning Algorithms
- Must Search the state space to move NPC to goal
state - Computational Issues
- Completeness
- Will it find an answer if one exists?
- Time complexity
- Space complexity
- Optimality
- Will it find the best solution
25Search Strategies
- Blind search
- No domain knowledge.
- Only goal state is known
- Heuristic search
- Domain knowledge represented by heuristic rules
- Heuristics drive low-level decisions
26Breadth-First Search
- Expand Root node
- Expand all Root nodes children
- Expand all Root nodes grandchildren
- Problem Memory size
Root
Root
Root
Child2
Child1
Child2
Child1
GChild2
GChild1
GChild3
GChild4
27Uniform Cost Search
- Modify Breadth-First by expanding cheapest nodes
first - Minimize g(n) cost of path so far
Root
Child2
Child1
GChild2 5
GChild3 3
GChild4 8
GChild1 9
28Depth First Search
- Always expand the node that is deepest in the tree
Root
Root
Child1
Child1
Root
GChild2
GChild1
Child1
GChild1
29Depth First Variants
- Depth first with cutoff C
- Dont expand a node if the path to root gt C
- Iterative Deepening
- Start the cutoff C1
- Increment the cutoff after completing all depth
first probes for C
30Iterative Deepening
Root
Root
Child2
Child1
Child1
Root
Root
Root
Child1
Child2
Child1
GChild1
GChild4
GChild3
GChild2
GChild1
31Bidirectional Search
- Start 2 Trees
- Start one at start point
- Start one at goal point
32Avoid Repeating States
- Mark states you have seen before
- In path planning
- Mark minimum distance to this node
33Heuristic Search
- Apply approximate knowledge
- Distance measurements to goal
- Cost estimates to goal
- Use the estimate to steer exploration
34Greedy Search
- Expand the node that yields the minimum cost
- Expand the node that is closest to target
- Depth first
- Minimize the function h(n) the heuristic cost
function - Not Complete!
- Local Minima
35A Search
- Minimize sum of costs
- g(n) h(n)
- Cost so far heuristic to goal
- Guaranteed to work
- If h(n) does not overestimate cost
- Examples
- Euclidean distance
36A Search
- Fails when there is no solution
- Avoid searching the whole space
- Do bi-directional search
- Iterative Deepening
37Coordinated Movement
- Somewhat more difficult than moving just one NPC
- Disappearing goal
- New obstacles in path
- Collisions with other NPCs
- Groups of units
- Units in formation
38Coordinated Elements
- Collision detection
- Detection of immediate collisions
- Near future
- Perform the usual collision detection
optimizations - Spatial hierarchies
- Simplified tests
- Unit approximations
39Collision Detection
- Levels of collision
- Hard radius (small)
- Must not have 2 units overlap hard radius
- Soft radius (large)
- Soft overlap not preferred, but acceptable
40Collision Detection
- With movement, need to avoid problems with bad
temporal samples - Sample frequently
- Detect collisions with extruded units
- Use a movement line
- Detect distance from Line segment
41Unit Line
- Unit line follows path
- Can implement minimum turn radius
- Gives mechanism for position prediction
- Connected line segments
- Time stamps per segment
- Orientation per segment
- Acceleration per segment
42Prediction line
- Given prediction, use next prediction as move
- Prediction must have dealt with collisions already
43Collision Avoidance Planning
- Dont search a new path at each collision
- Adopt a Priority Structure
- Higher priority items move
- Lower priority items wait or get out of the way
- Case-based reasoning to perform local path
reordering - Pairwise comparison
44Collision Resolution Summary
- Favor
- High priority NPCs over Low Priority
- Moving over non-moving
- Lower Priority NPCs
- Back out of the way
- Stop to allow others to pass
- General
- Resolve all high-priority collisions first
45Avoidance
- Case 1 Both units standing
- Lower priority unit does nothing itself
- Higher unit
- Finds which unit will move
- Tells that unit to resolve hard collision by
shortest move
46Avoidance
- Case 2 Were not moving, other unit is moving
- Non-moving unit stays immobile
47Avoidance
- Case 3 Were moving, other is not
- If lower priority immobile unit can get out of
the way - Lower unit gets out of way
- Higher unit moves past lower to get to collision
free point - Else If we can avoid other unit
- Avoid it!
48Avoidance
- Case 3 Were moving, other is not
- Else Can higher unit push lower along
- Push!
- Else Recompute paths!
49Avoidance
- Case 4 Both units moving
- Lower unit does nothing
- If hard collision inevitable and we are high unit
- Tell lower unit to pause
- Else If we are high unit
- Slow lower unit down and compute collision-free
path
50Storage
- Store predictions in a circular buffer
- If necessary, interpolate between movement steps
51Planning
- Prediction implies
- A plan for future moves
- Once a collision has been resolved
- Record the decision that was made
- Base future movement plans on this
Blocking unit
Get-To Point
Predicted Position
52Units, Groups, Formations
- Unit
- An individual moving NPC
- Group
- A collection of units
- Formation
- A group with position assignments per group member
53Groups
- Groups stay together
- All units move at same speed
- All units follow the same general path
- Units arrive at the same time
Obstruction
Goal
54Groups
- Need a hierarchical movement system
- Group structure
- Manages its own priorities
- Resolves its own collisions
- Elects a commander that traces paths, etc
- Commander can be an explicit game feature
55Formations
- Groups with unit layouts
- Layouts designed in advance
- Additional States
- Forming
- Formed
- Broken
- Only formed formations can move
56Formations
- Schedule arrival into position
- Start at the middle and work outwards
- Move one unit at a time into position
- Pick the next unit with
- Least collisions
- Least distance
- Formed units have highest priority
- Forming units medium priority
- Unformed units lowest
57Formations
Not so good
1
2
3
1
4
5
7
2
9
3
6
7
8
9
5
6
4
8
1
7
2
3
5
9
6
Better
4
8
58Formations Wheeling
- Only necessary for non-symmetric formations
Break formation here Stop motion temporarily
1
2
3
4
5
Set re-formation point here
5
4
3
2
1
59Formations Obstacles
Scale formation layout to fit through gaps
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
Subdivide formation around small obstacles
1
2
3
4
5
60Formations
- Adopt a hierarchy of paths to simplify
path-planning problems - High-level path considers only large obstacles
- Perhaps at lower resolution
- Solves problem of gross formation movement
- Paths around major terrain features
61Formations
- Low-level path
- Detailed planning within each segment of
high-level path - Details of obstacle avoidance
- Implement path hierarchy with path stack
Avoidance Path
Low-Level Path1
Low-Level Path2
Low-Level Path2
High-Level Path
High-Level Path
High-Level Path
High-Level Path
62Path Stack
Avoidance Path
Low-Level Path1
Low-Level Path2
Low-Level Path2
High-Level Path
High-Level Path
High-Level Path
High-Level Path
1
2
Low-level path
Avoidance path
63Compound Collisions
- Solve collisions pairwise
- Start with highest priority pair
- Then, resolve the next highest priority pair
now colliding
64General
- Optimize for 2D if possible
- Use high-level and low-level pathing
- Units will overlap!
- Understand the update loop
- It affects unit movement
- Maintain a brief collision history
65References
- Used with permission from CS4455 course at GA
Tech by Chris Shaw - http//www.cc.gatech.edu/classes/AY2005/cs4455_fal
l/