Abstract: This paper presents solutions for one requirement
of
autonomous characters in animation and games: the ability to navigate
around
their world in a life-like and improvisational manner. These "steering
behaviors" are largely independent of the particulars of the
character's means
of locomotion. Combinations of steering behaviors can be used to
achieve
higher level goals (For example: get from here to there while avoiding
obstacles, follow this corridor, join that group of characters...) This
paper
divides motion behavior into three levels. It will focus on the middle
level
of steering behaviors, briefly describe the lower level of locomotion,
and
touch lightly on the higher level of goal setting and strategy.

OpenSteer is a
open
source C++ implementation of these steering behaviors, currently a
prototype at version 0.7. It includes an application to demonstrate
some of the basic ideas. You can also use it to develop and tune your
own steering behaviors.

Java-based animated diagrams of steering behaviors
described in this paper:

Motion
Planning Using Potential Fields (2000) by Stefan Baert
starts from the assumption that all units (game characters) are
the
same size and move on a discrete grid, it discusses using potential
fields to
address several issues in navigation, while avoiding some of the
typical
shortcomings of potential field techniques.

Sometimes I hear from people who want to use steering behaviors in
their
work but never studied the (relatively simple) math and physics
concepts on
which they are based. As starting points, here are some introductory
tutorials that might be useful: