Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

Opening Levels in Unreal Engine Takes Too Long Due to Substance Plugin Behavior

New Here ,
Jan 24, 2025 Jan 24, 2025

When opening levels in the Unreal Engine editor, the process is extremely slow. Upon investigation, it was found that the delay is caused by the RebuildAlert function, which calls Substance::Helpers::SubstancesRequireUpdate. This function iterates through all Substance assets and calls GraphRequiresUpdate on each.

The issue lies within GraphRequiresUpdate, as it internally calls AssetRegistryModule.Get().SearchAllAssets(true). In Unreal Engine 5.4.4, this function introduces a 100 ms sleep. With 1000 Substance assets in the project, this results in a delay of 100 seconds when opening a level.

I noticed that in all occurrences (two) of GraphRequiresUpdate being called higher up in the stack, AssetRegistryModule.Get().SearchAllAssets(true) had already been invoked. Therefore, I commented out the AssetRegistryModule.Get().SearchAllAssets(true) call within GraphRequiresUpdate, which eliminated the significant delay when opening levels.

Steps to Reproduce:

  1. Use a project with a large number of Substance assets (e.g., 1000).
  2. Open a level in Unreal Engine 5.4.4 with the Substance plugin enabled.
  3. Observe the extended loading time.

Proposed Solution:
Remove or optimize the redundant call to AssetRegistryModule.Get().SearchAllAssets(true) within GraphRequiresUpdate to prevent unnecessary delays.

Environment:

  • Unreal Engine version: 5.4.4
  • Substance Plugin version: 71
  • OS: Windows 11 23H2

Impact:
This issue significantly affects productivity when working with large projects that rely on Substance assets.

Bug Unresolved
TOPICS
Bugs & Crashes , UE4
699
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
5 Comments
Adobe Employee ,
Jan 27, 2025 Jan 27, 2025

Hi, thanks for bringing this issue to our attention. Could you please update to UE 5.5 and let us know if the problem persists?

Translate
Report
New Here ,
Jan 27, 2025 Jan 27, 2025

Hi,

Thank you for your response. Unfortunately, our project is large and depends on many plugins, some of which do not yet support UE 5.5.

However, I reviewed the source code for UE 5.5.1 available on GitHub, and the methods UAssetRegistryImpl::SearchAllAssets, within which UAssetRegistryImpl::WaitForCompletion is called, still contain a 100 ms delay:

constexpr float TimeToJoinSeconds = 0.100f;
GuardedData.WaitForGathererIdle(TimeToJoinSeconds);

Because of this, it’s very likely that the issue will persist in UE 5.5 as well.

Translate
Report
Adobe Employee ,
Feb 03, 2025 Feb 03, 2025

Ok. Could you please let us know which version of the plugin you're using? You can find the version number in the plugin panel within the editor, or it's labeled as "VersionName" in the plugin files.

Translate
Report
New Here ,
Feb 03, 2025 Feb 03, 2025

As I mentioned in the original post, the plugin version is 71.

Translate
Report
Adobe Employee ,
Feb 05, 2025 Feb 05, 2025
LATEST

Hi,

The version 71 you mentioned is related to serialization changes in the code and isn't typically visible in the editor. The version number we need is the one displayed in the plugin panel inside the editor or labeled as "VersionName" in the plugin files.

 

That said, I've identified the version in question. We have it on our roadmap to investigate this issue further.

Translate
Report