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

Would it be possible to implement a new form of displacement with collision, on micro or macro scale landscapes?

Any recommendations for navmesh usage in large worlds? How well are they working with the world partition system?

4 Likes

Thanks for the AUA! I have a question about multi-user workflow within the new World Partition-Data Layer system.

Qn: What is your recommendation for multiple users working together on a map, particularly if they couldn’t always work within the same space, ie. using the same wifi network, all the time?

I understand that there is the one-file-per-actor feature alongside World Partition, is that the optimal recommendation for teams moving forward? I used to work with Streaming Levels, and Data Layers sounds like it’s the same thing. Could I continue working like I used to using Data Layers, and reap the benefits of World Parition?

Sorry this broke down into several questions! I haven’t a lot of useful information on this, and most youtube tutorials I found, as excellent as they are, approach World Partition from a single-user perspective.

Thank you so much for hosting this! Forgive the length of my reply, but my question is a three-part question to do specifically with Runtime Data Layers

Q1 - Runtime Data Layer Loading Status
What is the official, recommended way to load in a data layer and know when it has been fully loaded in, based on the player’s location? The system we use right now is based on the implementation from VOTA (a constantly ticking function that queries the player’s location using the isStreamingCompleted() function)

Are there any plans to add an “on data layer loaded” event in the future?

Q2 - Allowing spatially loaded actors to change grid at runtime
For example, if a spatially loaded actor goes too far from its initial location, it teleports back home and reverts to its original state.

Is there any way we will be able to mark specific actors as “grid fluent” so they can change grids at runtime, and be unloaded correctly based on their new grid

Q3 - Setting the data layer/spatial loading status of spawned actors
When you spawn in an actor, if its containing grid is unloaded, the actor stays put. If you set the actor’s owner during spawn, then it unloads with the owner, which is a decent workaround.

But is there any way to set the data layer of a newly spawned actor?

Thanks again for putting this on, it really helps us as devs understand the amazing new technologies you guys are developing! :smiley:

Conveniently timed to match up with my most recent obsession :heart_eyes:

I would love to hear about some recommendations and best practices for iterating on Large Worlds.

All too often it feels as though resources and tutorials expect you to begin with a clear and flawless vision of what your entire world will look like at the beginning, and then provide you with the tools to realize that precise vision, but what can be done to prepare for the eventuality that things will change?

If a world is “done” but then a designer decides that a city needs to be moved 3km to the north-east and a large mountain placed where it used to be, will this always be a struggle? Or are there ways to properly prepare for this so that the changes are relatively pain free?

Maybe a bit broad of a question, but hopefully it’s practical enough to have some bullet-point answers :slight_smile:

1 Like

This question was addressed by Brian Karis here:

Ask Unreal Anything: Rendering | June 15, 2022 at 1PM EDT - #69 by BrianKaris

2 Likes

Thanks Amanda,

That is indeed encouraging news :slight_smile:

Is there a work flow or pipeline on how to properly work with world partition and multiple departments in the same given area? Level instances, prefabs, are some that come to mind but the hierarchy of nesting Level instances inside of each other to further breakdown the disciplines, how does that work within world partition? I would like to know how to have multiple disciplines potentially working on the same location at any given point for organizational reasons.

Notes:
I know all actors are their own actor and anyone can check them out. Not having proper naming convention makes this difficult to know who has what and who has been working in which area. Not being able to check in confidently and having extremely large changelist is difficult to keep track of changes.

Question 1: Now World Partition is working in 64bit, does the “Recommended Landscape Sizes Chart” from the “Landscape Technical Guide” UE5 documentation still apply to massive real world landscape map sizes when working within World Partition in UE5, or are we free to simply import whatever size a terrain map we wish now and UE5 will tile and partition the map into sectors etc depending on the settings within the UE5 World Partition details panel?

Question 2: What are the massive terrain size limitations for World Partition in UE5 now we have 64bit and the various world co-ordinate systems to work with in UE5?

Question 3: Is it better to import one whole terrain map or split a large terrain map into tiles before importing into UE5 World Partition and why?

4 Likes

Given the fact that world partitioning unloads actors belonging to cells, what would be the best way to save (and reload) public variables on those actors after they’ve been modified via player interaction?

Basically how can we reassign proper values to actors (ie. doors open/unlocked, etc.) that were unloaded from memory and then reloaded through the world partition system?

We’re talking here about keeping references to actors that get unloaded/reloaded.

1 Like

QUESTION: Will World partition support Landscape and landscape brushes/Water Plugin ?

QUESTION: Will we be able to use Data Layer Assets to create alternative world designs driven by custom logic much like we can with sublevels in unreal 4?

QUESTION: Are there new training videos being planned for the new open world tools - specially pertaining to achieving a good performance for current gen consoles?
(specially interested in workflows that take landscape brushes/water plugin and world partition in consideration)

2 Likes

+1 on this. I am using a combination of ZoneGraph and Recast Navmesh (https://twitter.com/royaldivisiong1), but to be honest I know I’m not doing it the most efficient way.

1 Like

Question: With reference to future World Building Tutorial Videos(or any UE5 tutorial videos) - Will these videos be a properly structured instruction series of videos starting from a complete beginners point of view right through to the most advanced usage techniques of World Partition rather than a group of guys/girls talking about the subject in general & then answering a few questions? I believe structured videos actual teach, the other simply provides a general overview of a features capabilities only useful to those already relatively proficient with such features, in my opinion. :slightly_smiling_face:

4 Likes

Question: After converting our level to world partition we noticed a large increase of waiting-time when entering play mode.

Prior to world-partitioning it took us 3 seconds to enter play mode but it now takes almost 14 seconds. Our world is not crazy large but we’ve heard from other developers having to wait more than a minute before entering play mode.

Interestingly there doesn’t seem to be any improvement whether we unload all the cells prior to hitting play or not.

So our question is: How can we improve this latency delay (which is starting to become a workflow hindrance)?

Dedicated forum thread here

1 Like

Such an interesting topic with so many challenges, not quite sure where to start.

The worldbuilding team seems to pack a couple decades worth of experience doing large open world games notably on Ubisoft’s games, which is probably one of the studios with the most expertise in the genre, looking forward to those answers.

Topics that come to mind are authoring/populating/efficient storing: what should we store, generate? Point Clouds everywhere?

1. Is heighfield based landscape rendering still relevant for high-end platforms in 2022?

Beyond the inherent challenges of streaming and rendering at scale, we have seen new behaviours emerging with UE5 notably within the demos put together by Epic, in which open worlds end up being made of tiles of bashed together photogrammetry’ meshes.

Even organic terrain rendering which should be the predilection application for traditionnal heighfield based landscape rendering, ends up overshadowed by the amount of details generated by such an approach, which could fairly well be expanded to any scale.

Any plans to create tools to help create such a new terrain format, creating tiles of meshes and computing their agglomerated collision(marching cube?) within a certain area?

2. Will Unreal Engine have the tools to populate at scale?

The Matrix demo was fantastic and really highlighted how important third party tools like Houdini are to generate that much content at scale, from the city structures, roads, to populating parked cars etc… I there any plans to create some tools to help authoring and populate at scale without relying on third party tools?

3. Anything to look forward to that you can share with us for the future of Unreal 5 ?

Thanks!

Bonus Question: Why does most open-world game nowadays still feel incredibly static: why can’t we break buildings everywhere, dig holes in terrain when our cars explode or our grenades explodes (i am thinking Ubisoft games open-worlds here). Is it purely a design decision?

4 Likes

Hello, thank you for this opportunity, this AMA is very timely and much anticipated!

Q1. Would love to hear a solid best practice, current tech answer for the road shading on very large terrains, is it megamesh like you did with Matrix highways or mesh projected RVTs or something else ? Open world, lots of different road type with current ue5 systems.

Question: Is the Water Plugin currently in development? Will it be finished/made production ready - meaning, can we expect it to be taken forward and be compatible with the other open world tools in unreal 5?

2 Likes

Question: How can DataLayers and WorldPartition help if you want to build a procedurally generated terrain?