Is Unreal's World Partition Broken?

Hey Everyone,

Has anyone played around with the World Partition System in Unreal 5 (5.0.1 Ver)? We are running into some inconsistent behaviors with terrain loading and unloading. There are big chunks of terrains that sometimes load and unload irregularly with missing areas.

This issue is persistent with bigger or smaller loading radius/grid cell sizing. Some areas that are not overlapping between grid cells will load while some won’t.

In the image attached, the grid cell size is very close size of the terrain chunk size with about 2-3 terrains loading around us. You can notice there is a giant hole in the terrain chunk immediately in front of the character.

Our goal is to try and understand how we can create a world where the areas can appropriately load and unload without inconsistencies. This behavior is a lot more controllable with HLODs, Static meshes etc… However, Terrain seems to make less sense.

Any help is appreciated.

Thanks!

4 Likes

Hi, Hope you’re doing well !

I run into similar case where my terrain cells suddenly not load properly on one project, but nice on others. I try to reproduce the issue and i find that my moon meshe who’s really far from the center, was causing the issue with the landscape cells not loading ( in a similar way than you ). But in my case it’s a 30x30km landscape at this moment.

I realize after reproducing somes times the issue that really distant big meshes ( like the moon in my case ), was causing the issue of the cells not loading properly on a empty project with a landscape of 8x8km and a simple directional light and sky atmosphere.
I correct the issue by simply removing the moon ( really big distant object ).
Maybe i simply miss something into new features, data managment or i don’t know… But do the tricks for the moment !

Maybe you have a meshes like my moon really far who causes that issue ?

I fall into that things for several days, i understand you’re pain haha !

Have a great day and hope i maybe help you a little to find the things !

2 Likes

Thanks for getting back to me! I technically don’t have any meshes in my scene that is being affected by level streaming aside from landscape. As far as I understand, Landscapes were not supported until recently. Epic’s own documentation is still outdated and states that Landscapes are NOT supported in World Partition system. I am suspecting they are working on updating those.

What I have learned through trial and error is that general rule of thumb is to create HLOD for terrains that stay visible and shift through their own LODs. Then I would assign them to a specific data layer and stream them manually. I haven’t gotten a 100% hold on this method yet, but I think it will work once all the pieces are in place.

I also noticed the build HLOD command is really glitchy. It will randomly stop working and throw a critical error on the map that it was able to build fine 1 minute ago. It seems to have more problems with static meshes opposed to landscapes. I do go through their standard Delete and Rebuild procedures, but that doesn’t seem to make a difference.

So the approach I am going to take is separate out the Landscape from Static meshes in their own level and use LODs opposed HLOD for static meshes, unless I really need to. Then I am hoping I can build HLOD individually from terrain’s sublevels.

All this being said, I feel like the solutions I am coming up with is hinting at creating my own system to add workarounds for glitches(?? features ??) in the world partition system. It seems like every project and scenario is going to need their own version of solution after evaluating aspects that fail in their own project.

1 Like

World Partition is full with bugs

4 Likes

I may be able to shed some light on this, but I have only been using World Partition a short time, so I will not claim to be an expert.

Creating a fairly large (circa 60 sq. km) landscape, I found that some of the components were invisible. I initially assumed it was something wrong with my landscape, or with my viewport clipping settings, but what was actually happening is that the GPU VRAM streaming pool was being exhausted.

In my situation, enabling World Partition fixed the problem as long as I don’t try to force WP to load all the cells at once, but there is also a console command and/or INI file setting to increase or to completely unconstrain the streaming pool size. (There are enough pros and cons of this setting that, rather than summarize here, I will simply suggest searching on that topic and reading the relevant posts.)

TL;DR: It may not be your landscape that is the problem, but simply a rendering issue. Depending on how much VRAM you have, the size of your splatmap textures, the complexity of your materials, etc., the engine may not be rendering certain cells.

I hope this gives you something else to look into. I apologize for not being more specific, but since I myself am still learning World Partition I didn’t want to risk giving you wrong info.

4 Likes

Thanks for sharing your experience! This is definitely something I have not considered looking into. It’s an excellent suggestion!

I will need to read up and investigate this a bit more. Though in my case, I loaded the default Unreal’s Third person example and the size of my map was incredibly small with no additional materials. The furthest pink square you see in my original post is the extent of the map. The terrain itself has default PBR material with one color value. It would be a little weird if the engine can’t properly render empty flat foliage less terrain.

I do wish Unreal would release a little bit more information on this topic as it seems to be bothering a lot of people haha

1 Like

Everything is relative to your GPU’s VRAM capacity. Also, the default setting for that pool is rather small, so apparently a lot of people have needed to increase it.

From what you said in your new reply, I don’t think my suggestion is going to help you, because I think you have a different issue going on.

Do make sure you have the cells loaded in World Partition. Don’t just assume they’re loaded because surrounding cells are.

2 Likes

What are you using for a Loading Range value?
Distant cells outside of the Loading Range will load in a peculiar fashion because Epic tries to guess what cells are visible and loads them.
The only sure method for getting a cell to load is if it is within the Loading Range.

2 Likes

That would be the four squares I am standing on shown in my screenshot. Anything outside of it as you mentioned gets loaded in a funny way.

The issue has to do more with lack of control or predictability in what Unreal is loading.

If I take my scenario, increase the loading range to a massive landscape, then there are patches of massive terrains in far distance and outside of loading zone that may appear while others will be missing. I could technically resolve this if I cover the entire land with the loading range, but then that defeats the purpose of this tool.

This is also not the behavior that happens with regular actor/static meshes. Those objects always respect the loading zone and disappear once the cell they are part of goes outside of the loading radius. The terrain cells are the only objects I’ve come across that don’t behave the same way.

I am attempting to use a lot of HLODs and Data layers to possibly negate the loading issue.

However, I haven’t had a lot of luck with Unreal’s HLOD builder. It is incredibly finicky as it crashes often. It also becomes increasingly unstable as we add more land and objects that would need to be part of HLODs.

I am trying out an approach where only Terrains get HLOD, and nothing else is part of the HLOD build. Rest of the objects either have manually setup LODs or they are nanite meshes. I haven’t gone far enough to suggest it as a surefire way of treating this issue, but it seems like the way Unreal wants us to use this system.

1 Like

Having similar issues.

Is there a way to have larger distant meshes loaded at all times? For example, we have a large mountain/castle mesh in the distance that acts as a landmark but it is unloaded during gameplay.

Another issue was the player character basically disappears during gameplay as if they died, or were destroyed.

I’m very familiar w UE, but have only today converted a map to WP.

2 Likes

This has been discussed on this thread:

and someone from Epic recently noted it’s being addressed in 5.1 release.

If you want this fixed go and vote for this ticket - Unreal Engine Issues and Bug Tracker (UE-151797)

2 Likes

I have the same problem as you :frowning:

2 Likes

From sounds of it, this bug report is hinting at static objects opposed to terrain. They both behave slightly differently from my tests. But if the same fix works, I will be very happy!!!

Still an excellent post for people talking about terrain cell missing. Thanks for sharing

You can increase the loading radius form your streaming source to keep things loaded at all times. Another thing you can do is build HLODs which will be replaced over removed. You can also control that using Data Layers I believe. Despite all of that, the system isn’t perfect for me unfortunately.

For the player character part, I would need to see it more, but I believe there is an option somewhere you can set for streaming sources in WP :slight_smile:

Problem solved : Fixed issue of character getting destroyed
You have to build the HLOD and the Minimap
and you must not forget to put the actor component “World partition Streaming Source” on your actor, or the player

1 Like

I’ve got the same problem here, but your suggested solution does nothing to alleviate the issue.
I’ve gotten it to the point where it’s very reliably reproducable.

What’s really happening isn’t that your character is getting destroyed, it’s getting RESET to where it’s originally placed in the world.

In my case, i can drive a vehicle to a certain point, where it’ll get killed/reset, eject from player-controller, and fly back to where my vehicle is spawned, and it’ll be placed back there again.

now Ive managed to trace this problem back to actor ownership, at least in my case.
It seems to me that when i placed my vehicle in the world, that world cell became it’s owner, when the cell got unloaded because it was far enough away, it also unloaded the vehicle that was in it., moving back to the cell would load it again, with aforementioned vehicle.

a way to fix this is to simply spawn the vehicle trough blueprint, i simply made a spawner-actor that i used to spawn vehicles in the levelblueprint.

So far, this seems to have resolved my issues of player death/removal.