Using World Partition in UE5 when working in a team

How to use World Partition in Unreal Engine for team collaboration and efficient development. We will cover the one file per actor approach and source control.

Matthäus Niedoba
June 2, 2023
7
min read
Content

Unreal Engine 5 (shortened to UE5) introduced the World Partition feature to speed up working on large environments. In this article, we will explore why it makes sense to use World Partition. We will also compare the experience of working with World Partition in UE5 to working with level streaming in UE4.

Why World Partition was added to UE5

World Partition is a tool for building open-world games, where we only want to load a fraction of the level to save memory. Besides that, it also has other benefits.

Better memory management

World Partition provides better tools to handle large environments efficiently. It allows developers to load only the necessary assets, ensuring a smooth experience in the editor. It is also easier to manage instancing of actors and assets in general than it was in UE4.

Multiple members can work on the same level at the same time

World Partition greatly improves team collaboration by eliminating the need to lock the entire map. Multiple team members can work on different areas of the map simultaneously.

Smaller file uploads

This is important when using Source Control. With World Partition, game versions become smaller as only the changed assets and not the whole map file need to be uploaded.

Using World Partition in UE5 allows for faster commits due to one-file-per-actor. You don’t have to upload the whole map all over again.
Using World Partition in UE5 (right) allows for faster commits. You don't have to upload the whole map again (left).

Working with World Partition in UE5 vs. working in UE4

In UE5, new levels are World Partition-enabled by default, but we have the option to disable it if desired. It’s not compatible with level streaming. However, it is highly recommended to utilize it even if you are not building an open-world game.

A Level Streaming replacement

The runtime loading and unloading works great out of the box and replaces level streaming. World Partition also introduces Data Layers, giving us more control over loading and unloading actors. It’s an alternative to the previous layer system.

A screenshot that shows how Data Layers are used to group parts of the level using World Partition
Instead of using Layers (UE4), Data Layers are the new way to group certain parts of a level when World Partition is enabled.

The World Partition editor

The World Partition editor provides greater control over what gets loaded by visualizing actors within the map.

A screenshot that shows the World Partition Editor in UE5
You can load and unload particular areas of your level in the World Partition Editor. It also shows the location of all the actors (marked as rectangles here)

Using external actor files vs everything in one map

UE5 also introduced one-file-per-actor which changes the way how data is stored in the project.

One file per actor

Instead of storing the entire content within the .umap file, UE5 stores actor data in small external .uasset files. For example, when moving a tree within a level, the modification is not stored in the .umap file itself. Instead, it is stored in the .uasset file that is placed in your project directory.

UE5 uses One file per actor and stores actor changes in small .uasset files
UE5 stores changes in the actor in small .uasset files with a coded filename. They are stored in the __ExternalActors__ folder

This accelerates development. With the one-file-per-actor approach, you no longer need to lock the entire map. Multiple team members can work on the same map concurrently.

Submissions to Source Control are lighter. Committing changes to source control only involves the small actor files, making repositories lighter and reducing storage requirements.

Actor files are hashed and a black box in Windows Explorer. They don’t show up in UE’s asset browser. Please don’t try to edit them.

Convert an existing map to World Partition

Go to "Tools" and select "Convert" in UE5.

UE5 has an inbuilt conversion tool that works on normal UE4 maps
UE5 has an inbuilt conversion tool that works on normal UE4 maps

The conversion process creates a new .umap file along with external actor files.

You have to select the map which you want to convert. It will create a new map in the same folder with a “_WP” appendix
You have to select the map which you want to convert. It will create a new map in the same folder with a “_WP” appendix

Open the converted map and load the regions as needed.

Per default your viewport will be black, because nothing is loaded. You have to manually load the regions to your map.
Per default your viewport will be black, because nothing is loaded. You have to manually load the regions to your map.

Working with World Partition

If you created a new level in UE5, it will be set to World Partition via default. If you open up a converted level from UE4, you will be wondering why it is suddenly empty. That’s because you have to tell UE which part of the level it should load.

Open the World Partition editor and enable the "Show Actors" option to visualize actors within the map.

Show Actors will display bounding boxes on the map
Show Actors will display bounding boxes on the map

Zoom in to inspect actors in detail.

Use the mouse wheel to zoom until you see actors as bounding boxes
Use the mouse wheel to zoom until you see actors as bounding boxes

Select specific regions and load or unload assets as required.

Actors will be loaded into your scene after you created a region. Finally, you will see something in the viewport.
Actors will be loaded into your scene after you created a region. Finally, you will see something in the viewport.

Place new actors or move existing ones within the map.

Note that the asterisk (*) indicating unsaved changes appears on individual actors rather than the entire map.

Instead of marking the .umap file unsaved, your individual actors will be saved after you press Ctrl-S
Instead of marking the .umap file unsaved, your individual actors will be saved after you press Ctrl-S

Save the changes, which will result in multiple files being saved.

Submit your changes via source control

We will use Git with Anchorpoint here, but this works with any source control provider.

Open your source control application and take a look at your changed files (or change list).

Anchorpoint one file per actor
Anchorpoint understands One File Per Actor and will display the original actor names instead of the hashed file name

Add a meaningful message describing the changes and push the commit.

Don't type in "asdf", but for the sake of your team, just write what you did.
Don't type in "asdf", but for the sake of your team, just write what you did.

Since only small actor files are uploaded, the commit process is pretty fast. It’s a few KBs instead of hundreds of MBs.

The more actors you change, the bigger your version. But it’s still small compared to uploading the whole .umap file.
The more actors you change, the bigger your version. But it’s still small compared to uploading the whole .umap file.

Wrap up

World Partition offers better tools for working on large environments, improves team collaboration by allowing parallel work on maps, reduces project sizes, and replaces level streaming with more control over loading and unloading assets. The one-file-per-actor approach keeps repositories lighter and avoids locking while level files. You can convert your existing maps to World Partition with an integrated utility. Submitting changes via source control is faster, and you have more control over editor performance and level streaming.

Source control for Unreal Engine

Anchorpoint is the Git based source control application for artists, which is optimized for Unreal projects.
Learn about Anchorpoint

Frequently Asked Questions

What are Data Layers?

Data Layers are a replacement for Layers in UE4 and help you to manage when actors should be loaded or unloaded. They help you to manage complex levels with a lot of assets. You can control them via Blueprints and have options like visibility, etc.

What are HLODs?

Hierarchical Levels of Detail (HLOD) are used to manage static mesh actors that are visible from a long distance of the viewer. They combine these actors to a single proxy which helps to reduce draw calls and increases performance.

How to enable World Partition?

In UE5, every new level has World Partition enabled by default. When you want to convert an existing map to World Partition, use the conversion utility which can be found under “Tools/ Convert Level…”. This will create a copy of the map with World Partition enabled.

How to disable World Partition?

First of all, go to the World Settings (Window / World Settings) and disable the checkbox “Enable Streaming”, which can be found in the section “World Partition Setup”. After that, open the “Advanced” section and click on “Disable World Partition”. Keep in mind that this will clear your scene.

A better way to do this is creating a new level from the “Basic” template.

World Composition vs World Partition?

World Composition is a feature that was introduced in 2015 for optimizing huge levels for performance. Unfortunately, it’s a pretty tedious system and requires a lot of work to create proxy meshes. It is a pretty outdated system, which is not available in UE5 anymore. It has been replaced by World Partition.