Shared Zen Storage ServerはCookedファイルも共有しますか?

ZenserverをCooked Output Storeとして有効にしており

Zen Storage Server(Location=Remote)を社内の信用のおけるネットワーク(有線LAN)上に用意していた場合

shared zen serverへの送受信が可能なのはDDCだけですか?

それともcookedファイルも共有されるのでしょうか?

また、もしcookedファイルも共有されてされているのであれば

targetPlatformでZenserver Streamingを行う際に-ZenStoreHost=<ip_or_hostname>に上記のサーバを指定することによりcookをするPCとTargetPlatformからzen streamingする為のPCを別々にすることが可能かと思われるのですがいかがでしょうか?

これにより

・パッケージビルド時のCPU負荷に左右されずにstreamingが行えるのではないか?

・別のPCからパッケージビルドする際にcook済みのデータを参照することでcookが高速化されるのではないか?

と期待しております

お世話になっております。

> shared zen serverへの送受信が可能なのはDDCだけですか?

> それともcookedファイルも共有されるのでしょうか?

前者が Zenserver as Shared DDC で、後者が Zenserver as Cooked Output Store と呼ばれるものです。

UE5.5においてもどちらも利用することができ、プロジェクト設定で有効にすることで Cookedファイルも共有することができます。

> enserver Streamingを行う際に-ZenStoreHost=<ip_or_hostname>に上記のサーバを指定することによりcookをするPCとTargetPlatformからzen streamingする為のPCを別々にすることが可能かと思われるのですがいかがでしょうか?

はい、その認識で正しいです。元々は「ビルドマシンなどで夜間にクックやパッケージを行い、その時に作成したクック済みデータを参照することによって、クック済みデータがローカル環境になくても高速に実機での動作確認ができる」ということを目的として利用することが想定されます。利用方法についても -ZenStoreHost=<ip_or_hostname> を指定することは正しいです。

> ・パッケージビルド時のCPU負荷に左右されずにstreamingが行えるのではないか?

私たちの予測としては、やはりアプリケーションパッケージとしてインストールした方がCPU負荷の点では優れているかと思われます。それでもアセット変更後の再クックやローカルにクック済みアセットが無くても起動できるという点では、イテレーションにおいてstreamingは効果的です。

>・別のPCからパッケージビルドする際にcook済みのデータを参照することでcookが高速化されるのではないか?

はい、こちらが Zenserver as Cooked Output Store の目的となります。また、クック済みアセットをデプロイする必要がない、という点においても有利な点となります。

ご確認頂きありがとうございます。

> ターゲットプラットフォームのCPUではなく、日中のパッケージビルドでCPU100%を使っている状態でstreamingサーバも兼ねてしまうとstreamingに支障があるのでは?​

補足説明頂きありがとうございました。はい、ビルドマシン等のCPU負荷はそれほど影響しません。しかしZen Serverでメモリ上にクック済みアセット情報を持つことになるので、メモリ使用量には影響しているかと思います。

> ​Zenserver as Cooked Output Store を共有(remote)で使用する場合はどのiniにどのように記載したらよいでしょうか?それとも-ZenStoreHost=等の引数をBuildCookRun時につけるのでしょうか?

アプリケーションを起動する際に、以下のような例で引数を渡すことでサーバーに接続してStreamingが行われます。​

Game.exe <Project> -cookonthefly -zenstorehost=<serverip>

質問を​正しく理解できておらず失礼いたしました。

あらためてご説明いただきありがとうございます。

Cooked データをローカル⇔リモートで共有する方法は Zenserver Cooked Data Snapshots をご利用頂くことを想定しています。基本的な思想として、「クック済みアセットの差分データを渡す」といったことではなく「クックした時点でのクック済みアセット情報を共有する」ことを目的としています。特に、特定のチェンジリストでのアセットを元に検証するといったことが可能です。

はい、正しい理解です。

CIで作成したSnapshotsをエクスポートすることで、CIとは別の場所にあるZenServerでクック済みデータを再構築できます。

開発メンバーはそのZenServerをZenStoreHostと指定してゲームをZen Streamingによって起動します。

開発メンバーのローカルで何かクック済みデータを元に試したい時は、CIのSnapshotsをローカルのZenServerにインポートすることもできます。

将来的には差分のみをクックすることや、差分データのみのやりとりができる機能を実装したいと考えていますが、時期は未定です。

Zenserver as Cooked Output Store のご説明ありがとうございました!

・別のPCからcookする際にcook済みのデータを参照することでcookが高速化

・ターゲットハードがcook済みデータをstreamingでサーバにアクセスする=アセットをインストールしなくてもよくなるので

パッケージインストール時にロスタイムを減らせる&アセットのみの更新時に再インストールが不要になる

旨、了解です

>リケーションパッケージとしてインストールした方がCPU負荷の点では優れている

説明不足でした

ターゲットプラットフォームのCPUではなく、

日中のパッケージビルドでCPU100%を使っている状態でstreamingサーバも兼ねてしまうとstreamingに支障があるのでは?

と思ったのでCPI負荷が~と書いておりました

〇追加の質問となりますが

Zenserver as Shared DDC を共有(remote)で使用する場合はDefaultEngine.iniに以下のように追記しましたが

[StorageServers]

Shared=(Host=“http://~:8558”, Namespace=“プロジェクト名.ddc”, EnvHostOverride=UE-ZenSharedDataCacheHost, CommandLineHostOverride=ZenSharedDataCacheHost, DeactivateAt=60)

Zenserver as Cooked Output Store を共有(remote)で使用する場合はどのiniにどのように記載したらよいでしょうか?

それとも-ZenStoreHost=等の引数をBuildCookRun時につけるのでしょうか?

ご返信ありがとうございます。メモリを食う旨了解です。

質問の仕方が不十分で申し訳ありません

「サーバーに接続してStreaming」する際は引数指定することは上記旨で了解なのですが、

BuildCookRun時にローカルのzenServer(だけ)ではなくリモートのzenServerにクック済みのデータを送信したいのです

DDCの場合もSharedでHostを指定しない場合はローカルのzenServerに保存されますが、

Hostを指定するとネットワーク上のzenサーバに保存されるので

cookedファイルもネットワーク上に保存し、

それを多数の別のPCから共有したい、という質問をしておりました

なるほど!そうなると

1、CIでクック済みデータを含まないパッケージを作成し

スナップショットをexportし、shared(remote)のzenServerにimportする

2、開発メンバーは共有(remote)のzenServerサーバを参照してstreamingする

※将来的にincremental cookが実装されたら

スナップショットを自PCのzenServerにimportし、必要箇所のみ上書きcookし、自PCのzenServerからstreamingする

のようなイメージとなりますでしょうか?

了解です!ようやくフローが見渡せました!ありがとうございました!