yeah persistent level should not have any navigable geometry. I just have directional light, sky, etc there
Yes, 3 navbounds (1 is a dummy in P-level, 2 in each sub level) and 1 recastnavmesh in P-level. You may also try delete your recastnavmesh and create a new one. Also be sure your pool size are enough. Nav-mesh should stream when start play. Be sure you have rebuild nav-mesh with Navigation Build Paths. Use P key to see nav-mesh cover your area.
I use composition and let unreal do all streaming for me. I use dedicated standalone server as well. If you load streaming by your self and not using composition, I donât know the affect of that Iâm afraid.
I also use dungeons in separate servers. The dungeon is a streaming level. When I connect to that server I point out the composition persistent level that contains the streaming sub dungeon level. The dungeon level may be a demo level from any vendor or market place. Just loading it as it is.
Try increase âFixed Tile Pool Sizeâ to see if you get more area covered with P-key. Check hole area for any green nav-mesh. Also if you have water surface, disable âCan Ever Affect Navigationâ for it.
Only build for sub levels not the persistent level
Hi Swe08, thanks for the detail. I have something not fully understood. I followed all your steps, after navmesh built, I use PIE or play game standalone to test, and press P to show green navmesh. But when my pawn run away from a sub level, to let it unload, its green area is still shown. Dost that mean the sub levelâs navmesh failed unloading? Did I do something wrong?
Update: I forgot check âForce rebuild on loadâ, everytime when I retry and add a new navmesh Vol in p-level I should recheck that. It works all good now. Thank U
Yes, âForce rebuild on loadâ will refill the dummy NavVolume when loading. When level is unloaded in PIE, I guess it still are cached in dummy NavVolume, but will be overwriten when levels are loaded later.
What do you mean about
âAt least one dummy NavVolume has to be in P-level covering the whole world, even if it does not have any geometry. This is important due to all streamed static NavVolumes will be put there.â
Iâve create a nav mesh volume that covers the whole world but it is affecting every sub level. What do I have to do?
Thanks
Anyone figure out how to do this for procedural generation? Spawning instances of levels into a persistent level and each level has navigation in it. I found settings in the engine for âshould discard sub level nav dataâ so Iâm thinking there is a possible work flow for this. I just have no idea how to go about building the nav data and still only have one recast nav mesh actor. or if that is even the way to get the result.
When you do this for PS4, the persistent level is so heavy that it generates main thread errors, QA will not accept your game like this. It is not a solution to put the navmesh of all the other sublevels at the persistent level, the loading time of this level increases enormously. Although it lags, the only valid option for now is dynamic navmesh only in sublevels
not sure youâre on the same page. Dynamically adding level with baked in navigation is not the same as putting navigation in sublevels that are referenced by the persistent level. That would cause bloat.
In my case, Iâm using dungeon architect to spawn level instances that have their nav mesh baked. I have no performance issues with this and Iâm doing it on an oculus quest which has far less power than the ps4. I think you need to validate your set up as likely what is happening is your navmesh is being regenerated.
Iâll do a quick blog post or something about how to set this up properly at some point.
Can you post your blog address?
For UE5 I just abandon static navmesh and instead using one dynamic navmesh volume cover the holw world and set it to âis spatially loadedâ to false. Then just add NavigationInvoker to npc character. Could probably have done that long time ago. Should be used for large worlds according to documentation.
For future references, this solution also worked
hope so)
Also can try âinvokersâ technique as alternative.
I guess there will be less problems than with recast
Ran into this issue, and found the solution.
In Navigation System Settings, you want to make sure âShould Discard Sub Level Nav Dataâ is uncheckedâŚappears to be enabled by default.
Statically built nav data in sub levels is used correctly.
If there are still people looking for answers, I think the simplest and cheapest method is as follows.
Iâm throwing a NavMeshBoundVolume into my world that will cover my whole world and is at my persistant level.
So all my world will have a navigation and it will load.
But I check âGenerate Navigation Only Around Navigation Invokersâ from project settings. So I have navmesh all over my world but it is not loaded.
Thus, it does not cause a waiting or memory problem at startup.
And I add a simple Navigation Invoker to my characters that need nav mesh.
And I make âruntime generation = dynamicâ from Project settings or RecastNavMesh.
This provides that. There is a nav mesh on my persistent level, but it is not loaded, thanks to the ai invoker that I want, it can create its own dynamically when needed.
If itâs not a problem for you, you can only give the invoker to the characters so that the ai can have the nav mesh and walk only when the character is near.
And as far as I can see, this invoker always works because it is dynamic, regardless of the lower level.
This doesnât fix the problem, it just means that you generate navmesh at runtime, instead of generating it offline and serialising the data.
In UE5.2, it will work!
[ Preparation ]
ProjectSettings â Auto Create Navigation Data : Off
WorldSettings â Auto Spawn Missing Nav Data : Off in persistent Level and streaming Levels
Delete all RecastNavMesh Actors in persistent Level and streaming Levels
[ In Streaming Levels ]
Locate NavMesh Bound Volume
[ In Persistent Levels ]
Locate NavMesh Bound Volume, the location of volume doesnât matter.
Build â Build Path then you can see recastNavMesh actor is created
turn âFixed Tile Pool Sizeâ option on in the recastNavMesh actor
Thatâs it! you can see streaming level with navmesh will work!
Frickin genius. I love you.