Lesson 12 locked look and readability. This lesson asks a harder question: does that look fit inside your frame budget on hardware you care about? You will measure first, then cut cost where players will not notice—especially around Lumen, Nanite, and post you stacked for stealth clarity.

Lesson objective
By the end of this lesson you will have:
- A baseline capture of Game thread vs Render thread vs GPU time using
stat unit(andstat fps) in worst-case stealth routes. - At least one GPU Visualize or profile pass that shows whether Lumen, shadows, base pass, or reflections dominate.
- A short list of approved scalability or project tweaks that preserve Lesson 12’s sightlines while hitting your target FPS in a packaged Development build.
Step 1: Reproduce the pain on purpose
- Pick three camera paths: max AI count, max Lumen stress (tight indoor emissive), and open sightline from Lesson 12’s notes.
- Disable Smooth Frame Rate in editor preferences while profiling so spikes are visible.
- Run the same paths in Standalone Game or packaged Development—PIE lies about some costs.
Pro tip: Record seconds of stat unit output or use Session Frontend profiler if you already rely on it—memory beats vibes.
Step 2: stat unit in one glance
With stat unit visible:
- Game high → Blueprint tick, AI, perception, or anim notify spam. Cross-check Lesson 7 state transitions and tick groups.
- Draw high → too many draw calls, opaque overdraw, or Nanite issues.
- GPU high → shading, Lumen, reflections, post—usually graphics settings, not C++.
Common mistake: optimizing Blueprints when GPU is the bottleneck—you will ship slower and feel clever.
Step 3: GPU Visualize and hot spots
Open profilegpu or use GPU Visualize modes (version-dependent UI) after a representative capture:
- If Lumen radiance or surface cache updates dominate during camera whips, lower Lumen scene detail on Scalability or reduce emissive area lights count from Lesson 12.
- If Virtual Shadow Maps or shadow depths spike in wide views, tighten shadow distance on the directional light or reduce cascade cost where stealth still reads.
- If reflections hurt, switch reflection method down one tier before you delete Lumen entirely.
Pair with Unreal Engine 5.5 Nanite and Lumen Stutter in Large Open Levels - How to Fix if open areas hitch; your slice may be smaller but the same levers apply.
Step 4: Nanite sanity for a stealth greybox
Nanite helps dense props; it is not free when instances and materials explode:
- Confirm only eligible meshes use Nanite; thin fences and alpha cards often should not.
- Merge static clusters where possible to cut draw calls without losing silhouette.
- Watch memory—Nanite streaming plus Lumen caches can push VRAM into driver instability; see GPU Crash DXGI_ERROR_DEVICE_REMOVED if you see device lost during stress.
Step 5: Screen percentage and post as last resorts
r.ScreenPercentagebelow 100 is a blunt tool but saves shading cost—test HUD readability from Lesson 10 after lowering.- Bloom, lens flare, and high SSR quality are easy wins to dial back after lighting is locked.
- Motion blur off for slice capture and playtests—it hides hitches and stealth reads.
Step 6: Scalability and default maps
- Set Engine → Rendering scalability preview groups (Low / Med / High) and document which tier is your minimum spec.
- If you ship one default quality for demo events, lock it with device profiles or packaged ini overrides so volunteers do not open Epic settings by accident.
Mini challenge
- Capture Game, Draw, GPU ms before and after one Lumen quality step down on your worst route.
- Confirm Lesson 5 perception debug still matches player expectation at the new settings.
- Package Development and run 10 minutes without thermal throttle on a laptop if that is a target platform.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| GPU ms spikes only when rotating | Lumen / GI update | Lower detail or reduce moving lights |
| CPU Game thread spikes | AI or BT tasks | Profile Blueprint timing; stagger updates |
| Worse in packaged than PIE | Different scalability or cooking | Match ini; check staged settings |
| Random GPU reset | VRAM / driver | Reduce textures; update driver; help link above |
| HUD illegible after optimization | Screen percentage too low | Raise UI scale or ease 3D only |
Summary
- Measure Game, Draw, GPU before changing art.
- Lumen, shadows, and reflections usually eat GPU on stealth maps with strong contrast.
- Package early; PIE-only optimization is fiction.
Further reading
- Performance Optimization and Profiling in Unreal — stat habits and iteration loops.
- Materials and lighting in Unreal — when trimming cost, revisit light types before material complexity.
FAQ
Should I disable Lumen for performance?
Only if baked or simpler GI still passes Lesson 12 sightline tests. Half measures (lower quality, fewer bounces) often win.
Is Nanite required for this course slice?
No. Use it where it reduces work; drop it where it adds overhead without visual gain.
What FPS target?
Pick 60 or 30 per platform contract and optimize to that with headroom for thermal dip.
Next: Lesson 14: Playtest Protocol and Balance Iteration turns metrics into human feedback—playtest routes, time-to-detect tuning, and patch notes that honor what Lesson 13 stabilized. Finish this lesson when packaged Development holds your FPS target on two machines you trust.