Crash in cooked game after upgrading to 4.25.1 requires landscape to be deleted

After upgrading from 4.24 to 4.25.1, getting this crash in cooked games only, anyone seen this before?

I can get around it by deleting my landscape, but there has to be a way I can save my landscape…

crash after upgrading to 4.25.1 Licensee/Sync/Engine/Source/Runtime/Landscape/Private/LandscapeRender.cpp Line: 2397

303523-crashcapture.png

303920-annotation-2020-06-08-231621.png

Seems I’m also getting the exact same error on a package of mine, so this doesn’t appear to be a ‘unique’ problem.

305146-capture.jpg

Same here…

Okay so I’ve made it work now by disabling tessellation in my landscape material settings… Do you have tessellation in your landscape?

Yes, although this only works as a temporary workaround since it comes with a pretty significant drop in visual quality.

I’ve been doing some manual checks, and I realised that my MI_LANDSCAPE material may be causing the issue. Do you all have Bushify installed like me?

no brushify installed here

confirmed removing tessallation fixed the issue

I am encountering the issue as well, on landscape with PN_Triangles tessellation. The maps in question work find in a cooked build once and the, if I try to load them again, it asserts. Restarting the PC “fixes” it.

What seems to happen is that the landscape material is correctly loaded via the FLandscapeComponentSceneProxy constructor in LandscapeRender.cpp. In that constructor it verifies whether the quality level, hardware and material support tessellation and if so, which type. It does so, by passing the material as material interface to RequiresAdjacencyInformation() in TessellationRendering.cpp.

However, the second time around, the material in the interface is empty, verifying that the fallback WorldGridMaterial does not have tessellation and then the actual material wants to kick off tessellation in another part of the pipeline to run into missing adjecency information.

For the fun part: I temporarily worked around the issue by adding a bool param to the RequiresAdjacencyInformation to check if the call came from LandscapeRender and if so, only return if the hardware and quality level support tessellation. As replacement, the check if the material itself has tessellation is left to the LandscapeRender class itself. This may or may not be super thread safe, but for now it works.

Edit: Epic’s bug for this issue Unreal Engine Issues and Bug Tracker (UE-94535)

This is horrible because we got many many Levels and some random ones are crashing in Cooked Builds only with the same type of Error.

Something goes from with LandscapeComponent and it’s Array.

So now we are dead in the Water to even find what Levels will crash due this this. Before UE 4.25 it was not a problem at all (we had UE 4.24).

Feels extremely sloppy that this was not caught up on since it seems way too many Landscapes are broken without reason in 4.25

These kind of “bugs” destroy Projects and the trust in UE as a serious tool.

We finally found a “workaround” just half hour after my rant post :slight_smile:

Seems some Landscapes after upgrading to UE 4.25.x that are smaller end up with just 1 total Component.

Changing the Quad size and the Apply it fixed everything and we got more than 1 Component as a result. The Cooked Level then worked flawlessly.

@DavidTatti Thanks for the tip, that fixed my problem.

My landscape didn’t have 1 total Component, but I was removing some tiles from my landscape,
after this the crashed occured.
Just go to Landscape->Resize->press Apply did the trick for me
(without the need to change the quad size)

Thank you @DavidTatti , had to exact same issue and unknowingly my landscape had turned into only 1 component. After just applying the resize settings it now builds and cooks correctly.

Holy ■■■■ - I have had this as an issue on a released game - Finally

Unfortunately the problem is back and now also your workaround doesn’t work anymore.
The problem still persists in 4.26.1 and UE-94535 was closed as “won’t fix”…
So for now I need to disable tesselation in all my maps…

Never had this problem in the past, but after packaging my game this time around I always get this error message. I have completely removed tesselation and world displacement, I also resampeled the Landscape on all levels, but I still can’t seem to get rid of the error and actually start the game. Any new ideas anyone?

It’s still possible to fix it in the landscape render code without losing tessellation.

For me it wasn’t enough to disable displacement (with parameter).
I needed to change the Material node parameter D3D11Tesselation Mode to “no tesselation”.

Yes forgot to add that later we also had to disable Tesselation Mode described by Allonan.

It’s not enough to disable Tesselation, the Master Material must be a type without Tesselation support at all.

We just upgraded to 4.26.1 and so far these fixes still work good.

So to sum up for the fixes we made and got rid of the problem:

  1. Make sure your Landscapes doesn’t have 1 Component after the update, if so, just make a Apply changes to the Landscape and it will be recalculated. Yes if you have many Levels this will take some time manually.

  2. No Master Material used on Landscapes can have Tesselation type. You must change the Material Type described by Allonan. It’s not enough to simply ignore the Tesselation output in the Material. It’s still in effect.

So we just can’t use tessellation? Why isn’t this being fixed (question for Epic)? This seems like a big deal or am I missing something?