Paper: The Suffering, A Game AI Case Study

The Suffering: A Game AI Case Study
Greg Alt [2004]

In this paper, the author explains how he developed the AI system for the game: The Suffering. Specifically, he talks about behavior, pathfinding and steering/collision.

The behaviors were programmed using a tree structure. Each behavior is a separate C++ class and are allocated when added by their parent behavior or deleted when removed by the parent. Behaviors at the top of the tree are abstrackt and generally use child behaviors to achieve subtasks. This system allows complex behavior and variety among different NPC (Non-Playing Characters) by allowing different behaviors at different levels in the hierarchy.

Unfortunately, this structure also made it extremely hard for the designers to manage different actions, for example, allowing two NPC's of the same type to have a different behavior, required a programmer to add a parameter to the parent behavior and made the code more complicated.

Pathfinding was done with A* and cleared using string-pulling. Some enemies can walk on the ceiling, so it had to be taken into account when creating a path. The system was able to tag edges as to denote special places like doors, ladders or ceiling/floor transitions. Also, edges could be tagged to exclude specific NPC types.

To avoid using a great amount of memory while searching for paths, they limited only one pathfinding per frame. Different requests must wait for future frames. For this system also, the designers found a hard time when using it, as they spent many hours setting up and debugging a movement graph for small levels.

Finally, the steering behaviors used in the game included: Arrival, Evade, Wander, ObstacleAvoidance, UnalignedCollisionAvoidance, Containment, Separation and Flanking, which allowed NPC's to approach enemies from the side or behind. Each behavior outputs an acceleration vector to the low-level movement system. NPC's are moved an animated based on this.

The author concludes that modularity is essential for faster development, as it results in less bugs and increased functionality. Also, he says that the AI system was hard to use by the designers, but it could be solved with a better interface and level editor.

Alt, Greg (2004). The Suffering: A Game AI Case Study

0 comentarios:

Publicar un comentario