Asset Optimization Feature - Unreal Performance Pro
A plugin that scans Unreal projects for performance issues—oversized textures, missing LODs, expensive materials—and provides automated fixes with estimated memory savings and FPS impact.
Asset Optimization Feature - Unreal Performance Pro
What This Does
Look, we all know Unreal's max.streaming.pool settings are kind of a mess. They're confusing, barely documented, and honestly not that helpful when you're trying to figure out why your game is eating 8GB of VRAM. So I built something better. The Asset Optimization feature basically scans your project, finds the stuff that's killing your performance, and actually tells you what to do about it. In a lot of cases, it can just fix it for you.
Why I Made This
Here's the thing - I got tired of:
- Manually digging through hundreds of assets trying to find the 4K texture someone imported from Substance - Guessing which meshes needed LODs - That sinking feeling when the game chugs and you have no idea which asset is the culprit - Explaining to artists why their 8K texture for a background prop is... not ideal
Unreal gives you some basic tools, but they don't really help you understand what's going on. This does.
What It Actually Does
Asset Analysis
The plugin scans through your project and checks:
Textures: - Catches oversized textures (like that 4K texture on a 10-pixel UI element) - Finds compression issues - Shows you exactly how much memory each texture is using - Suggests better streaming settings
Static Meshes: - Detects missing LODs (or way too many LODs) - Flags overly complex geometry - Calculates memory usage and rendering cost
Materials: - Catches expensive translucent materials - Analyzes shader complexity - Spots materials that probably shouldn't be on particle systems
Automated Fixes
For a lot of common issues, you can just click a button: - Apply proper texture compression - Generate missing LODs - Clean up excessive LOD levels - Batch process multiple assets at once
I added safety checks so it won't destroy anything, and it backs stuff up before making changes.
Performance Impact
This is the part I'm actually proud of - it doesn't just say "this texture is big." It tells you: - How much memory you'll save by fixing it - Estimated FPS improvement - Reduced GPU load - Faster loading times
Basically, you can prioritize what's actually worth fixing vs. what's technically "wrong" but doesn't matter.
How to Use It
Quick Scan
// Analyze your whole project
FAssetOptimizationReport Report = AssetOptimizer->AnalyzeProjectAssets();
if (Report.CriticalIssues > 0)
{
UE_LOG(LogTemp, Warning, TEXT("Found %d critical issues"), Report.CriticalIssues);
UE_LOG(LogTemp, Warning, TEXT("Could save %.1f MB"), Report.TotalMemorySavingsMB);
}Auto-Fix Everything
// Set some thresholds
AssetOptimizer->SetOptimizationSettings(2048.0f, 100.0f, 8); // 2K textures, 100MB limit, 8 LODs max
// Let it rip
TArray<UObject*> AllAssets = AssetOptimizer->GetAllProjectAssets();
AssetOptimizer->BatchOptimizeAssets(AllAssets);Real-time Monitoring
// Keep an eye on things
AssetOptimizer->StartAssetMonitoring();
// See what's eating memory
TArray<FString> TopAssets = AssetOptimizer->GetTopMemoryConsumingAssets(10);Technical Stuff
Main classes if you want to dig into the code: - UAssetOptimizer - Does all the heavy lifting - FAssetIssue - Represents each problem it finds (with priority, suggested fix, estimated savings, etc.)
It integrates with the main Performance Monitor, so you can access everything through that if you want.
What's Next
In the Pipeline (next few months): - Blueprint and code profiling tools - CPU/GPU bottleneck analysis - Frame time breakdown
Further Out: - Shader complexity analysis (the deep stuff) - Animation and skeletal mesh optimization - Lightmap analysis - Maybe some ML-based predictions? We'll see.
Why This Matters
Honestly, optimization is one of those things that's easy to put off until it's a crisis. This makes it actually manageable - you can run a scan, see the worst offenders, and knock them out in an afternoon instead of a week. Plus, it's just nice to have actual data instead of guessing.