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]
tuo.chen
(tuo.chen)
2
您好,先说结论:是的,这些文件也会进入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]
tuo.chen
(tuo.chen)
4
应该是不包含的,但我不确定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]
tuo.chen
(tuo.chen)
6
抱歉,前几天在出差。
这个问题其实我不是很了解,有办法复现吗?就是一旦加载了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]
tuo.chen
(tuo.chen)
8
hello,我这两天看了一下代码,并且试了一下这个流程,我这边并没有出现这个问题。。。如果有log可以发给我们分析一下。
内部也并没有相关的讨论
[Attachment Removed]
感谢,最近由于没有人在本地cook,我们无法立即给出相关log或者测试用例,后续我们关注到之后会收集信息再次提问,感谢回复
[Attachment Removed]