Check hit in FNetworkObjectList::MarkActiveInternal for dormant actor after seamless travel

UE - Networking - Nov 15, 2023

When seamlessly traveling, FNetworkObjectList will have its data cleared. However, because FNetworkObjectList::Reset is called before FNetworkObjectList::ResetDormancyState, AllNetworkObjects will b ...

Unable to play replays with custom GameNetworkProtocolVersion set at runtime

UE - Networking - Sep 20, 2023

It seems that when comparing the custom versions for a replay (in the "operator<<" defined in ReplayTypes.cpp), the value retrieved from the FCurrentCustomVersions is not the value set at runtime, b ...

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