文章

DDC能力

DerivedDataCache

DDC派生数据缓存 的缩写。

许多 虚幻引擎 资产都需要额外的”派生数据”才能使用(比如包含着色器的材质就是一个简单示例)。材质在渲染之前,必须为运行编辑器的平台编译着色器。

如何生成 DDC Pak (.ddp)

创建项目DDC

  1. UE4/Engine/Binaries/Win64 目录运行 UE4Editor.exe,传递如下所示的参数:

    1
    
    UE4Editor.exe ProjectName -run=DerivedDataCache -fill -DDC=CreatePak
    
  2. 这会在 UE4\ProjectName\DerivedDataCache 目录中创建 DDC.ddp 文件。

  3. 引擎将自动检测和使用 .ddp 文件。

创建引擎DDC

1
UE4Editor.exe -run=DerivedDataCache -fill -DDC=CreatePak

构建派生数据

1
UE4\Engine\Binaries\Win64\UE4Editor.exe ProjectName -run=DerivedDataCache -fill

自定义DDC的磁盘位置

你可以打开项目,在编辑器的偏好设置中调整这个选项。此外,你可以将环境变量 UE-LocalDataCachePath 设置为你选择的路径即可。例如:UE-LocalDataCachePath=d:\DDC

  1. 在命令提示中,输入 "setx UE-LocalDataCachePath d:\DDC"
  2. 重新启动虚幻引擎,以及你任何相关的应用程序,例如Epic启动器、UGS或Visual Studio。

DDC设置保存在哪里?

DDC设置保存在 [DerivedDataBackendGraph] 分段的 DefaultEngine.ini 中。你可以在 BaseEngine.ini. 中查看默认值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
[DerivedDataBackendGraph]
;保留文件至少7天
MinimumDaysToKeepFile=7
;配置根条目。它使用KeyLength节点对长字符串进行哈希处理,然后将请求传递给AsyncPut
Root=(Type=KeyLength, Length=120, Inner=AsyncPut)
;配置AsyncPut条目。它使用AsyncPut节点,然后将请求传递到层级
AsyncPut=(Type=AsyncPut, Inner=Hierarchy)
;配置层级条目。这将使用多个节点,这些节点按顺序使用,直到找到读取内容(写入将转到所有可写条目)
Hierarchy=(Type=Hierarchical, Inner=Boot, Inner=Pak, Inner=EnginePak, Inner=Local, Inner=Shared)
;配置Boot节点。这将保留用于加速启动的512MB数据
Boot=(Type=Boot, Filename="%GAMEDIR%DerivedDataCache/Boot.ddc", MaxCacheSize=512)
;配置本地节点。这是具有以下设置的filesystem节点 -
;   Readonly: 能否将数据写入此层
;   Clean: 在启动时执行旧文件清理
;   Flush: 破坏DDC并重新开始
;   PurgeTransient: 不要将瞬态数据保留在DDC中
;   DeleteUnused: 清理旧文件(在后台线程上进行)
;   UnusedFileAge: 文件删除前保留时长
;   FoldersToClean: 会话中要清除的最大文件夹数。-1 = 无限
;   MaxFileChecksPerSec: 每秒检查的文件数量。
;   Path:文件系统DDC使用的路径
;   EnvPathOverride: 环境变量,如果设置,将用于代替路径。如UE-LocalDataCachePath=d:\DDC。( 'None' 会禁用DDC)
;   CommandLineOverride: 优先于默认值/envvar设置使用的命令行参数。如-SharedDataCachePath=\\someshare\folder
;   EditorOverrideSetting: 覆盖默认/envvar/命令行值的编辑器用户设置
Local=(Type=FileSystem, ReadOnly=false, Clean=false, Flush=false, PurgeTransient=true, DeleteUnused=true, UnusedFileAge=34, FoldersToClean=-1, Path=%ENGINEDIR%DerivedDataCache, EnvPathOverride=UE-LocalDataCachePath, EditorOverrideSetting=LocalDerivedDataCache)
;配置在本地之后访问的共享DDC。这是文件系统DDC,上面已经说明参数
Shared=(Type=FileSystem, ReadOnly=false, Clean=false, Flush=false, DeleteUnused=true, UnusedFileAge=10, FoldersToClean=10, MaxFileChecksPerSec=1, Path=?EpicDDC, EnvPathOverride=UE-SharedDataCachePath, EditorOverrideSetting=SharedDerivedDataCache, CommandLineOverride=SharedDataCachePath)
;配置在本地之后访问的替代共享DDC。这是文件系统DDC,上面已经说明参数
AltShared=(Type=FileSystem, ReadOnly=true, Clean=false, Flush=false, DeleteUnused=true, UnusedFileAge=23, FoldersToClean=10, MaxFileChecksPerSec=1, Path=?EpicDDC2, EnvPathOverride=UE-SharedDataCachePath2)
;配置Project Pak节点。这是项目的预生成DDC数据文件,可以发布该文件以便减少运行时获取/生成
;请参阅文档,了解如何通过DerivedDataCache Commandlet创建DDP
Pak=(Type=ReadPak, Filename="%GAMEDIR%DerivedDataCache/DDC.ddp")
;配置Project Pak节点。这是引擎的预生成DDC数据文件,可以分发该文件以便减少运行时获取/生成
EnginePak=(Type=ReadPak, Filename=%ENGINEDIR%DerivedDataCache/DDC.ddp)

Ref

  • https://blog.csdn.net/u013412391/article/details/105546408/
  • https://docs.unrealengine.com/5.0/zh-CN/derived-data-cache/
本文由作者按照 CC BY 4.0 进行授权