お世話になっております。
<br/>
現在パッケージングのためにChunk設計を行っているのですが
その際にパーシスタントレベルに持っているデバッグ用のサブレベルを除外しようとしているのですが
ChunkIDを仮に1001に指定して、PrimaryAssetLabelの設定でCookRuleを「Development Always Production Never Cook」を指定
Explicit Assetsで除外するレベルを指定しているのですがパッケージに含まれるようで少々困っております。
<br/>
色々と資料を探してみてはいるのですが、現在どのように指定して除外するのが正しいのかがいまいちわかっていないため
何かこの辺のベストプラクティスなどをご教授いただければと思います。
[Attachment Removed]
お世話になっております。
ご報告頂いた内容は想定どおりの挙動に近いと考えています。まずChunkIDはCookの除外設定ではなく、あくまでチャンク振り分け用で、パッケージに含む/含まないの判定には使われません。次に、パーシスタントのStreaming Levelsにデバッグ用サブレベルが載っていると、ULevelStreaming::WorldAsset(soft参照)経由でCook依存に入ります。PrimaryAssetLabelのCookRuleだけでは、この参照自体は消えません。さらに「Production Never Cook」系が本番Cookを止めるのは、AssetManagerSettings.bOnlyCookProductionAssets=Trueで、かつDevelopmentオブジェクト非許容ターゲット(Shippingビルドなど)のときに限られます。デフォルトはこのフラグがFalseなので、CookRuleだけでは除外されません。加えてDevelopmentAlwaysProductionNeverCookは「Developmentでは入れる/Productionでは入れない」という意味であり「常に除外」ではありません。DevelopmentやTestパッケージで確認している場合は含まれてしまいます。
いちばん確実なのは、出荷用パーシスタントのStreaming Levelsからデバッグ用サブレベルを外すか、出荷用マップを分けることです。EditorやPIE専用マップでのみ参照するのが安全です。デバッグマップを例えば/Game/Maps/Debug/にまとめ、Project Settingsの"Directories to never cook"へ追加することです。参照が残っていてもCook自体は抑止できますが、親マップ内のパス文字列までは消えない点には注意が必要です。AssetManagerで条件付き除外する場合は、DefaultGame.iniでbOnlyCookProductionAssets=Trueとしたうえで、全ビルド除外ならNeverCook、Shippingのみ除外ならProductionNeverCookを使います。
[Attachment Removed]
ご回答ありがとうございます。
各種設定を確認し除外できるのを確認いたしました。
最終的にどの選択肢をとるかは社内で検討したいと思います。
[Attachment Removed]