ZenserverのProjectIdの自動付与は、
//UE5/Release-5.5/Engine/Source/Runtime/Core/Private/Misc/App.cpp
FString FApp::GetZenStoreProjectId(FStringView SubProject) // L445
によって行われると思いますが、これが絶対パスによってハッシュが決定されるため、
同じプロジェクトでも個々のメンバーのPC環境に因ってワークスペースのドライブレターが異なったり、
ソースビルドを利用するメンバーとバイナリビルドを利用するメンバーがいるなどして
絶対パスが異なるため、バラバラになってしまいます。
ゲームから Zenserver as Cooked Output Store として利用する際はこのProjectIdが一致しないと動作しないことは確認しました。(これはZen共有DDCではなく実験的に開発用ワークステーション2台での確認)
Zenserver as Shared DDCとして利用する際もProjectIdの一致が必要でしょうか?
この場合、クック時に-ZenStoreProject引数を追加するなどして統一すべきでしょうか。
また、ソースビルドとバイナリビルドで同じZen共有DDCをProjectIdを同じにして使うことは問題ない事でしょうか?
よろしくお願いいたします。
お世話になっております。
ご連絡頂いた理解で正しく"-ZenStoreProject"を統一する必要があるはずですが、念の為開発チームにも確認を行っておりますので今しばらくお待ち下さい。
お世話になっております。
開発チームと確認しましたが、結果として “-ZenStoreProject” は “Zenserver as Cooked Output Store” にだけ影響しますが、 “-ZenStoreProject” をプロジェクトで共有する必要はありません。コマンドライン上の “-ZenStoreProject” は zenserver を使用する開発者が使用するためのものではありません。これはZenServer が前回のクックで Cooked Output Store として使用した oplog をツールに渡すためのもので、このoplog はSamples\Games\Lyra\Saved\Cooked\Windows\ue.projectstoreファイルに記録されます。
> Zenserver as Shared DDCとして利用する際もProjectIdの一致が必要でしょうか?
"Zenserver as Shared DDC” は ProjectId の影響がないため特に一致する必要はありません。
> この場合、クック時に-ZenStoreProject引数を追加するなどして統一すべきでしょうか。
もしこれを利用する意図が同じクックデータを参照したいことであれば統一する必要はありません。同じクックデータを利用する場合はsnapshotをインポート/エクスポートして共有します。
https://dev.epicgames.com/documentation/en\-us/unreal\-engine/cooked\-data\-snapshots\-with\-zen\-storage\-server\-for\-unreal\-engine
> また、ソースビルドとバイナリビルドで同じZen共有DDCをProjectIdを同じにして使うことは問題ない事でしょうか?
同じProjectIdを利用することは問題ないです。
ご回答ありがとうございました。Zen周りの理解が進みました。
SnapShotはまだ試せていませんが、確認してみたいと思います。
この質問は閉じていただいて大丈夫です。