In games, we usually need to simulate crowd behavior such as following a leader or running away from danger. It would be tedious to go and model the behavior of each entity individually, however, a set of few rules can allow for the emergence of a smart and delicate behavior.
Craig W. Reynolds
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.
Reynolds starts by suggesting a layered architecture for autonomous agents. The three layers of the architecture are Action Selection, Steering, and Locomotion. The paper is mainly focused on the steering layer. So, an agent would formulate a decision to reach a goal, then it uses steering to determining the first subgoal towards that end-goal. Finally, it uses locomotion to determine how is it going to walk/move/drive. This architecture allows for the replacement of the locomotion layer (changing the type of vehicle) without affecting the two upper layers, which results in a very modular behavior.
The focus of the paper is the second layer: Steering. To achieve steering, a vector is calculated between the desired vector and the current velocity. The resulting vector becomes the subgoal of the current frame. This process is repeated each frame resulting is smooth steering animation.
I tried to apply steering behaviors in an interactive fashion using p5.js. It was really fun and easy. I have also attempted to use genetic algorithms with steering behaviors to simulate a very basic form of evolving artificial-life.
The paper can be accessed at: https://www.red3d.com/cwr/steer/gdc99/