Keep Your Assets in a Cooked Build

Goal: make sure every CrimsonSkillTree asset you author ships in a packaged build, not just in the editor.

Prerequisites
CrimsonSkillTree enabled, and at least one asset of the types below authored somewhere in your project's content.

These types are reached through soft references and by-id lookups, which the cooker does not follow. CrimsonSkillTree registers them with the Asset Manager as AlwaysCook, but it can only do that for folders you tell it about.

Primary asset typeAuthored as
CrimsonSkillTreeSkill tree asset (UCrimsonSkillTree)

1. Point the scan paths at your content

Dynamically granted trees have no hard reference
A tree listed on a Game Feature action cooks because the GameFeatureData holds it by TObjectPtr. A tree granted at runtime through AddDynamicSkillTree has nothing pointing at it, so without this registration it is cooked out. Any augment reachable only through that tree's node events goes with it.

Set PrimaryAssetScanPaths on UCrimsonSkillTreeSettings to the folder (or folders) holding these assets. Sub-folders are included.

Project Settings -> Crimson -> Crimson Skill Tree -> Asset Discovery -> PrimaryAssetScanPaths. Click +, then pick your folder with the directory picker.

Verify
Restart the editor and search the Output Log for LogCrimsonSkillTree: CrimsonSkillTree: registered N primary asset type(s) as AlwaysCook across M scan path(s). M must match the number of paths you added - a blank entry is skipped and never counted.

2. Confirm the Asset Manager sees them

With the editor open, the registration log line names how many types were registered:

ini
LogCrimsonSkillTree: CrimsonSkillTree: registered N primary asset type(s) as AlwaysCook across M scan path(s).
Verify
Run AssetManager.DumpAssetRegistryInfo in the editor console - CrimsonSkillTree should report one entry per authored tree.

3. Confirm they cooked

Package a Development build, then look in the cooked output for the assets themselves. Cooked content keeps its mount point: a tree authored in your project's content folder lands under Saved/Cooked/<Platform>/<Project>/Content/..., while a tree that ships inside a plugin lands under that plugin's own folder.

Confirm every tree of a type in the table above is present there, and that the cook log in Saved/Logs/ reports no missing entry for it.

Anything of a type in the table above that is absent from the cooked output is still being dropped - re-check step 1, then re-cook.

See also

  • API Reference - UCrimsonSkillTreeSettings scan paths
  • How-To: Get the Building Blocks - where the settings live