World Partition Brings Back Actors That I Have Deleted

Hi Everyone.

So, as I said. I have a level that implements the world partition functionality. Here’s what I did.

  1. I place actors into the level
  2. Then, after a few days, I decided to remove some of it. I also tried to adjust some of the actor components locally.
  3. I package the project for testing, and weirdly enough, the deleted actors are present in the level, and my edited actor components also exist in the world. Although it looks fine playing in the editor.

I don’t know why this is happening. It’s very weird and I’m opened to any suggestions or ideas about why this is happening in UE5.6 version.

Thank you.

Hello @56legion ,
I’ve been reading several posts and it seems this bug has been around for quite a while.

The only solution that consistently seems to work is deleting the files directly from the file explorer with Unreal closed.This video explains how to do it.
Some people also mentioned that pinning the actors can help (though it only worked for a few), and others said that running Unreal as administrator might fix the issue.
Hope it helps !

Hi @BRGEzedeRocco !

Thank you for your answer. I’ve been playing around with these options myself for quite some time now. I can still tolerate it if it’s a small number of actors to delete. But I’m talking about hundreds of assets that restore to their original state in the editor. Things that should not be there still exist. This also applies to the timed spawn actors that should not be spawned at the start, but are getting spawned. It destroys the overall game design mechanics.

It does work if I delete it manually. But I’m really desperate to know how I should deal with hundreds of actors that aren’t supposed to exist. Please let me know if you have something. It’s a huge level to deal with.

Just to update. I’ve finally found the solution. It’s not a bug.
It’s long, but bear with me to understand how it works.

Explanation:
Unreal Engine isn’t friendly with Windows’ security system. Thus, it always treats the accessibility of Unreal Engine as hostile or blocked. This only applies to high-end complex writing and memory access related, otherwise, we can’t even save the project.

So, by default, Unreal Engine’s method of world partition is to store all the actors’ data into a folder called “ExternalActors” (which is not accessible in the content browser). So what it means is, any changes inside the editor aren’t saved locally as Windows’ security system blocks the access because these actors (I think) require complex memory access, which is only permissible for Administration access only.

To test it out, you can select the actor you want to remove, Outliner → right click → Copy file path → paste inside your Windows file explorer. Then, you can try to delete the actor inside the Engine’s editor, and you will see that it will not be deleted inside your Windows Explorer.

Solution:
You must run Unreal Engine as an Administrator. It will not allow you to run as an administrator if you execute it from your Project’s executable file. Microsoft do not make it easy as right-click and run as admin, for security reasons. You will have to go to UnrealEditor.exe to run as Admin. And from there, you can launch your project.

Then you can update your changes by unloading and reloading the cells in the World Partition Editor.

Hope it helps!

Thanks for sharing such a detailed explanation, and glad you got it sorted out! I’m sure it’ll help others who run into the same issue!!

Thank you too. :innocent:

Sorry for necro-ing this thread, but I may have found an alternate reason for this.

When you delete Actors with OFPA enabled, the deletion goes into the transaction buffer where it remembers that you’ve performed the deletion, however, its now the only place unreal remembers.

If you then go on to do other operations in the engine (say painting foliage) the buffer can get full, at which point, it will start “dropping” older transactions from the buffer, but this limit is size based, not count based.

Our artists have been regularly complaining that Actors they were deleting (or say, moving between levels) were “reviving” when they restarted the project.

It turned out that they were waiting a long time before Saving, and the deletions in the transaction buffer were getting purged from History, which meant Unreal forgot the Actor was ever deleted, but also its not in the Level anymore.

That was, until they reloaded the level, and then Unreal would then rediscover the Actors “External Packages” and they became re-existed.

I found the Config settings for this buffer size, which by default is only 256MB (above i had it set to 1GB):

And bumped it way up, and this has helped significantly, but not eliminated the problem.

In discussion with one of our other techies, the best solution would be for Unreal to either:

  • Actually delete external actor packages at the same time the actors are removed from the World, and therefore if you “undo” an actor deletion it also has to restore the external package.

OR

  • If the undo history buffer size is reached, the editor should detect deleted actors in the transactions it wants to purge and then delete the actors external package.

If you are working in source in the meantime you could try do one of these options yourself, I think the second one would be easier implement.

Agreed, but I would argue that increasing the buffer size is NOT an optimal solution. Unless you know what you are doing, please avoid it. Simply because buffer size isn’t meant just for deletion actor history. That basically competes with texture streaming pools, Nanite proxy meshes, Lumen scene captures, and the DDC cache.

You are reserving a chunk of the memory just for the undo history at the cost of actual editor performance. If your level is small or simple, I don’t think it will affect much, but you are using world partition, which isn’t small anyway.

I would encourage you to just grant the administrator access for the writing process; that’s all. Unreal, should work fine this way.