お世話になっております。
現在UE4をWindows上で使用し、そこにUSBでiPhoneをつなぎ、ネットワーク上のMacでリモートビルドして
iPhoneにゲームをインストールするというおそらくUE4における一般的なiPhone開発の使い方をしています。
どうしてもリモートビルドだからなのかMacのスペックがたりないからなのか、そのサイクルに時間がかかります。
現行最高スペックであろう100万円Macを使っても10-20分かかります。
Macのリモートビルド時間を短縮するための努力の仕方は何があるのか、一般的なC++のビルド時間改善のための手法とは別に何か設定があればご教示いただければと思います。
お忙しいところ大変申し訳ございません。
以上よろしくお願いします。
お世話になっております。
RemoteBuildの速度に関しては様々な要因が考えれられますので、まずは具体的にどの処理項目がネックになっているのかを確認することを推奨いたします。例えばリモートビルド時の出力ログにて大量に出力、または出力間隔が遅い項目を確認したり、ほぼ空なプロジェクト(又はレベル)をパッケージ化した場合は改善するかなどです。またプロジェクト設定における幾つかの項目(後述)がリモートビルド時間に影響するため、その項目が有効になっているか否かを確認することも重要かと思います。
ご参考までにRemoteBuildのビルド時間に関連する情報をご共有いたします。
● 共有DDC
RemoteBuildに限らない話になりますが、もし共有DDCが有効になっていない場合は有効にすることでビルド時間が大きく改善される可能性があります。共有DDCを使うことで一度Cookされたアセットを流用することが可能になります。そのため、例えば夜間にビルドを行ってキャッシュを貯めることで、作業時のビルドやエディタ作業中の待ち時間を大幅に短縮することが可能です。
● RemoteShaderCompile
プロジェクト設定における Enable Remote Shader Compile
を有効にすると、リモート先のMac上で各シェーダが非分散でコンパイルされることでビルド時間が増加します。ただし、 Enable Remote Shader Compile
が無効な場合は実行時にシェーダをコンパイルする必要がでてくるため、実行中のロード時間が増加しますのでご注意ください。
● dSYM
どの程度ビルド時間に影響するか計測はできていないのですが、デバッグ用のシンボルファイルであるdSYMの生成処理が影響している可能性があります。もしプロジェクト設定におけるdSYMに関する項目が有効になっている場合は一度無効にしてどの程度改善するか確認してみる価値はあるかと思います。もし改善した場合は、例えば実機上で表示を確認することがメインである非エンジニア環境では無効にするなどの対応を入れることでイテレーション速度が改善するかと思います。
● Mac上での分散ビルド
distcc、icecc、Fastbuildなどの分散ビルドシステムの使用に関してご質問を頂くことがあるのですが、残念ながら現状はどれも重大な欠点を抱えているため推奨できるものはないようです。Fastbuildがうまく機能したという報告もあるのですが、ネットワーク全体でのリソースのバランスが良くないという報告も受けています。そのため、Fortniteでも現状はMac上での分散ビルドは使用していません。
ご参考までに、Fortnite IOS版では40,000以上のアセットと100,000以上のシェーダのCookに約60〜90分かかっていますただし、これは共有DDCを活用することで大きく改善されます。また、Cookの高速化のため、リモートビルドは使用せずにプロジェクトをMac上で構築・運用しています。
よろしくお願いいたします。
いろいろ情報をいただきありがとうございました!
いただいた情報をまずは一つ一つ検討してみます。