概述
levels.deps 工具提供了两个日志,它们对于跟踪资产和纹理依赖关系至关重要:
纹理到资产依赖关系日志。此日志显示哪些资产正在使用特定纹理。利用此信息,您可以精确识别哪些资源需要删除纹理,以确保它不再出现在某个位置(或者相反,确定应从某个位置删除哪些资源)。
资源到纹理依赖关系日志。此日志标识特定资源使用哪些纹理。它还可以帮助您确定纹理是由特定资源独占使用,还是在多个资源之间共享。 此外,此日志还显示每个资产的顶点缓冲区,以及地图的全局缓冲区。
用法
所有项目的使用过程都是一致的:
浏览到
<engine_root>/tools/dagor3_cdk/util64/目录。运行相应的批处理文件。
等待工具处理所有地图。
处理完成后,导航到输出目录:
levels.deps/<project_name>.打开所需映射的.deps`文件以访问两种类型的日志:
纹理到资产依赖关系日志
资产到纹理依赖关系日志
纹理到资产依赖关系日志
这是文件中的第一个日志,它指示哪些资源正在使用特定纹理。
日志格式通常如下所示:
[texture size] texture name <- asset(s)
示例:
referenced 752 DDSx (4 root, legend: [WxH memSz] TEX <- RES...):
[ 256x256 85K] african_fabric_cover_d_tex_d* <- debris_clothes_f;
[ 256x256 85K] african_fabric_cover_h_tex_d* <- debris_clothes_e;
[ 256x256 85K] african_fabric_cover_tex_n* <- debris_clothes_e; debris_clothes_f;
.........................
total 874M for 752 texture(s)
资产到纹理依赖关系日志
这是文件中的第二个日志,它提供以下信息:
特定资源使用哪些纹理。
这些纹理是该资产独有的,还是在多个资产之间共享的。
每个资产的顶点缓冲区和地图的全局顶点缓冲区。
日志格式通常如下所示:
[asset vertex buffer + unique texture size] asset name -> unique textures; shared textures;
示例:
referenced 3428 resources (1704 root, legend: [resVB + uniqueTex] RES -> unique{TEX...}; shared{TEX...}):
* [ 1345K+ 0K] 88mm_flak_36_canon_a -> shared[2]={ flak_36_set_tex_d*; flak_36_set_tex_n*; };
88mm_flak_36_canon_a_collision
* [ 1345K+ 0K] 88mm_flak_36_canon_b -> shared[2]={ flak_36_set_tex_d*; flak_36_set_tex_n*; };
88mm_flak_36_canon_b_collision
* [ 71K+ 170K] wooden_power_pole_a -> unique[2]={ insulator_tex_d*; insulator_tex_n*; }; shared[7]={ decal_modulate_leaks_bottom_tex_m*;};
.........................
total 322.4M (VB/IB) for 3428 resource(s) // total vertex buffer for the location.
由于顶点缓冲区数据,此日志特别有用,这有助于识别纹理通道过多的潜在问题(例如,如果顶点缓冲区大小非常大)。
工具内部结构
了解工具的内部结构对于有效使用至关重要。
文件结构
该工具由以下组件组成:
dbldUtil-dev.exe: 位于<engine_root>/tools/dagor3_cdk/util/。批处理文件 (
build_deps.cmd): 位于<engine_root>/<project_name>/develop/levels.deps/。配置文件(
game_env.blk):与批处理文件位于同一目录中。
虽然不需要修改可执行文件,但您可能需要调整批处理文件。
批处理文件
批处理文件由执行特定任务的命令行组成。
例:
@for %%f in (..\..\game\content\<project_name>\levels\*.bin) do ..\..\..\tools\dagor3_cdk\util\dbldUtil-dev.exe PC %%f -deps:game_env-cr.blk ><project_name>\%%~nxf.deps
此命令的含义是:
@for %%f in (..\..\game\content\<project_name>\levels\*.bin): 对于指定目录中扩展名为.bin的所有文件,do ..\..\..\tools\dagor3_cdk\util\dbldUtil-dev.exe PC %%f -deps:game_env-cr.blk ><project_name>\%%~nxf.deps: 在 PC 上以 <project_name> 配置运行该工具,并将结果输出到<project_name>目录,文件名相同,但扩展名为.deps。
如果不希望该工具处理所有二进制文件,则可以修改批处理文件以将特定文件作为目标。
例如,要处理特定文件:
..\..\..\tools\dagor3_cdk\util\dbldUtil-dev.exe PC ..\..\game\content\<project_name>\levels\cr_menu_background.bin -deps:game_env-cr.blk ><project_name>\cr_menu_background.bin.deps
此命令指示该工具:
处理特定文件(
cr_menu_background.bin),使用
<project_name>配置,将结果输出到指定的目录和文件。
工具配置
如果您在使用该工具时遇到任何错误,则必须检查配置文件。
game_env.blk文件定义了 “工作目录” ,至关重要的是,定义了映射正常运行所需的 包 。因此,如果该工具未处理您的地图,请不要担心。检查配置文件中是否列出了映射所依赖的所有软件包,并仔细阅读错误日志。