Steering (also known as "local steering") typically involves changes in direction of an agent based on proximity of other local points of interest whether real or abstract.
The idea of steering game agents has been around since the first 2D-modeled worlds. In a sense, any agent that moves toward or away from another agent is exhibiting "steering".
The concept of steering for game agents became far more prominent through the work of Craig Reynolds in the mid- to late-1980s. His ground-breaking flocking work with Boids (1986) is entirely based on the underlying workings of agent steering.
In 1999, he presented Steering Behaviors for Autonomous Characters at the Game Developers Conference in San Jose, CA. This paper, along with java demos illustrating the various concepts, continue to remain a reference point for game developers.
Steering is often considered to be orthogonal to pathfinding techniques such as A*. This is largely due to the fact that steering lacks the ability to plan ahead through complex environments. On the other hand, steering is considered far more robust at handling situations involving dynamic environments where goals are being pursued and/or obstacles can be avoided.
In a general sense, steering uses some method of detecting objects in the world and, using their positional information, adjusts its own movement vectors to either move towards or away from these objects.
For excellent examples of the various steering behaviors, visit Craig Reynolds' site.
Uses of steering behaviors include:
- Missiles pursuing targets
- Catching balls
- Crowd movement
Games That Use This Architecture
(Too many to list)
- Steering Behaviors for Autonomous Characters, Craig Reynolds, GDC, 1999