AssetRegistry has poor performance when a large map is resaved: Directory IO

UE - Foundation - Data Pipeline - Cooker - Mar 10, 2025

IO cost of directory scans is one of the costs present in the AssetRegistry when a large map is resaved. Maps can have external actors which all have to be rescanned and reported to the map for incl ...

In UE 5.5, "Open Level By Name" is not able to find the map if the map is not added to "List of maps to include in a packaged build"

UE - Foundation - Data Pipeline - Cooker - Feb 13, 2025

The "Open Level By Name" is not able to find the map to travel when the map is not included in the "List of maps to include in a packaged build" option. This issue was not happening in UE 5.3 and UE ...

Cooker: NeverCookPackageList should store packages as LongPackageNames instead of filenames, to save memory by avoiding creation of FName for each external actor package

UE - Foundation - Data Pipeline - Cooker - Jul 30, 2024

GetNeverCookPackageFileNames among other things adds every external actor package to NeverCookPackageList, even if they are not referenced by the rest of the cook. Since it stores the packages in th ...

Generated world partition maps cause AssetManager warnings

UE - Foundation - Data Pipeline - Cooker - May 29, 2024

When cooking world partition maps, it automatically writes out several maps in a "Generated" folder below the location of the map in the editor. In the repro above, this will create maps such as /Ga ...

LogAssetRegistry Error produces a path error when referring to assets on a junction/hard link/soft link

UE - Foundation - Data Pipeline - Cooker - May 23, 2024

IAssetRegistry::GetChecked().ScanPathsSynchronous() now eventually calls FPathExistence::LoadExistenceData and logs the errorFPathExistence failed to gather correct capitalization from disk for <p ...

Cooker: Research and recommend a solution for third-party systems to aggregate data from cooked UObjects

UE - Foundation - Data Pipeline - Cooker - Mar 6, 2024

As with shader compilation, some third-party plugins need to accumulate information about all UObjects cooked in a cook session, and write their data to a database at the end of the cook; the databa ...

UAssetManager::ChangeBundleStateForPrimaryAssets: Performance: Avoid canceling loads in progress when new bundles added and the in progress bundles are kept

UE - Foundation - Data Pipeline - Cooker - Mar 4, 2024

UAssetManager::ChangeBundleStateForPrimaryAssets allows adding new BundleNames to the list of BundleNames loaded for a PrimaryAssetId. Each BundleName specifies a BundleEntry with a list of assets. ...

Fix AssetManager rules overrides in case PrimaryAssetTypesToScan for PrimaryAssetLabel sets bApplyRecursively=false

UE - Foundation - Data Pipeline - Cooker - Dec 11, 2023

SetPrimaryAssetRules sets the "is overridden" variables (e.g. bOverrideApplyRecursively) based on a comparison with the global default rules:static FPrimaryAssetRules DefaultRules; ... ExplicitRu ...

AssetRegistry and CoreRedirects: Users of GeneratedClassTag do not uniformly handle CoreRedirects

UE - Foundation - Data Pipeline - Cooker - Dec 11, 2023

ClassPaths are stored in FBlueprintTags::GeneratedClassPath, FBlueprintTags::ParentClassPath, FBlueprintTags::NativeParentClassPath, and are read by many locations in editor code. But these location ...

LLM: Delete LLM_IF_ENABLED if it is no longer a performance benefit, or convert all allocs and frees to use it if it still is.

UE - Foundation - Data Pipeline - Cooker - Nov 13, 2023

The macros LLM and LLM_IF_ENABLED behave identically but are slightly different from a performance standpoint. For consistency all allocs and frees should use the same one. Measure the cost of a co ...