A* Pathfinding 2.9 Is Released (Unity 3 Compatible)

Hi Everyone

The A* Pathfinding Project version 2.9 has just been released, this is mostly a bug-fix update which addresses many known bugs.

First of all Unity 3 Compatibility.
Secondly, a bug which could cause units to stop getting path requests computed when a large number of units requested paths at the same time is now solved. The pathfinding query functions has been completely rewritten to use path queues which ensures all paths get computed in order.

For those of you who don’t know what the A* Pathfinding Project is:
The A* Pathfinding Project is an easy to set up system for making pathfinding possible in your game.
With it’s blazing fast speed and high customisability it’s a great choice for integrating pathfinding into your games.
Read more here - A* Pathfinding Project

Download the new version at the project homepage - A* Pathfinding Project

Some features has been removed due to high crash-rate, multithreading and the beta version of navmesh saving.

Cheers,
Aron

430900--14943--$terrainGrid_wide.png

I’m excited! I’m currently using this (an older version, I believe) in a non-commercial project and I am beyond impressed.

I personally wish Unity would buy this from you and incorporate it into their game engine. It’s sad that such a great game engine lacks such a fundamental (and very hard to code) part of a game, such as pathfinding.

Again, thanks so much for this hard work, and as soon as I need this in a commercial project, I’ll fork over the money you want (and deserve) in a heart beat!

Congrats on the great release :slight_smile:

Wheee, thanks for this. I recently mentioned a problem I was having with your (very, very impressive) navmesh generation in this thread, as we’re currently trialing a number of engines and pathfinding is an important part of our project. I was amazed to see you’d included a quadtree optimizer, so have been experimenting with your system all day.

Can you suggest any improvements to our workflow for generating a navmesh for something like a multi-floored building on a relatively large terrain? I haven’t looked through the code yet, but would it be (relatively) simple to extend raycasts through walkable surfaces, for example to generate a mesh for a building with several stories and stairs, etc, in one pass/grid?

Happy to see an update, and sorry to flood it with questions. Consider this a free thread-bump!

Nice.

Are there any plans to reintroduce multithreading in a later version?

thanks for the great work,all the time.

Would I be right in saying that this should work for the iPhone version of unity also?

Btw, it looks awesome :smile:

I’m using mesh path and some links added manually and…

Same problem liket the 2.8:

if (Polygon.ContainsPoint (node.GetArea (),pos2D)) {
minNode = node;
minYDist = dist;
}

NullReferenceException: Object reference not set to an instance of an object
AstarMath.Polygon.ContainsPoint (UnityEngine.Vector2[ ] polyPoints, Vector2 p)
AstarPath.ToLocalTest2 (Vector3 pos, Boolean forceNodesUnder) (at Assets/Pathfinding/AstarPath.cs:709)
AstarPath.ToLocal (Vector3 Vpos, Boolean forceNodesUnder) (at Assets/Pathfinding/AstarPath.cs:780)
AstarPath.ToLocal (Vector3 Vpos) (at Assets/Pathfinding/AstarPath.cs:771)
AstarPath.OnDrawGizmos () (at Assets/Pathfinding/AstarPath.cs:404)
UnityEditor.DockArea:OnGUI()

It happens when i connect 2 areas with a manual link creation. It seams that node.GetArea () return null.

In the 2.5 t worked well. I connected 2 areas and more areas with a manual link. Since 2.8 it doesn’t seem to work.

Can you have a look please?

Thank you

Awesome work !!! I’ll download it and try it out with Unity 3.1. Cheers mate !!!

Hi

Oops, nasty bug. Sorry for re-updating the project again so soon, but well… it’s better than having a known bug in the system.
2.91 can be downloaded now!

If anyone finds other bugs, please post them.

-Aron

Oh wow - thanks for this. I’ll download and have a play with it over the weekend :slight_smile:

oh, finally i am so happy, thank you, Aron!

Edit: played around a little
imports nicely on 3.1, all scenes works perfectly. Few duplicate scripts if copied over new default unity project, easy to trace, using console and delete. Deleted duplicate assets that came with this project and it was still working perfect. Yet to test something manual made, will report if any bugs here

Well done at a first look it seems to work now, thank you
I’ll post yo other bugs if i’ll find them :wink:

Sturestone, i can’t get a correct path with the navmesh (with the same object and links and areas with 2.5 it worked). I connected all the disconnected areas so now it’s a full area but the points it gives me to reach the target are not correct and too far away. It doesn’t give me the near one first. Do you want the mesh to test it?

thank you

i’ve looked a bit but i’m not seeing anything. is there a function to calculate the distance from the seeker to the target along the path, as opposed to in a straight line?

I don’t remember right now how did i figured out, i haven’t used Aron’s A* since a while but i remember doing this before.
You must find out the list of walkable nodes (of the returned path) to the target, then**:**

float dist = o;//distance
foreach (node in WalkablesNodesToTarget)
{
    //sum of distances between each node to the target within the calculated (computed) path.
    dist  += Vector3.Distance(node.position, target.position);
}

Take this as a pseudo-code and not as an exact answer by any means. :slight_smile:

thanks, i’ll give that a shot.

Yeah, that would be appreciated,
thanks.

Yup, that’s about the right way to do it.
First calculate the path, then calculate the length of it by adding the distances between the points.

“AstarData settings disabled due to not functioning correctly”

would u fixed it in next version?
i think it is very important,because the layer maybe used for rendering information setting or other logic,so it could not be “scan map on startup”

Don’t know, working with serializing is not easy. I will see how it goes.
In the meantime you can duplicate your models used for raycasting, put them in a different layer and destroy them on Start ()