How to enable async loading in Editor

I’m looking to improve performance of our game in Editor with regards to frame rate and streaming (we’re using World Partition).

My understanding is that loading in Editor is done synchronously by default, but that asynchronous loading can be enabled. How can I enable it?

Thanks

Hey Andy,

loading is happening on the GameThread, but not fully synchronous. It’s using a time-slicing approach by default, with mixed success.

However, you can enable the ALT via the -AsyncLoadingThread parameter or by setting the following in your *Engine.ini:

[/Script/Engine.EditorStreamingSettings] s.AsyncLoadingThreadEnabled=trueBe aware that there still might be some issues with running the ALT in Editor, but we’re aiming to enable it by default soon™.

Kind Regards,

Sebastian

There’s still some race conditions and multi-threading problems, specifically with asset types that we might not test as much internally.

Here’s an example of the type of issues with found in a recent test in Fortnite with thread sanitizer and ALT enabled:

  • CDO being postloaded can be accessed by ALT
  • OnObjectRenamed multicast delegate called from ALT
  • One race in ClearImportedPackages on GT while IncludePackageInSyncLoadContextRecursive is called on ALT
  • One race in FPackageName::QueryRootContentPaths().
  • Multiple race between FApp::IsGame() and SetPlayInEditorWorld/RestoreEditorWorld during PIE

These are just internal notes and not any kind of exhaustive or representative list.

Overall the ALT in Editor is not ready for production yet, which is why it’s still disabled.

It might work for your case if you have a simple project but it’s also possible you’ll see crashes and problems as result of enabling the ALT right now.

This is great. Thanks, Sebastian. I will give that a go

[mention removed]​ What potential issues should we look out for with running the ALT in Editor in 5.5.4?

Thanks for this info