上一篇按屏幕占比裁剪局部光动态阴影记的是同一个密集城市街道场景里,针对光的那一刀。这篇记另一条杠杆:那个场景里 30,518 个独立 StaticMeshComponent 直接推高的 draw-call 体量。我写了个编辑器工具把同 mesh 的散摆静物折成 HISM,全图跑通一次把 21,483 个 SMC 合进了 494 个 HISM。这篇讲为什么要合、怎么用、以及一路上崩过的几次和绕不开的坑。
在 World Partition 项目里做存档,最容易踩的不是"存什么",而是"什么时候恢复"。
读档触发一次跨关卡 travel,目标世界从零初始化,存档里保存的 DataLayer 运行时状态、流送
状态、过场时机要在一连串引擎回调里精确对上号——错一拍,玩家就会看到错误的 DataLayer、
一帧裸场景,或者加载页消失后对着卡顿的空镜。
我把在一个 World Partition + 存档项目里趟过的几个问题按类型拆成了下面几篇。存档框架基于
开源的 Save Extension 插件,加载页基于开源的 Asynchronous Loading Screen 插件。
在 World Partition 项目里做存档,最容易踩的不是"存什么",而是"什么时候恢复"。
读档触发一次跨关卡 travel,目标世界从零初始化,存档里保存的 DataLayer 运行时状态要在
一串引擎回调里精确对上号——错一拍,玩家就会看到错误的 DataLayer 布局。
这篇讲两件配套的事:DataLayer 状态应该在哪个回调点应用,以及怎么让数据在那个回调点之前
就准备好。存档框架基于开源的 Save Extension 插件(ISaveExtensionInterface /
SlotDataTask_Loader 这些名字来自它)。