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.
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.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-215753 in the post.
0 |
Component | UE - Networking |
---|---|
Affects Versions | 5.5 |
Target Fix | 5.6 |
Created | May 24, 2024 |
---|---|
Updated | Oct 25, 2024 |