O'Reilly logo

Programming Game AI by Example by Mat Buckland

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Index
A
A* search algorithm, 241, 345, 363-370
and efficiency, 243
implementation, 243-246
acceleration, 32
constant, 32-36
in physics, 32
unit of, 32
varying, 37
action selection (agent movement), 86
acyclic graph, 196
adjacency list, 203
adjacency matrix, 203
adjacent, triangle, 15
agent communication, see messaging
AI, xix-xx
cheating, 316
strong, xix
tiered, 145
updating components of, 328-331
weak, xix
AI logic, and scripting, 255
aiming accuracy, of Raven bot, 323
Algol 60, 234
alignment (steering behavior), 116
ambushing, and navigation graph, 334
Ammo Status (fuzzy linguistic variable), 428
AND, using with sets, 418
angles, 11-12
annotation,
and graph edges, 349-353, 409
and graph nodes 348-349
ant (Leptothorax), 118
antecedent, 425
anticipation, using, 404
arbitration, and goals, 398-404
arc, 194
arrive (steering behavior), 93
assumptions, making them work for you, 189
at() and at[] luabind::object, 283-284, 286
atomic goal, 379, 383, 387
atomic object, 382
attackers, Simple Soccer, 146, 155
AttackGoal_Evaluator::CalculateDesirability
C++ method, 403
attacking player, 146
Attacking soccer team state, 152, 154-155
Attacking::Execute C++ method, 154-155
automatic resumption of interrupted activities,
407-408
autonomous agent, 85-86
average of maxima (defuzzification method),
436-437
axes, Cartesian coordinate, 1
B
Baldurs Gate, 255
ball, 134
BaseGameEntity C++ class, 52, 76
bases template parameter, 280
beam search, 246
begin() luabind::object, 284
best path,
and breadth first search, 231
graph search, 209
best path so far, 231
best support spot, 146, 168, 169
bias, character, 405
bidirectional search, 229
Big O notation, 126
bin-space partitioning, see cell-space
partitioning
Black & White, 254
blaster, Raven weapon, 301, 313
blind search, 210
481
boid, 85
bool luabind::object, 284
Boolean, Lua type, 260
Boost library, 276
bot, 295, 296
AI design considerations, 313-314
movement, 313
path planning, 313
possessing, 296
respawning, 296
selecting, 296
target selection, 313
weapon aiming, 313
weapon handling, 313
bottleneck, and path planning, 374
BPSF, see best path so far
branching factor, 203, 222, 230-231
breadth first search, 224-231
implementation, 225-226
BSS, see best support spot
bugs and errata, 479
build queuing, see command queuing
button, 409-410
byte code, 251
C
C++ templates, 459-464
Cartesian coordinates, 1
Cell C++ struct, 127
CellSpacePartition C++ class, 128-129
cell-space partitioning, 126-130, 342
center of mass,
and cohesion steering behavior, 117
and defuzzification, 434
position, 30
center-spot, Simple Soccer, 135
centroid (defuzzification method), 434-436
ChaseBall field player state, 156, 159-160
ChaseBall::Enter C++ method, 159
ChaseBall::Execute C++ method, 159
ChaseBall::Exit C++ method, 159-160
checkpoint, path, 110
cheese, on toast, 415
child state, 202
circumference, 12
class diagram, UML, 465-474
class, exposing C++ to Lua, 276
class templates, 461-464
closest player to ball, Simple Soccer, 146
coarsely granulated navigation graph, 336-339
coefficient, 3
cohesion (steering behavior), 117
combinatorial explosion, 452
Combs method, 452-455
and fuzzy inference, 454-455
Combs, William, 452
Command & Conquer, 208
command queuing, 410-412
compile time, and scripting, 251
compiled script, 250-251, 258
complement,
crisp set, 418
fuzzy set, 422
composite design pattern, 382-386, 446
composite goal, 379, 383, 393, 395, 398, 406
composite object, 382
CompositeGoal C++ class, 383
conditional structures, Lua, 264-265
confidence, and fuzzy logic, 431, 434, 436
configuration file, and scripting, 250
connected graph, 195
and depth first search, 213
consequent, 425
constant, and equations, 3
contact force, 38
controlling player, Simple Soccer, 146
coordinate pair, 2
coordinate system, world, 26-27
coordinates, Cartesian, 1
cosine,
of angle, 15
inverse, 17
cost-based graph searches, 231-247
cost, graph edge, 231
cover, and navigation graph, 334
CPU overhead, reducing for path planning,
359-374
CreateAllPairsCostsTable C++ method,
362-363
CreateAllPairsTable C++ method, 361
creativity, and scripting, 252
crisp sets, 417-418, 419
482 | Index
cube
of number, 6
root, 6
cutoff, depth first search, 223
cyclic graph, 196
D
DAG, see digraphs
Deceleration enumerated type, 93
decision making, of Raven bot, 314, 315
defenders, Simple Soccer, 155
Defending soccer team state, 152, 153-154
Defending::Enter C++ method, 153
Defending::Execute C++ method, 154
defuzzification, 433-437
defuzzify, 416, 425, 429
degree of membership (sets), 418, 419,
421-422, 429, 434
degree, and angle, 11
delta, 30
demos, downloading, 475
denominator, 8, 436
density of graph, 196
dependency graphs, 199-201
dependent variable, 3
depth first search, 210-224
implementation, 213-220
improvements to, 222-223
depth limited search, 222
design pattern,
composite, 446
singleton, 57-59
state, 50, 55
desirability,
goal evaluation, 399-404
of attacking target, 403
of exploring, 403
of health item, 400-401
of weapon, 401-402
Desirability (fuzzy linguistic variable), 425,
426-427
destination node, and graphs, 197
detection box, in obstacle avoidance, 99
DFS, see depth first search
dialogue flow, and scripting, 253
digraphs, 196-197
Dijkstra, Edsger Wybe, 233
Dijkstra’s algorithm, 233-236, 346, 360,
363-370
implementation, 236-241
Distance to Target (fuzzy linguistic variable),
427
distance, unit of, 29
distance-squared space, 92
DOM, see degree of membership
door, negotiating, 408
dot product, 23
Dribble field player state, 156, 166-168
Dribble::Enter C++ method, 167
Dribble::Execute C++ method, 167-168
dummy edge, 216, 226
d-way heap data structure, 240
dynamic graph, 208
dynamic obstacle, 86
dynamically typed language, 258
E
edge,
cost, 197, 198, 206
graph, 194
removal from graph, 208
edge paths versus node paths, 348-350
edge relaxation, 231-233
electricity bolt, Raven projectile, 301, 302
element, and sets, 417
elevator, negotiating, 408
Elsa, 67
embedded rules, finite state machine, 48
emergent behavior, 119
end() luabind::object, 284
EnforceNonPenetrationConstraint C++
function template, 125
ent_Elsa enumeration, 53
ent_Miner_Bob enumeration, 53
EnterMineAndDigForNugget state, 60-62
EnterMineAndDigForNugget::Enter method,
60
EnterMineAndDigForNugget::Execute
method, 61
EnterMineAndDigForNugget::Exit method, 61
EntityManager C++ class, 72
equations, 3
simplifying, 7-10
Eric the troll, 24
Index | 483

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required