Unreliable multicast RPCs won't be processed for connections where the actor isn't relevant (this is checked in UNetDriver::ProcessRemoteFunction). However, UReplicationGraph::ProcessRemoteFunction only checks the actor's cull distance if it doesn't have a channel, so in the case of NetStartup actors, where their channel isn't destroyed if they stop being relevant, the RPC is still processed for the channel. This seems to result in unreliable multicast RPCs being queued to be sent with the actor's next update, so when the actor becomes relevant again, the RPC is called on the client.

Steps to Reproduce

In a project using the replication graph, place a replicated actor in the map. While a client is outside of the actor's cull distance, call an unreliable multicast RPC on the actor. Have the client then move back into the actor's cull distance, making it relevant again to that connection.
Expected: the client would receive any changed properties on the actor since it had last been relevant, but no RPC calls
Actual: the client will receive the unreliable multicast RPC call made when the actor was not relevant

Have Comments or More Details?

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

Login to Vote

ComponentUE - Networking
Affects Versions5.1
Target Fix5.5
CreatedNov 15, 2022
UpdatedFeb 29, 2024
View Jira Issue