複数の Unreal Engine プロジェクトを同一エンジンバージョンで運用している環境における、Zen DDC の挙動について確認させてください。
現在、各プロジェクトでは local Zen DDC のデータディレクトリをプロジェクト配下に置くため、以下のような設定を行っています。
[Zen.AutoLaunch]
DataPath=%GAMEDIR%Zen/Data
また、DDC backend graph は local Zen DDC と shared Zen DDC を参照する構成です。
[DerivedDataBackendGraph]
Root=(Type=KeyLength, Length=120, Inner=AsyncPut)
AsyncPut=(Type=AsyncPut, Inner=Hierarchy)
Hierarchy=(Type=Hierarchical, Inner=ZenLocal, Inner=ZenShared)
ZenLocal=(Type=Zen, ServerID=Local)
ZenShared=(Type=Zen, ServerID=Shared)
[StorageServers]
Shared=(Host=“http://<SHARED_ZEN_DDC_HOST>:<PORT>”, Namespace=“<PROJECT_NAMESPACE>”, EnvHostOverride=UE-ZenSharedDataCacheHost, CommandLineHostOverride=ZenSharedDataCacheHost, DeactivateAt=60)
確認している問題は、Project A -> Project B -> Project A のように、異なるプロジェクトを交互に起動した場合です。
Installed Build を利用したエディタ起動時に以下のユーザー単位の設定が更新されます。
<LOCAL_APP_DATA>/UnrealEngine/<UE_VERSION>/Saved/Config/WindowsEditor/EditorSettings.ini
[/Script/UnrealEd.ZenServerSettings]
InUseDefaultDataPath=…
この設定は同一エンジンバージョンで共有されるため、プロジェクトごとに異なる Zen DataPath を使っていると、別プロジェクトでエディタを起動するたびに値が切り替わります。
その結果、起動時に以下のようなログが出力されます。
LogZenServiceInstance: Display: Migrating default data path from ‘<PROJECT_B_ROOT>/Zen/Data’ to ‘<PROJECT_A_ROOT>/Zen/Data’. Old location will be deleted.
関連する実装では、以下の処理により、以前の local Zen DDC のデータディレクトリが削除されているように見えます。
IFileManager::Get().DeleteDirectory(*InUseDefaultDataPath, false, true);
このため、あるプロジェクトを起動すると、別プロジェクトで使用していた local Zen DDC のデータディレクトリが削除され、削除された側のプロジェクトを次回起動した際に、派生データの再生成または shared Zen DDC からの再取得が発生します。
確認したい点は以下の通りです。
- 同一エンジンバージョンで複数プロジェクトが異なる [Zen.AutoLaunch] DataPath を使っている場合、以前の InUseDefaultDataPath のディレクトリが削除される挙動は想定通りでしょうか。
- プロジェクト設定またはエディタ設定で、以前の local Zen DDC のデータディレクトリを削除しないようにする方法はありますでしょうか。
- エンジン側を修正し、以前のディレクトリを削除せず InUseDefaultDataPath の更新だけ行うようにした場合、既知の副作用や、削除が必要になるケースはありますでしょうか。
- 同一エンジンバージョンを複数プロジェクトで利用しつつ、プロジェクトごとの local Zen DDC を持ちたい場合、推奨される構成はありますでしょうか。
- 今後、以前の local Zen DDC のデータディレクトリを削除しないオプション等、複数プロジェクト運用向けの機能を追加していただくことは可能でしょうか。
よろしくお願いいたします。
[Attachment Removed]