ZenserverのProjectIdの自動付与ルールとZen共有DDCの有効範囲

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はまだ試せていませんが、確認してみたいと思います。

この質問は閉じていただいて大丈夫です。