Arrive or Seek

This topic is 4545 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

Recommended Posts

Hi, so I have this code for my AI's Arrive function.
Vector2D EGsoldier::Arrive(Vector2D TargetPos)   //Need to improve on this function
{
Vector2D ToTarget = TargetPos - Pos();
double dist = ToTarget.Length();

if( dist > 0 )
{
double speed = dist/( 1.3 );
speed = min(speed, e_dMaxSpeed);
Vector2D DesiredVelocity = ToTarget*speed/dist;
Vector2D FinalVelocity = DesiredVelocity - Velocity();

return FinalVelocity;
}

return Vector2D(0,0);
}


It returns the 2D vector where my EGsoldier should go. The problem is, that if there is an obstacle in the way, the soldier has no idea what to do (and subsequently runs into the obstacle and stays there). Can someone help me figure out how to improve this function so that the EGsoldier can get to his destination w/o running into an object?

Share on other sites
The easiest way in your current approach is to use repulsive fields: the closer your seeker is to a wall, the more it wants to move away from it (perpendicularly). Adjust your potential correctly and you will move around the obstacle.

A more complex way is to use a pathfinding algorithm (such as A*) on the visibility graph of your scene, then have the seeker follow the path until it sees its target directly (at which point you can revert to arrival behavior).

Share on other sites
In Craig Reynolds "Steering Behavior" algorithms two of the behaviours are Seek and Arrive. There is then another behaviour called Obstacle Avoidance were the vehicle always tries to keep an emty box in front of it. If the box gets filled with some obstacle then the vehicle turns untill the box is emty again. This approch is very simple to implement and works well with other steering behaviours. To see the exact details look at Craigs sight (a quick google search will lead you to it)

• What is your GameDev Story?

In 2019 we are celebrating 20 years of GameDev.net! Share your GameDev Story with us.

• 28
• 16
• 10
• 10
• 11
• Forum Statistics

• Total Topics
634111
• Total Posts
3015575
×

Important Information

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!