So I read Reynold's 1999 paper, [Steering Behaviors For Autonomous Characters], and I presume something went over my head, because it doesn't seem to make any sense to me.
steering_force = truncate (steering_direction, max_force) acceleration = steering_force / mass velocity = truncate (velocity + acceleration, max_speed) position = position + velocity
Not sure how this makes any sense. Unless there's a constant time step of 1s, this integration (a forward Euler, which is bad in it's own right), doesn't make much sense to me.
The behaviors themselves don't seem to make much sense either:
desired_velocity = normalize (position - target) * max_speed steering = desired_velocity - velocity
desired_velocity is in the wrong direction? Should be
(target - position)? It also doesn't return a force - it returns a difference of velocities. It doesn't scale at all with mass.
target_offset = target - position distance = length (target_offset) ramped_speed = max_speed * (distance / slowing_distance) clipped_speed = minimum (ramped_speed, max_speed) desired_velocity = (clipped_speed / distance) * target_offset steering = desired_velocity - velocity
This just doesn't make any sense to me. This will flat out not work. Sure, you'll eventually get a vector pointing away from the target, but depending on the vehicle's mass, may not be able to stop it in time. It's also dependent on an arbitrary slowing radius not tied to the objects max thrust, max speed, or mass. Like Seek, it also doesn't actually return a force.
I stopped reading after that. Clearly there is something I am missing here..