Steering Behaviors For Autonomous Characters
background and update
by Craig Reynolds

path following diagram

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.

Online version of the GDC 1999 paper:
Steering Behaviors For Autonomous Characters

   OpenSteer Logo    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:

Note that I cannot distribute the source code for these applets. Source code is available for OpenSteer which is a similar implementation in C++.

Related online resources by other authors (sorry, still not particularly well arranged):

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:

Send comments to Craig Reynolds <>
visitors since September 5, 1997
Last update: June 6, 2004