DM810 Computer Game Programming II: AI Lecture 7
Pathfinding Decision Making
Marco Chiarandini
Department of Mathematics & Computer Science University of Southern Denmark
Pathfinding Decision Making Marco Chiarandini Department of - - PowerPoint PPT Presentation
DM810 Computer Game Programming II: AI Lecture 7 Pathfinding Decision Making Marco Chiarandini Department of Mathematics & Computer Science University of Southern Denmark Hierarchical Pathfinding Other Ideas Resume Decision Making
Department of Mathematics & Computer Science University of Southern Denmark
Hierarchical Pathfinding Other Ideas Decision Making
2
Hierarchical Pathfinding Other Ideas Decision Making
3
Hierarchical Pathfinding Other Ideas Decision Making
4
Hierarchical Pathfinding Other Ideas Decision Making
5
Hierarchical Pathfinding Other Ideas Decision Making
6
Hierarchical Pathfinding Other Ideas Decision Making
7
Hierarchical Pathfinding Other Ideas Decision Making
8
Hierarchical Pathfinding Other Ideas Decision Making
9
Hierarchical Pathfinding Other Ideas Decision Making
10
Hierarchical Pathfinding Other Ideas Decision Making
11
Hierarchical Pathfinding Other Ideas Decision Making
12
Hierarchical Pathfinding Other Ideas Decision Making
13
Hierarchical Pathfinding Other Ideas Decision Making
14
Hierarchical Pathfinding Other Ideas Decision Making
15
Hierarchical Pathfinding Other Ideas Decision Making
16
Hierarchical Pathfinding Other Ideas Decision Making
17
Hierarchical Pathfinding Other Ideas Decision Making
Zerind Arad Sibiu Arad Fagaras Oradea Craiova Sibiu Bucharest Craiova
Rimnicu Vilcea
Zerind Arad Sibiu Arad Sibiu Bucharest
Rimnicu Vilcea
Oradea Zerind Arad Sibiu Arad Timisoara Timisoara Timisoara Fagaras Oradea
Rimnicu Vilcea
Craiova Pitesti Sibiu 646 415 671 526 553 646 671 450 591 646 671 526 553 418 615 607 447 449 447 447 449 449 366 393 366 393 413 413 417 415 366 393 415 450 417
Rimnicu Vilcea
Fagaras 447 415 447 447 417
(a) After expanding Arad, Sibiu, and Rimnicu Vilcea (c) After switching back to Rimnicu Vilcea and expanding Pitesti (b) After unwinding back to Sibiu and expanding Fagaras
447 447 ∞ ∞ ∞ 417 417 Pitesti
18
Hierarchical Pathfinding Other Ideas Decision Making
19
Hierarchical Pathfinding Other Ideas Decision Making
20
Hierarchical Pathfinding Other Ideas Decision Making
21
Hierarchical Pathfinding Other Ideas Decision Making
22
Hierarchical Pathfinding Other Ideas Decision Making
23
Hierarchical Pathfinding Other Ideas Decision Making
24
Hierarchical Pathfinding Other Ideas Decision Making
25
Hierarchical Pathfinding Other Ideas Decision Making
26
Hierarchical Pathfinding Other Ideas Decision Making
27
Hierarchical Pathfinding Other Ideas Decision Making
28
Hierarchical Pathfinding Other Ideas Decision Making
29
Hierarchical Pathfinding Other Ideas Decision Making
30
Hierarchical Pathfinding Other Ideas Decision Making
32
Hierarchical Pathfinding Other Ideas Decision Making
33
Hierarchical Pathfinding Other Ideas Decision Making
class DecisionTreeNode: def makeDecision() # Recursion class Action: #interfacing virtual functions def makeDecision(): return this class Decision (DecisionTreeNode): trueNode # pointer to a node falseNode testValue # pointer to data for the test def getBranch() # carries out the test def makeDecision() # Recursion class FloatDecision (Decision): minValue maxValue def getBranch(): if maxValue >= testValue >= minValue: return trueNode else: return falseNode class MultiDecision (DecisionTreeNode): daughterNodes testValue def getBranch(): return daughterNodes[testValue] def makeDecision(): branch = getBranch() return branch.makeDecision()
34
Hierarchical Pathfinding Other Ideas Decision Making
struct RandomDecision (Decision): lastFrame = -1 lastDecision = false def test(): if frame() > lastFrame + 1: # old # Make a new decision lastDecision = randomBoolean() lastFrame = frame() # curr. frame num. return lastDecision
35