spatialos / UnrealGDK

SpatialOS GDK for Unreal Plugin
https://docs.improbable.io/unreal/
MIT License
403 stars 142 forks source link

ClientTravel does not load streaming levels #610

Closed thomaswall closed 5 years ago

thomaswall commented 5 years ago

Description

ClientTravel from Map A to Map B, where Map B uses world composition, does not load any levels on Map B

Expected behavior

All levels within streaming distance of the player spawn should be loaded.

Current behavior

No levels are spawned, character infinitely falls

Steps to reproduce

  1. Create 2 maps, one using world composition (map B) and one without (map A)
  2. LaunchServer.bat with map B
  3. Start map A in PIE
  4. Use receptionist to travel from A to B (PlayerController->ClientTravel(TravelURL, TRAVEL_Absolute, false /*bSeamless*/);)
  5. After travel completes, no levels are loaded, and player starts falling

Environment

UE4 commit: 09ec8ee75c32cb8779747ed5e43ece5bfc76ff81

GDK commit: 8b0c4eccb3f1a6af60dda5276d46a9cccec494bd

Logs:

From spatial:

[improbable.bridge.logging.EngineLogMessageHandler] [Worker: UnrealClientF4586D6240DCA678DEE0B287D54F2F76] Object ref did not map to valid object, will be set to nullptr: (entity ID: 0, offset: 0) ./Game/FirstPersonBP/Maps/height/height_x0_y0.height_x0_y0.PersistentLevel.LandscapeStreamingProxy_0.LandscapeHeightfieldCollisionComponent_1923 -[WorkerLogger:Unreal]

From the Server:

First there's plenty of this:

LogStreaming: Display: ULevelStreaming::RequestLevel(/Game/FirstPersonBP/Maps/height/height_x3_y3) is flushing async loading
LogSpatialOSNetDriver: Connected to SpatialOS and map has been loaded.

and then many of these:

LogSpatialReceiver: Received reserve entity Id: request id: 0, entity id: 40
LogSpatialReceiver: Resolving pending object refs and RPCs which depend on object: WorldSettings (entity ID: 40, offset: 0).
LogSpatialSender: Sending create entity request for WorldSettings
LogSpatialReceiver: Entity for actor WorldSettings has been checked out on the worker which spawned it or is a singleton linked on this worker
LogSpatialReceiver: Received create entity response op for 40
girayozil commented 5 years ago

@thomaswall is this a PIE-only issue, or do you see it in standalone clients too?

thomaswall commented 5 years ago

@girayimprobable Yes, sorry, on further testing, it's just a PIE issue.

joshuahuburn commented 5 years ago

Hey @thomaswall, we have a ticket in our backlog to address these level streaming issues, going to use the exact scenario you've described here to test and get a repro on this. I believe work will start on this after a large change to how we handle startup actors which may very related to these level streaming issues.

m-samiec commented 5 years ago

Level streaming is now supported in the latest release (0.6.0). Let us know if we can provide any further info.