Unused Asset Detective Documentation

UNUSED ASSET DETECTIVE User Documentation

OVERVIEW

Unused Asset Detective is an Unreal Editor tool for reviewing possible cleanup candidates in a project's /Game content. It combines Asset Registry dependency checks, optional checks for already loaded objects, exclusions, filtering, CSV reporting, and a recoverable quarantine workflow.

The plugin deliberately calls its results candidates. A candidate is not proof that an asset is safe to delete. C++, configuration files, data tables, string based paths, scripts, DLC, online content, and third party systems can load assets without creating a dependency the Asset Registry can discover.

The plugin never permanently deletes assets. It can only move eligible candidates into a quarantine folder. Permanent deletion remains a deliberate manual decision outside the plugin.

COMPATIBILITY

Unreal Engine 5.6, 5.7, and 5.8 Windows 64 bit Editor only C++ module No runtime module No Blueprints or plugin content

INSTALLATION

Fab installation:

1. Install the plugin for the matching Unreal Engine version through the Epic Games Launcher. 2. Open the project. 3. Go to Edit Plugins. 4. Find Unused Asset Detective, enable it, and restart the editor if requested.

Project installation:

1. Close Unreal Editor. 2. Copy the UnusedAssetDetective folder into YourProject/Plugins. 3. Reopen the project and enable the plugin if necessary. 4. A C++ project or a compiler toolchain may be required when installing a source only build directly.

OPENING THE TOOL

Open Tools Unused Asset Detective. The plugin also registers a toolbar button with its detective icon.

The window is dockable and contains:

Scan Project and Cancel controls Asset type filter and text search Scan safety settings and folder exclusions Candidate list with name, type, path, safety state, and disk size Selection, report export, empty folder cleanup, and quarantine actions

DEFAULT SAFETY SETTINGS

Exclude /Game/Developers: Enabled Show soft references: Disabled Registry only scan: Disabled Remove truly empty folders after quarantine: Disabled

Previous plugin settings that enabled automatic folder cleanup are migrated to the new safer disabled default.

HOW THE SCAN WORKS

1. The Asset Registry is allowed to finish discovering assets. 2. The plugin enumerates ordinary project assets under /Game. 3. Protected paths and protected asset classes are skipped. 4. Each remaining asset is checked for these Asset Registry dependency categories:

Hard package references Soft package references Manage references SearchableName references

5. Hard, Manage, or SearchableName referencers remove an asset from the candidate report. 6. A soft referenced asset is omitted by default. If Show soft references is enabled, it appears as a protected report only row and cannot be selected. 7. In the default non registry only mode, an asset that is already loaded is also checked for live in memory references. The plugin does not force load every package just to perform this check. 8. Assets with no discovered reference are shown as modifiable candidates.

Validation is processed in timed batches on the editor game thread. You can cancel between batches. Only one scan can run at a time.

WHAT IS AUTOMATICALLY PROTECTED

The plugin excludes or protects safety sensitive content, including:

Registered Primary Assets World and map assets MapBuildDataRegistry assets and packages ending in BuiltData World Partition runtime hash and runtime cell assets HLODLayer assets Object redirectors PrimaryAssetLabel assets Level related asset classes .umap packages /Game/L10N localized packages Source assets that have localized variants World Partition, One File Per Actor, and external data layer package trees whose path segments begin with External /Game/UnusedAssetDetective Quarantine Legacy /Game/Trash content User configured exclusions

Some protected categories are omitted from results entirely. Soft referenced and localized source results may appear as protected report only rows. Hover the Safety column to read the specific reason.

Protected means the plugin will not select or quarantine that row. It does not create an operating system lock and does not prevent a user from manually changing the asset elsewhere in Unreal Editor.

CONFIGURING EXCLUSIONS

Exclude /Game/Developers:

Keep this enabled when developer folders may contain work in progress or personally owned assets.

Custom exclusions:

1. Enter one package folder per line, for example /Game/Frameworks or /Game/UI/Core. 2. Click Apply Exclusions. 3. Paths are normalized, deduplicated, sorted, and stored per project for the current editor user.

Only /Game paths are accepted. The /Game root itself cannot be used as a custom exclusion.

Content Browser shortcut:

1. Select one or more folders in the Content Browser. 2. Right click. 3. Choose Add to Unused Asset Detective excludes.

If the tool window was already open, the latest exclusions are loaded again when a new scan begins.

REGISTRY ONLY MODE

Registry only mode skips the optional live reference check for already loaded objects. It may be useful for faster review, but it provides less runtime/editor state context.

With registry only mode disabled, the plugin checks already loaded assets without force loading every asset. This avoids changing project state merely to scan, but it also means unloaded assets receive only the registry checks.

UNDERSTANDING RESULTS

Candidate:

No Hard, Soft, Manage, or SearchableName referencer was found. The row can be selected. Dynamic or external loading is still unknown.

Protected / Report Only:

The plugin found a condition that blocks modification, such as a soft reference or localized variant. The checkbox is disabled. The plugin cannot quarantine the row.

Disk Size:

The displayed size totals the main package and common sidecar files when present, including .uexp, .ubulk, .uptnl, and .m.ubulk. It is a disk use estimate, not a claim about packaged game savings.

FILTERING AND SEARCHING

Use the type menu to show all types or common groups such as textures, static meshes, skeletal meshes, materials, Blueprints, sounds, animations, and particle/Niagara assets.

The search box matches asset names and package paths without case sensitivity.

Select Modifiable Candidates selects only currently visible candidate rows. Protected rows remain unchecked. Quarantine also acts only on currently visible selected candidates, so review the active filter before continuing.

EXPORTING A CANDIDATE REPORT

Click Export Report to export the currently filtered list.

Reports are written to:

YourProject/Saved/UnusedAssetDetective/Reports

The CSV includes:

Asset name Asset type Package path Disk size in bytes Whether modification is allowed Safety note

CSV values are escaped so commas, quotes, and path text remain valid.

MOVING ASSETS TO QUARANTINE

Before starting:

1. Commit the project to source control or create a complete backup. 2. Save or revert every changed content and map package. 3. Stop Play In Editor or Simulate. 4. Scan again with the settings you intend to use. 5. Inspect each candidate; do not rely on Select All without review.

When Move to Quarantine is selected, the plugin performs another safety pass before changing anything. It verifies that:

The asset still exists. The path is not excluded or protected. No localized variant is present on disk. The asset is not a registered Primary Asset. The asset class is not protected. Asset Registry discovery is complete. The package contains exactly one top level asset. No dependency in any Asset Registry category has appeared since the scan. The destination does not contain a conflicting asset. Loading selected assets did not create unsaved package changes.

If any selected asset fails, nothing is submitted for movement and the plugin tells you to rescan.

For an approved batch, the plugin creates a unique destination such as:

/Game/UnusedAssetDetective Quarantine/20260904 123456 A1B2C3D4

The original relative folder structure is preserved beneath that destination. Unreal's standard rename dialog performs the move, allowing normal asset and source control handling.

RECOVERY MANIFESTS

Before the rename dialog opens, the plugin writes a recovery manifest to:

YourProject/Saved/UnusedAssetDetective/Quarantine

Each CSV row records:

Status Original Object Path Quarantine Object Path

Manifest states:

Planned: Prepared before the confirmation and move. Cancelled: The confirmation was declined. Completed: Unreal reported the full rename operation as successful. ReviewRequired: The rename operation did not fully succeed or was cancelled in Unreal's rename dialog; inspect the project before retrying.

RESTORING AN ASSET

1. Stop Play/Simulate and save or revert unrelated work. 2. Open the corresponding manifest. 3. Find the Original Object Path and Quarantine Object Path. 4. Locate the asset under /Game/UnusedAssetDetective Quarantine in the Content Browser. 5. Use Unreal Editor to move it back to the folder shown by its original object path. 6. Do not overwrite an asset that now occupies the original path. 7. Save, restart, and retest the affected systems.

If the manifest says ReviewRequired, compare both paths in the Content Browser and inspect source control before doing anything else. If a quarantined asset has already been manually deleted, restore it from source control or the backup.

Unreal moves can leave redirectors. Do not treat one successful editor play session as proof that a dynamic load will survive permanent deletion. Restart the editor, test important workflows, cook and package, and preserve the recovery point until the decision is final.

SAFE EMPTY FOLDER CLEANUP

The setting Remove truly empty folders after quarantine is disabled by default. When enabled, the plugin evaluates original folders after a successful quarantine move.

The standalone Clean Truly Empty Folders command requires confirmation and is blocked during Play/Simulate.

Folder cleanup:

Operates only below the project's physical Content directory. Protects /Game, quarantine, legacy Trash, localization, and external package paths. Verifies that no Asset Registry asset exists below the folder. Verifies that the physical directory contains no file and no child directory. Deletes each eligible directory with a non recursive operating system request. Never recursively removes a populated directory tree.

An empty nested hierarchy may be removed safely from the deepest folder upward, but each directory must be physically empty at the moment it is removed. Non asset files are preserved.

SAFE RELEASE CHECKLIST

Quarantine is a staging step, not a deletion verdict. Before manually deleting anything:

1. Keep the source control commit or backup. 2. Restart Unreal Editor. 3. Open all important maps. 4. Exercise menus, widgets, gameplay systems, data driven systems, and editor tools. 5. Test code/config/string path loads that the Asset Registry may not see. 6. Test localization and platform specific content. 7. Cook the project. 8. Package the project. 9. Test the packaged build from a clean launch. 10. Check logs for failed loads and missing packages. 11. Restore anything uncertain.

TROUBLESHOOTING

Quarantine is blocked because packages are dirty:

Save or revert all content and map packages, rescan, and try again. The guard is project wide to avoid mixing a cleanup move with unsaved asset state.

Quarantine is blocked during Play or Simulate:

Stop the session, rescan, and retry.

An asset gained references:

The project changed after the scan. The plugin intentionally cancels the complete submission. Rescan and review the new result.

A selected asset cannot be loaded:

Nothing is moved. Inspect the asset, project logs, and source control state before retrying.

The recovery manifest cannot be written:

Nothing is moved. Confirm the project Saved directory exists and is writable.

The rename result requires review:

Do not immediately retry. Inspect both the original and quarantine paths and review source control changes using the manifest.

A folder is not accepted as an exclusion:

Use a valid /Game path below the root, one path per line. /Game itself is intentionally rejected.

The scan reports no candidates:

The current safety checks, references, and exclusions found nothing eligible. This is a valid result and should not be treated as an error.

LIMITATIONS

The plugin scans project content under /Game. It does not scan /Engine or other plugins' mounted content. Asset Registry analysis cannot prove whether dynamic code, configuration, string paths, scripts, DLC, server data, or external tools require an asset. The live reference check applies only to assets already loaded; packages are not force loaded for scanning. Reported disk size does not guarantee an equal packaged build reduction because Unreal cooking already excludes some unreachable content. Quarantine and testing reduce risk but cannot replace source control, backups, project knowledge, and packaged build validation. The plugin does not provide automatic restoration or permanent deletion.

https://discord.gg/9Zc4wbwqG9

https://www.fab.com/sellers/CelestiaDominance