Ask Unreal Anything: World Building | August 23, 2022 at 12PM EDT

Thank you so much for hosting this!
Are there plans for 32-bit heightmaps?

Yes this is still in development. It wont be finished for 5.1. For 5.1, we have done the HLOD support of Water. However, we need to put more effort into authoring water partially in the Editor to support big worlds, the same way we have done it for the landscape.

There’s currently no support for that, but you could listen to UDataLayerSubsystem::OnDataLayerRuntimeStateChanged and react to the changes with your spawned actors.

1 Like

I build interactive projects for museums where the user is able to visit the same landscape but from different time periods. In UE4 I just loaded in a new level which had everything in it. For example, moving from a medieval landscape to an Iron Age landscape. It’d have the same terrain but all the Fauna & Flora, Props and NPCs would change to reflect the new time period. The huge landscapes I build use height maps.

Q: Is it possible to keep the landscape and swap its landscape material AND all the above Fauna & Flora, Props and NPCs in BPs? I’d like to, for example, swap all the fauna on a click of a button. Is that possible in UE5?

To allow multiple people to work on the same location will require more coordination on your side than before, because before you would checkout the sublevel and have total control of the area. Some larger teams would split the worls into subleve “layers”, one for each discipline, but you can still have a problem where a lighting arsists tweaks lights and another LD is completly changing the way the room is set up.

Actor files are using GUIDs on disk for several, technical reasons (mainly future optimizations). If you use the in-editor source control dialog, you won’t be in contact with the file names, but you would see the real actor name and label. Also, the in-editor source control dialog provides changelists validations, which should trap commoon mistakes such as missing files from changelists, etc.

Two of the best practices for creating Large Worlds is to work in a layered approach and validate progress through fast small iteration loops. Do not hesitate to heavily prototype and learn from each steps along the way.

Most large team productions will use these methods to confirm their gameplay and world design, which allows you to progressively approve your ideas and move forward without too many surprises.

These changes will still occur and this is where using different production methods can help mitigate the impact, i.e using procedural world building techniques and using tools such as data layers and level instances.

Q: any tutorials on this in the future, swapping worlds at a click of a button? Arran Langmead touched on this in his vid and illustrated something like this from the Valley of the ancients UE5 demo. Can I swap out landscapes or is it just meshes??

The best we have at the moment is UE5 Tech Talks. Search for ue tech talk on YouTube.
There are 7, this is one of them: https://www.youtube.com/watch?v=usJrcwN6T4I

Good question! 3D navmesh has been in our whishlist for a while but we have nothing planned for the next releases, sadly.

We are working on fully supporting Large World Coordinates within World Partition context to enable these very large worlds creation. We are also always looking into new production methods to speed up iteration at scale.

For a fully runtime procedurally generated world, not that much.

If what you have is a collection of blocks that can attach together randomly (like rooms with doors as connection points), you could implement a runtime hash that handles the selection of these rooms based on a seed, and these blocks could have data layers that can be activated (for missions, specific events, etc).

Another way data layers could be usefull is if you have hand-crafted areas in your procedurally generated world, such as cities or anything designed by hand. Then, you could have data layers to enable/disable things, etc.

Hope that helps!

1 Like

I really need Hawk_UK question answered. Its very confusing working in wp without documentation

1 Like

No, that is not in the plans at the moment.

Q: Is there a plan to make a version of The Matrix Awakens procedural buildings without the external need of Houdini? Or maybe a new Epic plugin? I know there is a plugin called “Procedural Building Generator”, but what you did with TMA is way better, it would be greate to be able to do everything inside the editor, maybe at runtime.

There are no plans to make the Rule Processor plugin part of UE at this point in time, however we are working on another solution to this problem. We will share more at the right time.

You can take advantage of Runtime Data Layers to hot swap between 2 sets of Props/NPCs/etc. This exactly what the Ancient Game demo is doing when switch to the “dark world”. If you want the transition to be as quick as possible, you can preload the 2nd set of data by setting the runtime state of your Data Layer to “Loaded”. When you are ready to swap, change Data Layer 1 from Activated to Loaded and Data Layer 2 from Loaded to Activated.

As for changing the landscape material at runtime, I know it’s possible but I’ll let my colleague answer that.

1 Like

Hi. When building the HLODs, my pc keeps running out of vram and I get a GPU crash error. I solved it getting some static meshes out of the HLOD generation, but I intend to scale my level and get it to be much bigger in the future, with many more static meshes.

Is there a way to setup the HLOD generation to be able to build without consuming so much vram no matter the size of the world to build, or use something similar to a render farm or so? Is it possible to gain more margin by increasing the page file of the pc?

PIE will not duplicate already loaded actors in the editor, they are always streamed from disk, unless they have unsaved modifications. So it’s normal that it has no impact,

Make sure that the size of your cells and the loading radius, otherwise you can be loading the whole world when entering PIE. You can use the console-command wp.runtime.toggledebugdraw2d to display the loaded cells. Once that’s properly set, it should be quite faster en enter PIE.

1 Like

This is possible with world partition data layer system in 5.0, as seen in the Ancient Games demo. It will be further improved on in the coming 5.1 release that includes data layers as assets (shared across worlds) and game feature plugin supporting data layers as well. These can be activated and managed from code, blueprint or sequencer.

1 Like

If you are using a runtime virtual texture, you can change your material dynamically by updating and reading a value from a Material Parameter Collection and trigger a global refresh of the runtime virtual texture using Invalidate function targeting the RVT Component and retrieving your RVT volume bounds (this work at runtime/in-game).

You could also re-assign a new material to all proxies but this has greater impact when swapping.

image

1 Like