UDN
Search public documentation:

GameplayProfilerJP
English Translation
中国翻译
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 ホーム > パフォーマンス、プロファイリング、最適化 > ゲームプレイ プロファイラー
UE3 ホーム > ゲームプレイ プログラミング > ゲームプレイ プロファイラー


ゲームプレープロファイラー


概要


ゲームプレープロファイラーとは、5月の QA 承認ビルドで導入されたツールです。このツールによって、ゲームプレーコードで使われる時間をより綿密に扱うことができるようになります。これは、Script Profiler の代わりになるものです。

gp.jpg

プロファイルの作成


プロファイリングはいつでも開始できます。それには、 PROFILEGAME START console command (コンソールコマンド)を実行します。中止するには、 PROFILEGAME STOP をコンソールで実行します。10秒間のゲームプレーをキャプチャする場合は、 PROFILEGAME 10 を使用します (選択可能)。

.gprofファイルが、 (GameName)Game\Profiling\ フォルダーに書き出され、コンソール上で自動的にホスト PC にコピーされます。ただし、ファイルが急速に大きくなることがあるので、ホットスポットを中心に、たとえば 10~30 秒間だけ実行するのが最善です。

プロファイルのビュー


ゲームプレープロファイラー実行ファイル (GameplayProfiler.exe  Binaries ディレクトリ内にあります) を起動し、 [_File Open_] (ファイルオープン) ボタンを押して開きたい .gprof ファイルに進むか、または、単にコマンドライン上で .gprof ファイルを渡します。

注意: ゲームプレープロファイラー実行ファイルは、UE3 の Binaries ディレクトリの中か、または UDK ディストリビューションにあります。

出力


データファイルがロードおよびパースされると、時間とフレームのグラフが、さまざまに分析された現在のフレームのプロファイリング データを示す複数のタブと共に表示されます。

デフォルトでは、フレーム 0 が選択されます。新たなフレームを選択するには、グラフ内で左クリックするか、グラフの上にある Frame 入力欄にフレーム番号を入力します。現在選択されているフレームは、グラフ内で赤い垂直の線によって強調表示されます。

グラフ上でズームインするには、左マウスボタンを押したままドラッグして、表示させたい領域をマーキー選択します。フレーム軸の左側にある小さな円、もしくは時間軸の最上部の円をクリックすると、それぞれの軸に沿ってズームアウトします。

チャートの中の緑のラインは、フレーム時間を ms で示します。青のラインは、トラックされたアクタのティック / スクリプト時間、および、それとフレーム時間との関係を示します。たとえば、すべてのスパイクがスクリプトやゲームプレーの ticking (ティック) に関係しているとは限りません。そのため、関係しているスパイクの同定とそれへのドリルが可能になります。

Time Threshold (時間閾値) を使用することによって、その時間を上回っているデータのみを表示することができます。これを利用すると、一定の重要度をもつイベントだけを表示することができるため、問題箇所を簡単に発見できます。

Show Native Timing Data (ネイティブのタイミングデータを表示する) が有効な場合は、サイクルカウンターのスコープで消費された時間が、スクリプトのタイミングデータとともに表示されます。このデータを分析するには、StatsViewer を使用する必要があります。これをスクリプトデータとともにゲームプレイプロファイラーで直接表示することによって、問題を、一層簡単にかつ素早くトラッキングすることができるようになります。

タブの中で示されるデータは、カラーコード化されているため、データの種類を容易に識別することができます。

gp_colorcoding.jpg

データの種類は次のようになります。

  • - スクリプト関数
  • - ネイティブコード
  • - レベル
  • - アクタ
  • オリーブ - コンポーネント
  • オレンジ - クラス

また、関連するアセットの名前が表示されます。たとえば、SkeletalMeshComponent のデータである場合は、それに適用されている SkeletalMesh の名前が表示されます。

gp_assetname.jpg

Actor/ class call graph (アクタ/クラスコールグラフ)

このビューは、2 つの別のコールグラフに分かれています。左側には、level -> actor -> component/ functionの階層があります。これは選択されたフレームのためのもので、各インスタンスを別々に表示します。一方、右側は、actor class -> actor -> component/ functionの系列になっています。

左側を使用して、マルチレベルのシナリオにおいてどのレベルがホットであるかを調べられます (通常は、その中で作成されたオブジェクトがある、パーシスタントなレベルになります)。また、特定のオブジェクトの相対コストを見ることもできます。

右側を使用すると、どの型のオブジェクトが時間をとっているか調べるのに便利です。また、クラスのインスタンスがいくつあるかを調べることもできます。そこで表示されている inclusive 数と exclusive 数は、選択前にツリーで包括される (inclusive) 子ノードと除外される (exclusive) 子ノードの数を表します。通常、inclusive 数が高い場合は、種々のスクリプト関数が呼び出されたことを意味します。

gp_callgraph.jpg

Function summary (関数概要)

このビューは、選択されたフレームの間に呼び出される各スクリプト関数を表示します。inclusive タイムおよび exclusive タイム、呼び出しカウント、inclusive タイムおよび exclusive タイムを呼び出し数で割った率 (incl. per call、excl.per call) が表示されます。コラムをクリックして、コラム単位で降順にソートできます。ただし、関数名のコラムは、唯一の例外として常に昇順でソートされます。

gp_functionsummary.jpg

Class hierarchy (クラス階層)

クラス階層は、コストに関するクラス単位のビューです。コストは、アクタ、アクタコンポーネント、関数のトップレベルのノードに分割されます。ここで注意すべきことは、大半のアクタコンポーネントと関数の時間が、すでにアクタ時間によって説明されているということです。したがって、これらの数字を単純に合計することはできません。

このビューを使用すると、クラス階層を調べるのが容易になります。たとえば、AI をティックするのにどのくらいの時間が使われたかとか、UnrealScript を実行するのにどのくらいの時間が使われたかを調べることができます。

gp_classhierarchy.jpg

Function call graph (関数呼び出しグラフ)

このタブは、現在選択されているフレームの呼び出しグラフを表示します。

gp_functiongraph.jpg

Aggregate function summary (統合関数概要)

このタブは、[function summary] (関数概要)タブと類似しています。ただし、キャプチャデュレーション全体の情報を統合している点が異なります。inclusive および exclusive デュレーションと呼び出しカウントが統合されています。[max inclusive] (最大 inclusive) と[max exclusive] (最大 exclusive) は、それぞれ単一のフレームの最大値です。他の値は、フレームの平均値です。

gp_aggsummary.jpg

Aggregate function call graph (統合関数呼び出しグラフ)

実行される関数すべての呼び出しグラフです。キャプチャデュレーション全体にわたって統合されます。

gp_aggcallgraph.jpg