1488072101 Artificial Intelligence for Games - Artificial Intelligence - Books - Books - GameDev.net

Jump to content

Game Development Books

Top Selling Books

  • You cannot edit this book

Artificial Intelligence for Games *****

Artificial Intelligence for Games By Ian Millington, John Funge
Published August 2009
List Price: $93.95, Your Amazon.com Price: $70.57

Amazon.com Sales Rank: 201,457
Availability: Usually ships in 24 hours

Creating robust artificial intelligence is one of the greatest challenges for game developers, yet the commercial success of a game is often dependent upon the quality of the AI. In this book, Ian Millington brings extensive professional experience to the problem of improving the quality of AI in games. He describes numerous examples from real games and explores the underlying ideas through detailed case studies. He goes further to introduce many techniques little used by developers today. The book's associated web site contains a library of C++ source code and demonstration programs, and a complete commercial source code library of AI algorithms and techniques. "Artificial Intelligence for Games - 2nd edition" will be highly useful to academics teaching courses on game AI, in that it includes exercises with each chapter. It will also include new and expanded coverage of the following: AI-oriented gameplay; Behavior driven AI; Casual games (puzzle games).

Similar Books:

Buy it now:

  • You cannot edit this book


Jan 06 2010 06:49 AM

Artificial Intelligence For Games, Second Edition is a pretty impressive work. Unlike the recently-reviewed Behavioral Mathematics for Game AI which just covered the topic of modeling natural looking behavior for characters, this is a thick comprehensive guide to AI as it relates to games, covering everything from simple character movement and the classic minimax search tree for board games to more "trendy" topical subjects like goal-oriented behavior and weighted pathfinding.

Despite the breadth of topics in the book, things are covered with reasonable depth. For example, the aforementioned minimax search tree has some well-known tricks for greatly improving performance, like alpha-beta pruning. Several of these optimizing tricks are covered, and this is important. Too many times have I seen an AI or algorithms text cover this topic in a couple of pages with a dismissive "this is a deep subject, so we won't go any further" regarding techniques. And yes, it is a deep topic, but it's an important one that shouldn't just be left to the realm of AI trivia. In Artificial Intelligence For Games, things do seem to be covered in enough depth that, for many topics, this can be considered "the only book you need".

Big kudos to the authors for defining a standard pseudocode for all code examples and sticking with it throughout the book. Too many books that I've reviewed seem to bounce around between code written in C++, javascript, and some ad-hoc description language that's written on the fly. All of the code in Artificial Intelligence For Games is done in a very easy-to-follow Python-ish dialect that's explicitly defined in the first chapter and will be easily translate-able to your language of choice. I'd encourage all future book-writers to learn from this example. Unless your particular code example is specific to one language and/or platform, you should put it in a form that can be easily understood and ported to everything. That also broadens the book's appeal, as this isn't Artificial Intelligence For Windows Games or Artificial Intelligence For Mac Games. This book's topics will be equally useful for everything from high-end consoles to mobile phones.

While this lack of platform and language-specific code might seem daunting to the beginner who was hoping to cut and paste the provided A* function directly into his IDE, this is a technique that makes the book much more useful in the long run. And the breadth of knowledge in Artificial Intelligence For Games extends to the conceptual level. If you're playing the latest WWII shooter, and you want to know how the enemy soldiers worked together so realistically, you probably won't find a detailed explanation here. You'll find topics that are related to coordinated movement, but this is a generalized text and isn't intended to show how things work in a particular game, or even a particular genre of games. You might need to piece things together a bit, but it's a good bet that most of the building blocks are in this book.

As for the skill-level, the back cover calls it “intermediate to advanced”, but  I didn't find the topics all that daunting. While much of computer AI is fairly deep and can be complex and hard to follow, the book does a good job of keeping things simple. All code examples are well documented, and the book is more than happy to provide clear line-drawings to illustrate concepts. As long as you have a bit of a background in data structures and algorithms, you shouldn't be afraid.

As for support, there’s a permanent support home for the book at www.ai4g.com with errata and downloadable code.

If you haven't figured out by now, I think that Artificial Intelligence For Games, Second Edition is a top-notch guide to AI techniques for games, and there's not a single genre of game that wouldn't benefit from this book. If you're developing a high-speed 3D road-shooter or an abstract board game or a 2D arcade game in Flash, there's something helpful here. Yes the price of the book is fairly high ($60 Amazon price at the time of this review), but that's mitigated by the book's size (nearly 900 pages) and breadth of coverage.

And it's also mitigated by the fact that you'll be referring to the content of this book ten years from now.


Chapter 1: Introduction
1.1 What Is AI?
1.1.1 Academic AI
1.1.2 Game AI
1.2 Model of Game AI
1.2.1 Movement
1.2.2 Decision Making
1.2.3 Strategy
1.2.4 Infrastructure
1.2.5 Agent-Based AI
1.2.6 In the Book
1.3 Algorithms, Data Structures, and Representations
1.3.1 Algorithms
1.3.2 Representations
1.4 On the Website
1.4.1 Programs
1.4.2 Libraries
1.5 Layout of the Book

Chapter 2: Game AI
2.1 The Complexity Fallacy
2.1.1 When Simple Things Look Good
2.1.2 When Complex Things Look Bad
2.1.3 The Perception Window
2.1.4 Changes of Behavior
2.2 The Kind of AI in Games
2.2.1 Hacks
2.2.2 Heuristics
2.2.3 Algorithms
2.3 Speed and Memory
2.3.1 Processor Issues
2.3.2 Memory Concerns
2.3.3 PC Constraints
2.3.4 Console Constraints
2.4 The AI Engine
2.4.1 Structure of an AI Engine
2.4.2 Toolchain Concerns
2.4.3 Putting It All Together

Part II: Techniques

Chapter 3 Movement
3.1 The Basics of Movement Algorithms
3.1.1 Two-Dimensional Movement
3.1.2 Statics
3.1.3 Kinematics
3.2 Kinematic Movement Algorithms
3.2.1 Seek
3.2.2 Wandering
3.2.3 On the Website
3.3 Steering Behaviors
3.3.1 Steering Basics
3.3.2 Variable Matching
3.3.3 Seek and Flee
3.3.4 Arrive
3.3.5 Align
3.3.6 Velocity Matching
3.3.7 Delegated Behaviors
3.3.8 Pursue and Evade
3.3.9 Face
3.3.10 Looking Where You’re Going
3.3.11 Wander
3.3.12 Path Following
3.3.13 Separation
3.3.14 Collision Avoidance
3.3.15 Obstacle and Wall Avoidance
3.3.16 Summary
3.4 Combining Steering Behaviors
3.4.1 Blending and Arbitration
3.4.2 Weighted Blending
3.4.3 Priorities
3.4.4 Cooperative Arbitration
3.4.5 Steering Pipeline
3.5 Predicting Physics
3.5.1 Aiming and Shooting
3.5.2 Projectile Trajectory
3.5.3 The Firing Solution
3.5.4 Projectiles with Drag
3.5.5 Iterative Targeting
3.6 Jumping
3.6.1 Jump Points
3.6.2 Landing Pads
3.6.3 Hole Fillers
3.7 Coordinated Movement
3.7.1 Fixed Formations
3.7.2 Scalable Formations
3.7.3 Emergent Formations
3.7.4 Two-Level Formation Steering
3.7.5 Implementation
3.7.6 Extending to More than Two Levels
3.7.7 Slot Roles and Better Assignment
3.7.8 Slot Assignment
3.7.9 Dynamic Slots and Plays
3.7.10 Tactical Movement
3.8 Motor Control
3.8.1 Output Filtering
3.8.2 Capability-Sensitive Steering
3.8.3 Common Actuation Properties
3.9 Movement in the Third Dimension
3.9.1 Rotation in Three Dimensions
3.9.2 Converting Steering Behaviors to Three Dimensions
3.9.3 Align
3.9.4 Align to Vector
3.9.5 Face
3.9.6 Look Where You’re Going
3.9.7 Wander
3.9.8 Faking Rotation Axes

Chapter 4: Pathfinding
4.1 The Pathfinding Graph
4.1.1 Graphs
4.1.2 Weighted Graphs
4.1.3 DirectedWeighted Graphs
4.1.4 Terminology
4.1.5 Representation
4.2 Dijkstra
4.2.1 The Problem
4.2.2 The Algorithm
4.2.3 Pseudo-Code
4.2.4 Data Structures and Interfaces
4.2.5 Performance of Dijkstra
4.2.6 Weaknesses
4.3 A*
4.3.1 The Problem
4.3.2 The Algorithm
4.3.3 Pseudo-Code
4.3.4 Data Structures and Interfaces
4.3.5 Implementation Notes
4.3.6 Algorithm Performance
4.3.7 Node Array A*
4.3.8 Choosing a Heuristic
4.4 World Representations
4.4.1 Tile Graphs