SeamlessTravel ClientVisibleLevelNames Breaking replication

Hi there,
We have an issue with SeamlessTravel.

  • Setup:
    • No transition map set
    • Travelling to the same map.
  • If after seamless travel the client finishes loading the level first it will send ServerUpdateLevelVisibility calls with loaded level names.
  • This adds them to the NetConnection’s ClientVisibleLevelNames array.
  • The server finishes SeamlessTravel and calls PreSeamlessTravelGarbageCollect, which calls UNetConnection::ResetGameWorldState
  • This then clears out the ClientVisibleLevelNames array
  • Replication is now broken for any actors in levels due to the server not thinking the client has those levels loaded and visible. UNetConnection::ClientHasInitializedLevelFor returns false and nothing is replicated for these level actors.

It seems like there should be some kind of replication pause or other controls that prevent the client from sending RPC’s like this while the server is still loading. Is there a correct way to solve the problem? Artificially delaying clients to try to give the server more time to load is risky due to different PC specs.

Side note: This seems to have gotten worse for us in 4.21, though that could just be a coincidence.

Any help is appreciated,

  • Chance

Hello,

We’ve recently made a switch to a new bug reporting method using a more structured form. Please visit the link below for more details and report the issue using the new Bug Submission Form. Feel free to continue to use this thread for community discussion around the issue.

https://epicsupport.force.com/unrealengine/s/

Thanks