The GameplayDebuggerCategoryReplicator calls SetActorHiddenInGame(!bIsLocal) during its BeginPlay, so this actor is hidden on the server but visible on the client. However, bHidden is a replicated value, so the server will attempt to replicate its value to the client. This normally isn't a problem, as the GameplayDebuggerCategoryReplicator on the client will apply the server's value for bHidden before calling BeginPlay, where the server's value will be overriden. However, if the server doesn't receive the client's acknowledgment that it's received the property before its next net update, such as because of lag or packet loss, it will resend the value for bHidden, resulting in the actor being hidden on the client.

Steps to Reproduce

In PIE, use the network emulation settings to increase latency and packet loss between the client and server.
Occasionally, the client's GameplayDebuggerCategoryReplicator will be hidden, despite the actor calling SetActorHiddenInGame(false) during its BeginPlay on the client.

Have Comments or More Details?

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

Login to Vote

ComponentUE - AI - Debugging
Target Fix5.1
Fix Commit20056571
Main Commit20056571
CreatedApr 20, 2022
ResolvedMay 5, 2022
UpdatedMay 16, 2022