Seek Steering Behavior (AI)

  • #1

Homework Statement



I'm having trouble understanding the physics equations related to Steering Behaviors For Autonomous Characters (present in the book "Programming Game AI by example").

For those that don't know- Seek is a kind of behavior whereby an object with a given mass, current position & velocity attemps to seek to a target position.

Homework Equations



In the book, Mat Buckland calculates Seek like so (in Pseudocode)

def Seek()
DesiredVelocity = Normalize(TargetPos - VehiclePos) * VehicleMaxSpeed
SteeringForce = DesiredVelocity - VehicleVelocity
return SteeringForce

The Attempt at a Solution



Seek is stated, in the book- to return a steering force, which is "the force required, when added to the agents current velocity vector, gives the desired velocity.

How does the subtraction of two velocity vectors suddenly become a force?

My heads in a spin- any help is greatly appreciated!
 

Answers and Replies

  • #2
If you subtract the two velocity vectors, then you get a vector which points in direction you want the force to point. Formally, you would need to multiply by something (a constant, possibly) that has dimensions of mass over time to get a force. But the computer doesn't care about actual units, and the constant might as well be 1. So that's why a difference in velocities could be a force, or acceleration. A realistic implementation of that AI would probably need to have a constant to scale the SteeringForce to give good behavior, but that's something that would need to be experimented with.
 
  • #3
Thanks for the great answer, I understand now.

Also- what exactly is the point of scaling the desired velocity vector to max speed? From what I can see- it will affect the direction as well as the magnitude of the output vector.
 
Last edited:

Suggested for: Seek Steering Behavior (AI)

Replies
1
Views
461
Replies
5
Views
1K
Replies
1
Views
928
Replies
10
Views
93
Back
Top