关于Zen store的一些问题

Config文件、.ushaderbytecode文件等这些UFS文件但是非uasset、umap等文件会进入zen吗?

如果不会的话,通过debug发现

<br/>

CopyBuildToStagingDirectory

-> ApplyStagingManifest

-> CopyUsingStagingManifest

-> bStageUnrealFileSystemFiles = !UsePak && !ShouldTreatAsFileServer

\-\> ShouldTreatAsFileServer \=\= true (ZenStore 或 ue.projectstore)

 \=\> 不复制 UFS

<br/>

stage在检查到ue.projectstore存在的时候或者其他认为使用了zenstore的条件,跳过了Config等文件的复制,那么,在使用zen store的条件下进行了cook和stage之后,StagedBuilds下获得的是一个完整的可以运行的包吗(感觉不是)?这种情况下如果要能正常运行游戏的话,ini和ushaderbytecode这些文件是从哪里获取的?

[Attachment Removed]

您好,先说结论:是的,这些文件也会进入zen store

在cook结束的时候会生成ZenFileSystemManifest(单独调用FZenFileSystemManifest::Generate),在里面会搜索磁盘上的文件加入

之后再上传到zen server中

[Attachment Removed]

谢谢,我有进一步的问题。

我们使用了as,我们程序会在本地自己cook,同时会进行Snapshot的导入。as会生成binds.cache文件,这个应该是不在ZenFileSystemManifest中的吧?我们遇到的具体问题是,在实际上不存在binds.cache文件的时候,似乎由于本地cook和导入Snapshot共用了同一个zen project,导致逻辑中判断binds.cache exists的时候结果是true。

还有一个类似的问题,我们遇到过,.uproject文件被判断为存在,但是rawdata size显示为-1,不确定是不是zen的bug?

[Attachment Removed]

应该是不包含的,但我不确定as的分支是不是添加了这个文件支持。可以参考FZenFileSystemManifest::Generate加上cache文件的收集看一下

[Attachment Removed]

感谢回复,有另一个可复现的问题

我们搭建了horde的Build game的流水线。在使用Build Machine构建完并Export一个Snapshot之后,如果我本地导入了这个Snapshot,然后我在本地进行cook,我通过zen streaming启动游戏的时候,在读取.uproject文件的时候,会找到文件但是raw size是-1,只有drop本地的zen的Project重新cook才可以解决问题,想问一下这个是不是bug?还是使用方式错误,不应该import其他Snapshot进来吗?

[Attachment Removed]

抱歉,前几天在出差。

这个问题其实我不是很了解,有办法复现吗?就是一旦加载了Snapshot,就获取不到uproject吗?

[Attachment Removed]

是的,几乎必现

zen版本是​5.7.6

复现流程基本是:本地自行cook,不Stage,通过zen streaming运行game,正常。然后import 一个新的远程zen的Snapshot(通过horde启动流水线打包出的game产出的Snapshot),再次运行game可能就会出现uproject错误,文件存在rawsize为-1

出现错误后,通过Dashboard进行drop对应的本地的zen里的Project,然后重新本地自行cook就可以解决问题。

造成异常的Snapshot本身是没有问题的,如果我本地没有cook过直接import之后启动游戏也是可以的​

[Attachment Removed]

hello,我这两天看了一下代码,并且试了一下这个流程,我这边并没有出现这个问题。。。如果有log可以发给我们分析一下。

内部也并没有相关的讨论

[Attachment Removed]

感谢,最近由于没有人在本地cook,我们无法立即给出相关log或者测试用例,后续我们关注到之后会收集信息再次提问,感谢回复

[Attachment Removed]