Subobject of garbage actor may be reassigned to newly created actor on the client

UE - Networking - Aug 15, 2023

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 adde ...

Attachment changes on the client for non-replicated actor may be stomped by replication

UE - Networking - Aug 10, 2023

For projects relying on attachment to be performed on the client before the server, such as to prevent latency, this can result in attachments being overridden when USceneComponent::OnRep_AttachChil ...

Blueprint actor component properties do not automatically flush dormancy when set

UE - Networking - Aug 8, 2023

UK2Node_VariableSet::ShouldFlushDormancyOnSet only returns true for classes that derive from AActor. This leads to inconsistent behavior, as the owning actor will not have FlushNetDormancy called on ...

Push Model may prevent actors from going dormant

UE - Networking - Jul 24, 2023

This seems to happen because FObjectReplicator::ReadyForDormancy will continually return false while FObjectReplicator::CanSkipUpdate returns true. In ReadyForDormancy, the actor's SendingRepState h ...

Object may not be able to go dormant with PushModelSkipUndirtiedReplication enabled

UE - Networking - Jun 16, 2023

In ReadyForDormancy, we check if the replicator has any change lists or property updates that haven't been acked. However, these checks are not made in CanSkipUpdate, which can result in the object ...

Check in SetNetPushIdDynamic fails when deriving object from class with no replicated properties

UE - Networking - Jun 5, 2023

UHT will only emit the REPLICATED_BASE_CLASS macro and set the NeedsPushModelHeaders flag when the class has replicated properties. If a base class doesn't have any replicated properties, it will le ...

Objects without custom delta properties can return false for CanSkipUpdate with net.PushModelSkipUndirtiedReplication enabled

UE - Networking - Jun 5, 2023

This seems to occur after receiving a Nak for certain actors. FObjectReplicator::ReceivedNak will decrement SendingRepState.CustomDeltaChangeIndex even if the object has no custom delta properties. ...

Dormancy validation log warnings when COND_Never property changes

UE - Networking - Jun 2, 2023

FRepLayout::DiffProperties doesn't check if the property's conditions is COND_Never or if the Parent Cmd's flags have the ERepParentFlags::IsLifetime flag (which FRepLayout::InitFromClass doesn't se ...

Static, non-replicated actors have different role to dynamically spawned actors

UE - Networking - May 23, 2023

For a non-replicated actor, the expected values for its local and remote roles would be ROLE_Authority and ROLE_None respectively. However, in ULevel::InitializeNetworkActors, ExchangeNetRoles(true) ...