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.