18
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Epic Games Japan #4Advent Calendar 2019

Day 19

[UE4] キャッシュ(DDC)を共有する方法と注意点について

Last updated at Posted at 2019-12-18

Unreal Engineでは、シェーダーやアセットを適切に扱うためにキャッシュファイル(DDC)を生成しますが、
プロジェクトが多くなってくるとキャッシュ生成で時間が必要になってしまいます。
今回は、キャッシュを効率的に扱うため機能として存在するキャッシュの共有機能(SharedDDC)について、
使用方法やトラブルポイント、使った場合の利点に関して詳しく紹介していきます。

設定方法

基本的な設定方法に関しては、[編集] > [エディタの環境設定...] > [グローバル] > [Deroved Data]に存在する
Local Derived Data CacheShared Derived Data Cacheです。
それぞれがローカル用のキャッシュ保存パスと共有用のキャッシュ保存パスの設定となります。
2019-12-18_16h15_10.png

これらを設定すると、まずローカルにキャッシュが無いか確認し、次にサーバーにキャッシュがないか確認し、
それでもデータがない場合にキャッシュを作成するようになります。

注意点

DDCに関しては上記の設定のほかに複数の設定方法があるので、どのフォルダのパスが実際に使われているか注意が必要です。
複数の設定方法はそれぞれ独立してしまっているので、どのフォルダがプロジェクトで使われているかログから確認するとトラブルを回避できるかと思います。

実際に使われているフォルダのパスはエディタ起動時にアウトプットログから確認ができます。
確認は[ウィンドウ] > [デベロッパーツール] > [アウトプットログ]を開き、フィルタでddcを入力すると分かりやすいかと思います。
2019-12-18_16h20_17.png

エディタからの設定する以外にINIファイルからの設定方法があります。
こちらは、UE4のEngine以下のEngine/Config/BaseEngine.iniや、
Project/Config/DefaultEngine.ini以下に含まれる[InstalledDerivedDataBackendGraph]が設定項目です。
設定項目の中のLocalのPathで自分のローカルパスを設定し、Sharedが共有サーバーのアドレスを設定します。
(アドレスはWindowsで通常のエクスプローラーで扱うようなフォルダパスで問題有りません)

BaseEngine.ini
[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という変数を設定することにより、
そちらからキャッシュを読みに行かせることも可能です。
プロジェクト単位ではなく、チーム全体で同一の共有サーバーを使いたい場合はこちらを利用すると便利です。
2019-12-18_12h05_43.png

その他設定に関する公式ドキュメントはこちらです。

派生データのキャッシュ | Unreal Engine ドキュメント
https://docs.unrealengine.com/ja/Engine/Basics/DerivedDataCache/index.html

おわりに

プロジェクトデータが大きくなってくるとキャッシュ生成の時間は比例して大きくなります。そのためプロジェクト後半にマシンを変えたり、新しく人が入った時に初回起動でレベルを開くのに数十分、数時間と時間を取られるというケースもあるかと思います。共有DDCを活用することでその時間を短縮できるようになるかと思いますので、是非活用してください。

18
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?