Cook 与 DDC 基础设施

自动关联目录:Cook 与 DDC 基础设施

技术细节见 Cook 与打包流程;本篇只讲团队级基础设施,不重复 Cook 的步骤与技术原理。

1. 定位

DDC(Derived Data Cache)命中率决定团队的迭代速度:命中就秒开,不命中就要重新生成(着色器编译、纹理压缩、Nanite 构建、距离场……),一次全量可能是几十分钟到几小时。

一句话定位:共享 DDC 是 UE 团队协作里投入产出比最高的一项基础设施。

2. 三层缓存

层位置特点
Local DDC每台机器本地只对自己有效
Shared DDC网络共享目录团队共享(关键)
Cloud DDC云端分布式/远程团队

只配 Local DDC 的后果:新人拉完工程第一次打开,要自己把整个项目重新生成一遍——这就是"新电脑卡一上午"的原因。

3. 什么会命中/失效

项说明
缓存 key包含所有输入的哈希(含着色器源码)
改 .usf自动失效并重编(见 材质与着色器编译)
改纹理压缩设置失效
改引擎版本大面积失效

升级引擎版本会导致 DDC 大面积失效——这是升级时最大的隐性成本之一,要预留时间。

4. 基础设施建议

项建议
必配 Shared DDC团队级网络共享
定期清理DDC 会无限增长,要有清理策略
CI 机器也要接让 CI 的产出回流到共享 DDC
预热重要版本前先跑一遍全量 Cook,把 DDC 填满
监控命中率命中率下降说明配置有问题

"预热"是最实用的一招:发布或大版本前跑一次全量,让所有人(包括 CI)都能命中。

5. 与 Cook 的关系

项说明
Cook把资产转成平台可用格式(见 Cook 与打包流程)
DDC缓存 Cook 与编辑器生成的中间产物
增量 Cook依赖 DDC 与 Cooked 目录的缓存
CI 上的 Cook应接共享 DDC,避免每次全量

6. 代价与权衡

设计收益代价什么时候不该用
Shared DDC迭代速度质变需要存储与网络单人项目可省
Cloud DDC分布式团队成本与延迟同地团队用共享目录即可
预热避免集体卡顿占用 CI 时间发布前值得
DDC 无限增长—存储成本必须定期清理
升级引擎—DDC 大面积失效升级要预留时间

7. 踩坑与排查

坑现象怎么验证
只有 Local DDC换机器就卡几小时配 Shared DDC
DDC 路径配置不一致命中率低统一配置
CI 没接共享 DDC每次全量接上
DDC 从不清理磁盘爆建清理策略
升级引擎没预留时间集体卡住升级前先预热
命中率不监控问题发现晚加监控

8. 排查顺序

1. 是否配了 Shared DDC?
2. CI 是否接入?
3. 命中率是否健康?
4. DDC 是否有清理策略?
5. 升级/大版本前是否预热?

参考