Iris does not allow the same object to be added to the different ReplicatedSubobjectLists

Iris does not allow the same object to be added to the ReplicatedSubobjectList of different components belonging to different Actors , while the two Actors have the same owner PlayerController.

This seems like a bug, because the original replication system used to allow it.

https://github.com/EpicGames/UnrealEngine/blob/release/Engine/Source/Runtime/Experimental/Iris/Core/Private/Iris/ReplicationSystem/ObjectReplicationBridge.cpp#L550

For example, there’s a replicable UObjectA, and we have an ActorA with a ComponentA, as well as an ActorB with a ComponentB. Both ActorA and ActorB has the same Owner PlayerController.

After calling AddReplicatedSubObject(UObjectA) in both ComponentA and ComponentB, Unreal fails the check at the above part of the code.

that check is iris saying one network object can only have one owner, so registering the same UObject on two different components is rejected on purpose, not by accident.

pick one owner and register it once. if the object belongs to actor A, add it to component A only and let component B hold a reference to it, the reference travels as a handle to the object that allready exists on the client. for objects that really do belong to both, put them on a shared host that everyone points at.

worth knowing for later, the registered subobject list on 5.6 and up enforces the same one owner rule, the legacy path was looser because it replicated per actor channel. blueprint object replication from fab is a UObject replication plugin that keeps one host per object, so you stay on the right side of that check. ue5.0 to 5.8.

btw i used blueprint object replication from fab https://www.fab.com/listings/e26dcf07-7c78-4e67-8e56-272cf6df8021 it worked for me