Unreal Engine 4.25 別のPCでチェックアウトやコピーした時の圧縮時間を短くする（派生データキャッシュ）

自分なりのまとめ[（結果へジャンプ）](#結果別のpcにプロジェクトを複製した時のアニメーションの圧縮時間の短縮法)
前回のと合わせると、かなり時間短縮できそう。

#前置き
[前に書いたの記事](https://qiita.com/a2d4f3s1/items/4253e4015c29326ea4b5)の関連で、別のPCでチェックアウトやコピーした時の圧縮時間を短くする方法 をたぶん一通り調べ終えたのでメモ。

映像制作でUE4を使ってると、やっぱり色々重くてリアルタイムなんて無理だし、尺も長い事が多い。つまりレンダリングに時間がかかる。なので、別のPCにデータを複製（SVNとかコピーとか）して何台かでレンダリングたりしたい。
したいんだけど、何も設定してないと別のPCにコピーしたりチェックアウトしたりする度にアニメーションの圧縮が動く。
<img width=330 src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/388152/7cce7008-bc91-82ea-a4ae-751b4148a459.png>
これが凄く重いくて、ちょっと前のプロジェクトなんてアニメーションの圧縮だけで数時間かかった（アニメーション圧縮中でもレンダリングはできるけど、圧縮にもCPUとか持っていかれるから、全然速度が出ない）。これは、何とかしなければ、、、
[（結果へジャンプ）](#結果別のpcにプロジェクトを複製した時のアニメーションの圧縮時間の短縮法)

#検証
####・ 再圧縮される条件
何も設定していない場合は `C:\Users\ユーザー名\AppData\Local\UnrealEngine\Common\DerivedDataCache` に `ANIMSEQ～` という名前で保存されてた。

この`ANIMSEQ～`を消すと無条件にアニメーションの圧縮が動いた。なら、こいつをコピーしたら良いのでは？と思ったんだけど、場所が場所なので、コピーするの面倒だし、SVNに含める事もできない事に気づいて中止した。

####・ 派生データキャッシ
<img width=300 src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/388152/012215f3-1810-7913-8d7a-167a41e70666.png>
という機能がある。キャッシュを共有して使う事でシェーダーやアニメーションの再計算の時間を短縮できるらしい。他のPCと共有する為には **Shared Drived Data Cache** を設定すれば良いっぽい。実際設定したら圧縮時間が**ゼロ**になった。

このあたりは、私が何か書くまでもなく@EGJ-Yutaro_Sawadaさんの記事 [**[UE4] キャッシュ(DDC)を共有する方法と注意点について**](https://qiita.com/EGJ-Yutaro_Sawada/items/a3744cf3ee9586dc9608) がよくまとまってたのでそっち読んでくれればOK。というか私もこれを読んだ。いちおう、手元で検証した感じだと、、、

+ 派生データキャッシュのローカルを設定したら  
`C:\Users\ユーザー名\AppData\Local\UnrealEngine\Common\DerivedDataCache`  
にはデータが保存されなくなった（AppDataにデータ保存されるの好きじゃないから、これは助かる）
+ データに更新が無く、データがサーバーにある場合はコピーされた。逆に、ローカルにしかデータが無い場合はサーバーにコピーされた。これで最新を保ってるはずなんだけど、たまに意図しない圧縮が始まる事があった（何らかの原因でデータが変わったのだろうけど、意図外だからちょっと困る）→前回のアニメーション圧縮の変更使えばそもそもの圧縮時間短くなるよね
+ 無効なパスを指定すると\AppDataの所に保存された
+ ローカルの方はフォルダの選択で指定すると絶対パス。相対パスの場合はエンジンの場所からになる。ので、手元の状況では上手く一纏めに扱えなかった

#■［結果］別のPCにプロジェクトを複製した時のアニメーションの圧縮時間の短縮法
色々調べた結果、手元の環境では**「派生データキャッシュを使う」「アニメーションの圧縮方法を変更する」**この2つの方法を組み合わせるのが一番時間が短縮できそうな事が分かった。2つの方法について改めてまとめておく。

####1. たぶん基本。派生データキャッシュを使う
［エンジンの設定>グローバル>派生データキャッシュ］
<img width=500 src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/388152/ddb42c28-3ca0-3498-221d-839cab9834c6.png>
繰り返しになるけど、設定したら手元のプロジェクトでは圧縮時間が**ゼロ**になった。
**Shared**が共有する上では大切な方。ネットワーク上を指定するのがポイント（ローカルじゃ共有できないしね）
DefaultEngine.iniで指定する方法や、注意した方が良いポイントについては、こちらも前述の@EGJ-Yutaro_Sawadaさんの[**[UE4] キャッシュ(DDC)を共有する方法と注意点について**](https://qiita.com/EGJ-Yutaro_Sawada/items/a3744cf3ee9586dc9608)に詳しく書いてあるのでそっちを見て下さい。
個人的ポイントとしては DefaultEngine.ini で指定する場合の肝は下記の「Shared=～」の部分で、後ろの方にパスを記入する部分がある。これだけでもシェアのフォルダは変わったぽかった。

```
[InstalledDerivedDataBackendGraph]  
Shared=(Type=FileSystem, ReadOnly=false, Clean=false, Flush=false, DeleteUnused=true, UnusedFileAge=19, FoldersToClean=-1, Path=ここにパスを書く)
```

実際にやってみた感じ、どうやらこっちの方法で指定した場合、エンジンの「shared Derived Data Cache」は空欄のままっぽいので、そこは注意かも？

####2. 意図しない再圧縮も短く終わらせる→圧縮方法を変更する
手元で何度もテストしてると、意図しない圧縮が動く事があった。何かしらデータに変更が加えられたからだとは思うのだけど、それでも30分とか持っていかれたりした。
なので [**前回の記事**](https://qiita.com/a2d4f3s1/items/4253e4015c29326ea4b5) の方法を使って、アニメーションの圧縮方法BitwiseやACLに変更しておく事にした。
ACLを使った手元のテストでは1/25の時間で終わった。Bitwiseはさらに短かった(時間取り忘れたので印象)。容量は平均するとACLデフォルトの約半分、Bitwiseで2倍～3倍程度になった。
　
　
これで、複数台でのレンダリングが楽になるといいな。でも、他にもっと良い方法は無いものなのだろうか？？とも正直思っている。