Why stop at small scenes, when you can build entire worlds?! Chime in with your questions for the Worldbuilding Team on this month’s Ask Unreal Anything, featuring our exciting guests Jean-Francois, Jean-Sebastien, Richard, and Vincent!
Drop your questions below for this AMA-style event about how to approach workflows for creating large levels and get insights on features like World Partition, Data Layers, and more! We’re also happy to discuss overarching development guidance, career advice, industry questions, and general questions about the guests.
Jean-Francois Dube is Principal Engine Programmer on the Worldbuilding Team. He’s been making games since 1997, with over 20 shipped game SKUs including titles in the Assassin’s Creed and Rainbow Six franchises. Jean-Francois is passionate about game engine design and playing guitar.
Jean-Sebastien Guay, Technical Art Director on Unreal Engine for the last year, has been working on games for the last 20 years. His areas of expertise include developing large open worlds, rendering, and world building features. In addition to his passion for games, he loves photography and being a dad.
Richard Malo is a Senior Engine Programmer. He started programming at age 13, and now boasts over 20 years in the games industry, where he’s followed his passion for figuring out how things works. In his free time, Richard loves to play ice hockey, golf, and the piano, which he also composes music for!
Vincent Beauchemin leads the Worldbuilding Team with 18 years of experience working on tools and pipelines for games, such as Splinter Cell: Conviction, Assassin’s Creed Unity, and Vikings. He loves empowering artists with tools to “create magic.” In his free time, he plays tennis, chess, and Starcraft 1—yes, you read that correctly.
GUIDELINES
Ask one question at a time by replying to this topic, using the button at the bottom. Please read through the questions to see if your question has already been asked, before posting your own.
Start with one question to give others a chance to participate.
Please do not reply to anyone else’s post—the purpose of replies in this topic is to receive answers from our guests. If you’d like to discuss a related topic in more detail, create a new topic.
Keep in mind, this is NOT a support session. Questions that are specific to your project or troubleshooting will be removed.
And don’t forget to have fun
Posts not following these guidelines may be removed by moderators to keep the AMA flowing smoothly. Thank you!
It will be necessary to see it, I think the stream will be extremely interesting.
*The team of speakers is simply amazing: two maestros who worked on the Assassin’s Creed series, a loving father, a photographer and an outdoor enthusiast.
My (old) question: can we FINALLY make easily flat-looped maps? A map that loops to itself in X and Y directions. So the the result is nice looped-infinite world. Please? Games in 90-ies and later had that… I believe, mighty UE5 should be able to do that too. Thank You.
Hi all! Great topic, tnx for listening to the community
I have a question about setting up your project for large worlds. How to prepare local/world coordinates of the geographical (3D) data? And how to deal with data being too far from 0,0,0? Translate the data before importing, or build something in Unreal to do a correct translation? Which steps to take?
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!
Conveniently timed to match up with my most recent obsession
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
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?
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.
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?