DOTS Navigation

Hi! I would like to know i there any plans to make DOTS compatible pathfinding system and agent?

4 Likes

We will be moving navMesh to DOTS in 2020, together with some code re-org and new features. It 's a long undertake so we do not have a delivery date yet, but work will start in January of next year.

20 Likes

what’s the alternative if we want to do navigation in ECS?

There is a NavMeshQuery API, but it’s limited ATM

thanks. any examples I can quickly evaluate?

Here’s one https://github.com/zulfajuniadi/unity-ecs-navmesh.

Basically, for NavMeshQuery, you instantiate an instance of it from a NavMeshWorld, which you can obtain through NavMeshWorld.GetDefaultWorld(). Put the NavMeshQuery instance in a job, and call its API. The API is very incremental - you have to call, in order, BeginFindPath, UpdateFindPath (this one multiple times if needed), EndFindPath, GetPathResult, each of which returns a PathQueryStatus, which you can use to check how well the pathfinder is faring. There’s more in the official API documentation. Unfortunately, GetPathResult only returns an ordered list of PolygonIds. Fortunately though, you can use https://github.com/Unity-Technologies/UniteAustinTechnicalPresentation/blob/00afe1c716d22fce300f765e9ad7bf94343e1e36/StressTesting/Assets/Scripts/Utils/PathUtils.cs to turn the list of PolygonIds into a list of waypoints! PathUtils is even jobifiable and burst compatible with a bit of modification. Overall, while far from complete, there is just enough code and libraries out there to achieve DOTS navigation.

5 Likes

Even once you get the straight path it’s still in 2D not on the surface, you have to use yet more low level api’s to do it correctly. All told it’s a lot of work to get a system working to the equivalent of the standard navigation api. Unity’s own demo’s don’t do it all right, none of the user submitted open source stuff does it all right.

And it doesn’t handle the crowd logic, so there is that.

Just to be informed before diving into it.

very low level, very nice, thanks for the details

You can use my DOTS navigation code as a UPM package, if you want.

Technically, the source code is located in my my Unity monorepo on GitHub. I wrote a blog post explaining how the nav code generally works. At the very least, you may be interested in seeing how I orchestrate NavMeshQueries via a Burst-compiled job in my NavPlanSystem.

PRs are welcome. I’ve gone ahead and documented some known issues here as well, which I would love to collaborate on.

Hopefully this helps.

30 Likes

Hi. Any new update?

No update to share.

1 Like

This is very interesting dude, thank You!

Does anyone have any knowledge as far as how to make the path travel along the NavMesh surface rather than directly between the points?

Hi, just wondering if there will be a preview package soonish or am I better off going with reeseschultz’ work around? Don’t want to redo a lot of work if it’s due shortly.

Many thanks, keep up the great work

No, there won’t be any Navigation package published any time soon.

1 Like

Sad. There are still plans for dots navmesh in the future or it’s has been cancelled?

either the rats are leaving the ECS ship (unlikely) or something radically new and awesome is about to happen like full voxel based GPU realtime navmesh (also unlikely)
either case stick to today’s tech, we know the bugs and monobehaviors have tons of life left in them

1 Like

We continue working on aspects of DOTS NavMesh but we don’t have news to share at this point.

8 Likes

any info on DOTS navmesh ? can we expect anything for 2021 ?

6 Likes

I’m pretty sure the internal plan for public preview release has been moved to 2021 but depending on what obstacles they have to overcome it could very well take even longer than that.