Description

In FReplayHelper::ReplicateActor, we check Connection->ClientHasInitializedLevel(Actor->GetLevel()) to see if the actor should create a channel or not. However, the DemoNetConnection does not have any sublevels added to its "ClientVisibleLevelNames," as this is normally done when the client calls APlayerController::ServerUpdateLevelVisibility. This won't prevent the actor from being recorded at all though, as UDemoNetConnection::ClientHasInitializedLevel will wait a couple of frames before always returning true.

This means that for the first 2 frames of recording, UDemoNetConnection::ClientHasInitializedLevel will return false for the always loaded sublevel, until eventually we get to frame 3 of recording and the actor in that sublevel begins to get recorded.

Steps to Reproduce

Place a replicated actor into a sublevel using the "Always Loaded" streaming method.
Change one of the actor's replicated properties before beginning to record a replay.
When playing back the replay, pause at the first frame of playback (or scrub to the beginning using demo.GoToTimeInSeconds 0).
Observe that the property has its default value, until it is updated to the correct value a short time into playback.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-215753 in the post.

0
Login to Vote

Unresolved
ComponentUE - Networking
Affects Versions5.5
Target Fix5.6
CreatedMay 24, 2024
UpdatedOct 25, 2024
View Jira Issue