Description

When connecting to the server, if the client activates some local cells while the connection is still pending, ULevelStreaming::IsConcernedByNetVisibilityTransactionAck will return false. In this case, the client won't wait for acknowledgement from the server before making these levels visible and adding them to the world. When the client later receives its PlayerController from the server and UNetConnection::HandleClientPlayer is called, the client will send a ServerUpdateMultipleLevelsVisibility RPC containing all of its visible levels.

Because the client didn't send visibility transaction requests for these levels, the server may not have them loaded, causing a MissingLevelPackage error and disconnect when the server receives this RPC and attempts to update the visibility of these levels.

This can occur if the GameState is received before the PlayerController on the client, and OnRep_ReplicatedHasBegunPlay is called before HandleClientPlayer. UWorldPartition::OnWorldPreBeginPlay will flush level streaming, causing these cells to be loaded before the connection is considered open (the connection state is set to “open” in UNetConnection::HandleClientPlayer).

It is also possible for some streaming levels to complete loading on the client and get added to the world before the client has received either received the PlayerController or the GameState.

Steps to Reproduce
  1. Enable Iris and World Partition server streaming, as well as visibility transaction requests: net.Iris.UseIrisReplication=1, wp.Runtime.EnableServerStreaming=1, wp.Runtime.EnableServerStreamingOut=1, and LevelStreaming.DefaultAllowClientUseMakingVisibleTransactionRequests=1. (If changing transaction request functionality at runtime, enable wp.Runtime.UseMakingVisibleTransactionRequests and wp.Runtime.UseMakingInvisibleTransactionRequests.)
  2. Start a server and client in single process PIE.
  3. Observe the client get disconnected due to a MissingLevelPackage error.

This issue occurs under specific timing/ordering circumstances, and may not reproduce reliably every time. Enabling network emulation and increasing packet loss and latency can help repro the issue.

It can also help to reduce the World Partition grid’s Cell Size and Loading Range, and if testing with a listen server, spawn the listen server’s and client’s players in different parts of the map. This can help ensure the server won’t have the client’s nearby cells already loaded locally.

The issue is reproducible in Lyra.

Have Comments or More Details?

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

6
Login to Vote

Unresolved
CreatedFeb 9, 2026
UpdatedFeb 9, 2026
View Jira Issue