だらけ者だらけ

だらけ者だらけの遊び場

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 の情報などは必須です。)
f:id:tempkinder:20180615222235p:plain


TestビルドでもNamedEventsを出力する方法(4.19から)

stat dumpframeというコマンドで、各スレッドのCPUの処理負荷を階層的に表示してくれます。これをTestビルドでもONにすることができます。
f:id:tempkinder:20180615221926p:plain

注意点としてこのdefineはUE4のstat機能をoffにしてしまうのでそのまま1にするとDevelopmentビルドでstat機能が使えなくなってしまいます。下の様にTestで囲んで1にしてあげてください。
f:id:tempkinder:20180615221938p:plain


TestビルドでもProfileGPUを行う方法

GPU負荷はDevelopmentビルドで見ても問題ないのですが、ProfileGPUでレンダリング内容を簡単にしることもできるので、CPUでもRender Threadの解析には便利だったりします。
f:id:tempkinder:20180615222143p:plain


などなど。その他にもBuild.hには沢山の設定がありますので、自身が計測したい内容に基づいてDefineをONにしてみてください。