When an actor channel is cleaned up, the actor and its subobjects in the CreateSubObjects array are destroyed/marked as garbage in DestroyActorAndComponents. However, default subobjects are not added to the CreateSubObjects, and so these won't be marked as garbage when the actor channel is cleaned up. If the actor comes back into relevancy on the client before garbage collection is run, it seems as though the package map will get the reference to the old default subobject when serializing its NetGuid, rather than the newly created actor's subobject.
Dynamically spawn a replicated actor with a replicated default subobject into a world partition cell.
Travel into that cell and then back out, so the actor's channel is closed and cleaned up, destroying the actor.
Before garbage collection happens, travel back into the cell.
Expected: a new instance of the actor/subobject is serialized on the client for the associated NetGuids
Actual: a new instance of the actor is spawned, but the package map loads and serializes the first actor's subobject for the associated NetGuid
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-193000 in the post.
1 |
Component | UE - Networking |
---|---|
Affects Versions | 5.4 |
Target Fix | 5.5 |
Created | Aug 15, 2023 |
---|---|
Updated | Feb 23, 2024 |