Unreal Engineでは、シェーダーやアセットを適切に扱うためにキャッシュファイル(DDC)を生成しますが、
プロジェクトが多くなってくるとキャッシュ生成で時間が必要になってしまいます。
今回は、キャッシュを効率的に扱うため機能として存在するキャッシュの共有機能(SharedDDC)について、
使用方法やトラブルポイント、使った場合の利点に関して詳しく紹介していきます。
設定方法
基本的な設定方法に関しては、[編集] > [エディタの環境設定...] > [グローバル] > [Deroved Data]に存在する
Local Derived Data CacheとShared Derived Data Cacheです。
それぞれがローカル用のキャッシュ保存パスと共有用のキャッシュ保存パスの設定となります。
これらを設定すると、まずローカルにキャッシュが無いか確認し、次にサーバーにキャッシュがないか確認し、
それでもデータがない場合にキャッシュを作成するようになります。
注意点
DDCに関しては上記の設定のほかに複数の設定方法があるので、どのフォルダのパスが実際に使われているか注意が必要です。
複数の設定方法はそれぞれ独立してしまっているので、どのフォルダがプロジェクトで使われているかログから確認するとトラブルを回避できるかと思います。
実際に使われているフォルダのパスはエディタ起動時にアウトプットログから確認ができます。
確認は[ウィンドウ] > [デベロッパーツール] > [アウトプットログ]を開き、フィルタでddcを入力すると分かりやすいかと思います。
エディタからの設定する以外にINIファイルからの設定方法があります。
こちらは、UE4のEngine以下のEngine/Config/BaseEngine.iniや、
Project/Config/DefaultEngine.ini以下に含まれる[InstalledDerivedDataBackendGraph]が設定項目です。
設定項目の中のLocalのPathで自分のローカルパスを設定し、Sharedが共有サーバーのアドレスを設定します。
(アドレスはWindowsで通常のエクスプローラーで扱うようなフォルダパスで問題有りません)
[InstalledDerivedDataBackendGraph]
MinimumDaysToKeepFile=7
Root=(Type=KeyLength, Length=120, Inner=AsyncPut)
AsyncPut=(Type=AsyncPut, Inner=Hierarchy)
Hierarchy=(Type=Hierarchical, Inner=Boot, Inner=Pak, Inner=EnginePak, Inner=Local, Inner=Shared)
Boot=(Type=Boot, Filename=%GAMEDIR%DerivedDataCache/Boot.ddc, MaxCacheSize=256)
Local=(Type=FileSystem, ReadOnly=false, Clean=false, Flush=false, PurgeTransient=true, DeleteUnused=true, UnusedFileAge=17, FoldersToClean=-1, Path=../../../Engine/DerivedDataCache)
Shared=(Type=FileSystem, ReadOnly=false, Clean=false, Flush=false, DeleteUnused=true, UnusedFileAge=19, FoldersToClean=-1, Path=\\mystudio.net\DDC, EnvPathOverride=UE-SharedDataCachePath)
AltShared=(Type=FileSystem, ReadOnly=true, Clean=false, Flush=false, DeleteUnused=true, UnusedFileAge=19, FoldersToClean=-1, Path=\\mystudio.net\DDC2, EnvPathOverride=UE-SharedDataCachePath2)
Pak=(Type=ReadPak, Filename=%GAMEDIR%DerivedDataCache/DDC.ddp)
EnginePak=(Type=ReadPak, Filename=../../../Engine/DerivedDataCache/DDC.ddp)
またWindowsの環境変数設定にUE-SharedDataCachePathという変数を設定することにより、
そちらからキャッシュを読みに行かせることも可能です。
プロジェクト単位ではなく、チーム全体で同一の共有サーバーを使いたい場合はこちらを利用すると便利です。
その他設定に関する公式ドキュメントはこちらです。
派生データのキャッシュ | Unreal Engine ドキュメント
https://docs.unrealengine.com/ja/Engine/Basics/DerivedDataCache/index.html
おわりに
プロジェクトデータが大きくなってくるとキャッシュ生成の時間は比例して大きくなります。そのためプロジェクト後半にマシンを変えたり、新しく人が入った時に初回起動でレベルを開くのに数十分、数時間と時間を取られるというケースもあるかと思います。共有DDCを活用することでその時間を短縮できるようになるかと思いますので、是非活用してください。