FDeltaCompressionBaselineManager::CreateBaseline will return early if the object has an invalid ObjectInfoIndex, which is allocated in FDeltaCompressionBaselineManager::UpdateScope (by calling FDeltaCompressionBaselineManager::AllocPerObjectInfoForObject). However, UpdateScope only allocates info for objects that have newly come into scope.
UReplicationSystem::NetUpdate will skip calling FDeltaCompressionBaselineManager::PreSendUpdate (which calls FDeltaCompressionBaselineManager::UpdateScope) until a valid connection is present; however, the actor's index will still be set in PrevFrameScopableInternalIndices. Because of this, when a valid connection is present, FDeltaCompressionBaselineManager::UpdateScope will not allocate object info for the actor due to it not being considered an object that was just added.
The issue does not occur with bAllowMinimalUpdateIfNoConnections set to false, as this causes FDeltaCompressionBaselineManager::PreSendUpdate to be called from UReplicationSystem::NetUpdate regardless of whether a connection is present.
Create a replicated actor class configured to use delta compression with Iris.
Place this actor in the map, or spawn it on the server before a client connects.
Observe that FDeltaCompressionBaselineManager::CreateBaseline is not called for the actor.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-333873 in the post.
0 |
Component | UE - Networking - Iris |
---|---|
Affects Versions | 5.7 |
Created | Sep 24, 2025 |
---|---|
Updated | Sep 29, 2025 |