Naming conventions, your way
Two presets built in: Epic Recommended and Allar Style Guide. Or edit the table. Rows can target subclasses, Blueprint types and Blueprint parent classes, and the most specific row wins.
Asset Doctor checks naming conventions, textures, meshes and paths across your Unreal project, fixes most issues with one click, and fails CI builds when someone breaks the rules.
Try it right here. This is the real workflow running on 48 sample assets.
Two presets built in: Epic Recommended and Allar Style Guide. Or edit the table. Rows can target subclasses, Blueprint types and Blueprint parent classes, and the most specific row wins.
Renames update every reference and save together with the referencing assets. Leftover redirectors are fixed up by default.
Checks run on Asset Registry data, so even large projects scan without loading a single package.
Issues show up in Validate Assets, validate-on-save and changelist validation, right where your team already looks.
Normal maps get Normalmap compression, masks go linear, colors stay sRGB. Oversized and non power-of-two textures are flagged.
See how many assets use each asset, spot ones that may be unused, and jump to the Reference Viewer in one click.
Catch package paths that are too long to cook on Windows, assets dumped in /Game and leftover redirectors.
Add project-specific checks as Blueprint or C++ rules. They run in the panel, in Data Validation and in CI.
Pick a preset and an asset type to see what Asset Doctor expects. The prefixes and suffixes come straight from the plugin's built-in presets.
Each rule can be turned off or given a different severity: Info, Warning or Error.
| Rule | Checks | Default | Auto-fix |
|---|---|---|---|
Naming.Convention | Prefix and suffix per asset type | Warning | Rename |
Naming.InvalidCharacters | Spaces and characters other than A-Z, 0-9 and _ in asset and folder names | Warning | Rename (assets) |
Path.Length | Package paths longer than the limit (breaks cooking on Windows) | Warning | Manual |
Path.RootFolder | Assets placed directly in /Game | Warning | Manual |
Asset.Redirector | Leftover redirectors | Warning | Fix up |
Texture.PowerOfTwo | Non power-of-two textures (UI texture group skipped) | Warning | Manual |
Texture.MaxSize | Textures above the project limit | Warning | Sets Maximum Texture Size |
Texture.SuffixSettings | _N must be Normalmap, masks linear, colors sRGB | Warning | Compression / sRGB |
StaticMesh.MissingLODs | Dense non-Nanite meshes with a single LOD | Info | Manual |
StaticMesh.NoCollision | Static meshes without simple collision | Info | Manual |
The TAAssetDoctor commandlet scans the project, writes a JSON or CSV report and exits with a code your pipeline understands.
0Passed1Issues at or above -FailOn2Setup errorWrite checks for the conventions only your studio has. Blueprint rules need no C++. Native rules are discovered automatically. Prefer Asset Registry tags over loading assets to keep scans fast.
UCLASS()
class UMyRule_NoUntitled : public UTAAssetDoctorRule
{
GENERATED_BODY()
public:
UMyRule_NoUntitled()
{
RuleId = TEXT("Project.NoUntitled");
DefaultSeverity = ETAAssetDoctorSeverity::Error;
}
virtual void CheckAsset(FTAAssetDoctorContext& Context) const override
{
if (Context.AssetData.AssetName.ToString().Contains(TEXT("Untitled")))
{
Context.AddIssue(*this, FText::FromString(TEXT("Give this asset a real name.")));
}
}
};import unreal
doctor = unreal.get_editor_subsystem(unreal.TAAssetDoctorSubsystem)
issues = doctor.scan_paths(["/Game/Props"], False)
for issue in issues:
print(issue.severity, issue.rule_id, issue.asset_path, issue.message)
doctor.export_report(issues, "C:/Temp/asset_doctor.json")@echo off
"C:\Program Files\Epic Games\UE_5.6\Engine\Binaries\Win64\UnrealEditor-Cmd.exe" ^
"%WORKSPACE%\MyGame.uproject" -run=TAAssetDoctor ^
-Report=Saved/AssetDoctor/report.json -FailOn=Error ^
-unattended -nop4 -nosplash -NullRHI
if %ERRORLEVEL% NEQ 0 (
echo Asset Doctor found problems. See Saved/AssetDoctor/report.json
exit /b %ERRORLEVEL%
)Asset Doctor is finishing its release on Fab and GitHub. Join Discord or drop us a line to hear the moment it ships.
Yes. It is free and open source under the MIT license, including for commercial projects. The full C++ source ships with the plugin.
No. The checks run on Asset Registry data, so scanning does not load your packages. Fixes only load the assets they change.
No. Renames update every reference and are saved immediately together with the assets that reference them. With Fix Up Redirectors After Rename on (the default), no redirectors are left behind.
No. It sets Maximum Texture Size on the texture and keeps the source data untouched, so you can raise the limit again at any time.
Yes. Start from the Epic Recommended or Allar Style Guide preset, or build your own table. Rows can target subclasses, Blueprint types (interface, function library, macro library) and Blueprint parent classes.
Settings are stored in Config/DefaultEditor.ini, so they travel with source control and everyone scans with the same rules.
Nothing in the Asset Registry references it, so it may be unused. References from C++, config files or string paths are not detected, so check before deleting.
Yes. Create a Blueprint class based on TAAssetDoctorRule, or derive from UTAAssetDoctorRule in C++. Native rules are discovered automatically.
Unreal Engine 5.6, 5.7 and 5.8, in the editor on Win64, Mac and Linux.