Testビルドでも色々計測できるようにする
Developmentビルドで正確なCPU負荷を図るのは難しい
UE4では、日々の開発はDevelopmentビルドで行い、最終的にリリースするパッケージはShippingビルドで作成するのが基本的なフローとなります。しかし、Developmentビルドはデータの整合性の確認であったりデータを集計していたりと、実際にリリースされるゲームでは除外されるデバッグ用コードが沢山含まれています。結果、DevelopmentビルドのCPU処理負荷はShippingビルドに比べて著しく重たく、実際にリリースされるゲームのCPU処理負荷を計測するのには適していません。 ※Developmentビルドでは様々なUE4のstat機能が使えます。それらを駆使して処理内容を理解したり投入されているオブジェクト数などを知ることに適しております。
正確なCPU負荷のトラッキングにはTestビルドを
しかし、Shippingビルドは実際にユーザに触れられるビルドなので、stat unitはおろかコンソールウィンドウなども閉じられてしまいます。なので、なるべく製品に近い状態でコンソールウィンドウなど最低限の機能のみを許可したTestビルドというオプションがUE4にはあります。 (※Testビルドは、エンジンカスタムビルドのみの機能で、ランチャーから落とすUE4ではTestビルドはないようです。)
Build.hのdefineを設定して、自分好みのTestビルドを
しかし、Testビルドはデフォルトではログなどの機能がOffになっており、これだと「GCの負荷のログを...ロード時間を...」などといったときに重宝するUE4のLogコマンドが使えなくなってしまいます。ただこれはデフォルトでオフなだけで、ユーザがBuld.hという一つのファイル内のdefineをそれぞれ設定することでカスタマイズ可能です。今回は自分がいつもTestビルドで変更している設定を紹介します。
Testビルドでもログを出力する方法
エンジンからの情報のアウトプットが閉じられているので、まずはログ出力機能をONにします。(特にGCの負荷を細かく計測するためにも、LogGarbage の情報などは必須です。)
TestビルドでもNamedEventsを出力する方法(4.19から)
各CPU ProfilerなどでCPUの処理負荷を階層的に計測するためのNamedEventsを、TestビルドでもONにすることができます。
注意点としてこのdefineはUE4のstat機能をoffにしてしまうのでそのまま1にするとDevelopmentビルドでstat機能が使えなくなってしまいます。下の様にTestで囲んで1にしてあげてください。