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