ProjectのUEを切り替えた時の、ZenServerの挙動について

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

<br/>

Projectを起動し、ZenServerへキャッシュを作成。

その後、ProjectのEngineを切り替え(ディレクトリ階層が別のEngineへ切り替え)

再度Projectを起動すると、起動時にファイルの読み込みに失敗する症状が発生しています。(添付

<br/>

対応として、ZenServerのキャッシュをdropすると、問題無く起動出来たので

ProjectのEngineを切り替える前後両方が、同様のZenServerのキャッシュを使用していて

EngineDirが違う事によるローカルパスの問題でエラーが発生しているように見受けられました。

<br/>

上記について何か情報は有りますでしょうか。

以上、よろしくお願いします。

<br/>

<br/>

■再現方法

1. EpicGameLauncherでUE5.8.2を落とす

2. プロジェクトを作成(テスト時はTPS(BP)

3. Editorを起動し、プロジェクトランチャーで「起動」

4. .uprojectを右クリックして「Switch Unreal Engine Version」でEngineを切り替え

(D:\AAA\Engine → D:¥AAA¥BBB¥Engine

5. Editorを起動し、プロジェクトランチャーで「起動」

エラーが発生

LogProjectManager: Error: Failed to read file ../../../TPSBP_582EL/TPSBP_582EL.uproject: The document is empty., Line 1:

<br/>

■情報

・該当プロジェクトのZenServerのキャッシュをdropすることにより正常に起動します。

<br/>

[Attachment Removed]

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

ご認識の通り、Engine を切り替えても同じ Zen のキャッシュが使われます。ローカル Zen の保存先は Engine ごとではなく、マシン共通(%LOCALAPPDATA%\UnrealEngine\Common\Zen\Data)です。プロジェクトの識別も .uproject のパスのみで、Engine の場所は含まれません。

​

初回起動時に、Engine の親ディレクトリ(D:\AAA\Engine なら D:\AAA)が Zen 側に記録されます。ファイルの中身は持たず、この親からの相対パスでディスクを読みます。Engine を D:\AAA\BBB\Engine に切り替えてもこの記録は更新されないため、パスが別の場所を指し、.uproject が空として読まれます。ログの The document is empty. はこの状態です。キャッシュの drop で直るのは、この記録が消えて、次の起動で新しい Engine の場所が書き直されるためです。回避策としては、Engine 切り替え後に該当プロジェクトの Zen キャッシュを drop してから起動してください。

以上、よろしくお願いいたします。

[Attachment Removed]

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

EngineDirをZenのプロジェクトIDに含める機能は無いため、同じ.uprojectのままではキャッシュは分かれません。分けるには、EngineごとにZenのDataディレクトリを変える必要があります。ご提示のbatと環境変数が、Cook 結果を残したまま分ける方法です。

起動前に次を設定してからUnrealEditor.exeを起動してください。

set UE-ZenDataPath=D:\AAA\Engine\Saved\ZenData
start "" "D:\AAA\Engine\Binaries\Win64\UnrealEditor.exe" %*

もう一方の Engine では UE-ZenDataPath をその Engine 配下の別ディレクトリにします。この変数で指定した場所は既定パス扱いにならないため、切り替えても相手側のキャッシュは削除されません。Cook やプロジェクトランチャーの起動はエディタの環境変数を継承します。以下は補足事項です。

  • .uproject のダブルクリックや「Switch Unreal Engine Version」は bat を通らないため、テスト時の起動は bat に統一する必要があります。
  • レジストリの Zen\DataPath はマシン共通なので、Engine の分離には使えません。
  • 各 Engine の BaseEngine.ini の DataPath を変える方法は起動経路を問わず有効ですが、既定パスの変更とみなされ、前回の Data ディレクトリが削除されます。往復時の Cook を残す目的には合いません。

[Attachment Removed]

返答ありがとうございます。

現状の動作が仕様という事で了解しました。

>回避策としては、Engine 切り替え後に該当プロジェクトの Zen キャッシュを drop してから起動してください。

あまり頻度は高くないのですが、ProjectのEngineを切り替えてテストを行う事があり

・Zenキャッシュの切り替えの手順増加によるヒューマンエラー

・起動失敗時にZenキャッシュが原因だと気付くまでの時間

・Zenのキャッシュをdropすることによる、次回Cookの本来不要である時間の増加

などが懸念点としてあります。

そこで此方としては「同ProjectのZenキャッシュをEngineDirで自動的に分ける」

というのが最適なのですが、なにか良い手法は有りますでしょうか。

候補としては下記があります。

・batなどを挟んで、環境変数によるZenキャッシュ場所の切り替え

[Attachment Removed]

返答ありがとうございます。

注意点含め、詳細をありがとうございました。

良さそうな手段を考えてみたいと思います。

問題の症状に対しては仕様と返答を頂いているので

これにて、質問をクローズさせていただきます。

対応ありがとうございました。

[Attachment Removed]