3.0 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			3.0 KiB
		
	
	
	
	
	
	
	
title, date, excerpt, tags, rating, status, destination, share, obsidianUIMode
| title | date | excerpt | tags | rating | status | destination | share | obsidianUIMode | 
|---|---|---|---|---|---|---|---|---|
| Untitled | 2025-08-22 11:20:14 | ⭐ | inprogress | false | source | 
前言
录制视频:[UFSH2025]卡顿大追猎:排查逐帧瓶颈 | Ari Arnbiornsson Epic Games 开发者关系资深工程师(官方字幕)
Level Streaming Hitches
Using Actor for Static Geometry
- 不要在Actor中放入过多StaticMesh。避免使用Actor—+Stat
 
应该使用:
- PLAS,Level打包Actor功能。
 - PCG
 - ISM/HISM
 - Foliage Tool
 - Niagara/Mass
 
5- .6 针对大世界流式加载有迭代
- Asynchronous component registration
 - Asynchronous physics statecreation/destruction
 - Unified/shared budget for AsyncLoading and Level Streaming
 
Fast Stream Plugin
巫师四使用了这个插件。
Physics Hitches
优化你的物理
- 使用Simple Physics
 - 手动关闭Complex Physics
 - 使用Use Simple As Complex
 
设置碰撞通道
- 关闭不需要的Overlaps,也就是关闭不需要Actor的Generate Overlap Events。
 - 设置Update Overlap Method During Level Streaming => OnlyUpdateMovable,可以在ini或者PerActor中惊醒设置(Actor里可以设置为
UseConfigDefault)。 
ini位于[/Script/Engine.Actor]
减小物理场景大小
- 物理调试工具:Chaos Visual Debugger
 - 使用物理代理
- 将多个物理物体替换一个简单物理代理。
 
 - 使用异步物理
- 目前只能使用c++实现(UE5.5实验性/5.7正式)。
 - 或者在下一帧执行traces。
 - 减少物理场景的大小或者复杂度,使得traces更快。
 - 相关命令行
- LevelStreaming.AllowIncrementalPreRegisterComponents = true
 - LevelStreaming.AllowIncrementalPreUnregisterComponents = true
 - p.Chaos.EnableAsyncInitBody = true
 
 
 
Actor Spawning Hitches
- 简化Actor
 - 限制Per Frame Spawn Num
 - 延迟初始化组件
 - 构建Actor对象池,重用Actor。
 
PSO Compilation Hittches
PSO Precaching & Bundled PSO Cache
- 5.3之后。默认开启Precacheing, 5.6支持在LoadingScreen 中获取编译Shader进度。
 - 建议:PSO Prechacing、Bundled PSO Cache 混用
 
使用-clearPSODriverCache命令行来清理PSOCache,也可以使用PSOCacheBuster插件自动清理PSOCache。
使用r.PSOPrecace.Validaion=2通过日志来记录Miss情况。
Garbage Collection Hitches
- 减少UObject数量
- StaticMeshActor可能成为一个痛点。
 - 使用WorldPartition或者关卡流送来加载角色附近的可见区域。
 
 - 使用
obj list -countsort来查看所有的UObject。- 一般低于50w,否者就需要去研究如果减少他们。
 
 - 如果短时间需要创建大量UObejct就得考虑使用对象池。
 - 在LoaddingScreen/黑屏/屏幕冻结 情况下中执行GC操作。
 
同步载入卡
避免使用同步加载逻辑,可以使用下面的插件来检查项目中是否使用: https://github.com/Flassari/CommonValidators