Shipping build loaded landscape grass too late. How can it be hidden?

Hello everyone,
we have the problem that the grass we generate via the landscape material is loaded into the game in batches. In a shipping build, the server and client are already spawned before the landscape grass is fully generated. I’m wondering how other games hide this?

Is there maybe a delegate that we can register for when all patches of the landscape grass have been generated?

Here is the method we use to generate our grass: Grass Quick Start in Unreal Engine | Unreal Engine 5.5 Documentation | Epic Developer Community

Attached is a short video showing the issue we’re facing.

Hey @HeySebi!

So this is what loading screens are for! If you play many online games you’ll notice that sometimes peoples’ characters are loaded in but they aren’t online yet- this is an example of what happens when there’s not a loading screen. :slight_smile: Just make sure to not close the loading screen before it’s all loaded and you’ll be fine.

You may want to watch a few separate tutorials to get you where you’re going, but here’s one to start off for you!

Hope that helps!

Hey, thanks for the response. I’m aware that I could simply display the loading screen longer and hide it that way. That’s why I’m asking if there’s a delegate that provides information when all the grass patches have finished loading. This way, I wouldn’t need to control it with time but could instead remove the loading screen more effectively when it’s truly done.

Well, if you absolutely need that, you need to switch to having a persistent level and use level streaming. Level streaming and ASYNC loading + loading screen means the loading will stop AS SOON AS all is loaded. But loading persistent levels means unless you want to dive deep into C++ and also do a good bit of code that by nature would be very error-prone, you absolutely have to guess how long to run the loading screen, unfortunately. :frowning:

Here’s a tutorial to get you started on that!

Disclaimer: This link is not associated with Unreal Engine, Epic Games, or their partners.

Only other option here… in BP, is to do manual detection of HISM clusters. Simply put, a lot of visibility traces on your grass. You don’t have to trace for each individual instance. You only need to detect one per cluster.

1 Like

Hmm, would there be a more elegant way to do this in C++?

I wouldn’t call it elegant, but yes there are ways to do this with C++. I would also call it far more work and time than any of the above options for someone equally skilled in both C++ and BP. Also if you have no other C++ in your project it requires learning a new workflow permanently - hybridizing is a full commitment. If you were to go this route I’d suggest making it a plugin to avoid that, which yet again is rather advanced comparatively. If you’re not an experienced programmer I’d advise one of the above options for speed and ease. As long as they seem like they’d take, the C++ options are far more involved.

Make sure you have backups before trying any of this stuff, ESPECIALLY if you try to integrate C++. There is no way to undo that process!