This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Defold には、エンジンとビルドパイプラインに統合されたプロファイリングツールが含まれています。パフォーマンス、メモリ、リソース使用量の問題を見つけるのに役立ちます。実行時のプロファイリングデータは、いくつかの機能で利用できます。
アプリケーションマニフェスト(App Manifest)の Profiler 設定で、プロファイラーのコードをビルドにリンクするかどうかを制御します。既定値は Debug Only で、None はコードを除外し、Always はデバッグビルドとリリースビルドの両方にコードを含めます。game.project の profiler 設定は実行時の動作を制御しますが、除外されたプロファイラーのコードをビルドに再びリンクすることはありません。特に、Track CPU は CPU 使用率のサンプリングを制御する設定で、App Manifest の選択とは別です。
プロファイラーのサポートを含むビルドには、実行中のアプリケーションにリアルタイムの情報を重ねて表示する、実行時のビジュアルプロファイラーが用意されています。
function on_reload(self)
-- Toggle the visual profiler on hot reload.
profiler.enable_ui(true)
end

ビジュアルプロファイラーには、データの表示方法を変更できる関数がいくつか用意されています。
profiler.set_ui_mode()
profiler.set_ui_view_mode()
profiler.view_recorded_frame()
プロファイラーの関数について詳しくは、profiler API リファレンスを参照してください。
プロファイラーのサポートを含むデスクトップまたはモバイル向けビルドの実行中は、ブラウザーから対話型のフレームプロファイラーとリソースプロファイラーにアクセスできます。
フレームプロファイラーでは、実行中のゲームをサンプリングし、個々のフレームを詳しく分析できます。プロファイラーにアクセスする手順は次のとおりです。
フレームプロファイラーはいくつかのセクションに分かれており、それぞれが実行中のゲームを異なる観点から表示します。右上の Pause ボタンを押すと、プロファイラーによるビューの更新を一時停止できます。

複数のターゲットを同時に使用している場合は、ページ上部の Connection Address フィールドを変更して、手動でターゲットを切り替えられます。このフィールドには、ターゲットの起動時にコンソールに表示された Remotery プロファイラーの URL を指定します。
INFO:ENGINE: Defold Engine 1.3.4 (80b1b73)
INFO:DLIB: Initialized Remotery (ws://127.0.0.1:17815/rmt)
INFO:ENGINE: Loading data from: build/default



LuaMem の値は、Lua ガベージコレクターが報告する、Lua VM のメモリ使用量をキロバイト単位で示したものです。Memory は、エンジンのメモリ使用量をキロバイト単位で示します。
Max Sample Count 設定は、1フレームでスレッドごとに記録するプロファイラーのサンプル数を制限します。プロファイラーが上限を超えたことを報告した場合は、まずネイティブ拡張(native extension)のプロファイリングコードで、スコープの開始と終了が対になっているかを確認してください。正常なフレームに含まれるスコープ数が設定された上限を超える場合に限り、上限を引き上げてください。
リソースプロファイラーでは、実行中のゲームを調べ、リソースの使用状況を詳しく分析できます。プロファイラーにアクセスする手順は次のとおりです。
リソースプロファイラーは2つのセクションに分かれています。一方は現在ゲーム内でインスタンス化されているコレクション(collection)、ゲームオブジェクト(game object)、コンポーネントの階層を表示し、もう一方は現在読み込まれているすべてのリソースを表示します。

HTML5 では、ブラウザーのタイムラインに Remotery の代わりに Web Performance API を使用します。Defold のスコープを記録する手順は次のとおりです。
profiler.performance_timeline_enabled)を有効にします。このブラウザーのタイムラインは、ゲーム内のビジュアルプロファイラーとも、対話型の Remotery Web プロファイラーとも別の機能です。
ゲームのバンドルを作成するときに、ビルドレポートを作成するオプションがあります。ゲームのバンドルに含まれるすべてのアセットのサイズを把握するのに、とても役立ちます。ゲームのバンドルを作成するときに、Generate build report チェックボックスをオンにするだけです。

ビルダーは、ゲームのバンドルと同じ場所に report.html というファイルを生成します。このファイルを Web ブラウザーで開いて、レポートを確認します。

Overview は、リソースの種類別にプロジェクトサイズ全体の内訳を視覚的に表示します。
Resources は、リソースの詳細なリストを表示します。このリストは、サイズ、圧縮率、暗号化、種類、ディレクトリ名で並べ替えられます。「search」フィールドを使用すると、表示するリソースの項目を絞り込めます。
Structure セクションは、プロジェクトのファイル構造におけるリソースの配置に基づいてサイズを表示します。各項目は、ファイルとディレクトリの内容の相対的なサイズに応じて、緑(小さい)から青(大きい)まで色分けされます。
組み込みツールに加えて、無料で高品質なトレースツールやプロファイリングツールが数多くあります。以下にその一部を紹介します。
純粋な Lua で実装されたプロファイラーは、設定するフックごとにかなりのオーバーヘッドが発生する点に注意してください。そのため、このようなツールで得られた時間の計測結果は、少し慎重に扱う必要があります。ただし、回数の計測結果には十分な精度があります。

このツールでは、実行中の Defold アプリケーションを調べ、OpenGL の使用状況を確認できます。OpenGL 関数呼び出しのトレース、OpenGL 関数へのブレークポイントの設定、アプリケーションのリソース(テクスチャ、プログラム、シェーダーなど)の調査、バッファーの内容の確認、その他の OpenGL の状態の確認ができます。

ゲームの CPU、メモリ、ネットワークの動作に関するリアルタイムデータを取得する、プロファイリングツール群です。コードの実行をサンプルベースでメソッドトレースしたり、ヒープダンプを取得したり、メモリ割り当てを表示したり、ネットワーク経由で送信されたファイルの詳細を調べたりできます。このツールを使用するには、AndroidManifest.xml で android:debuggable="true" を設定する必要があります。

注: Android Studio 4.1 以降では、Android Studio を起動せずにプロファイリングツールを実行することもできます。
アプリケーションからグラフィックスドライバーへの呼び出しを調査、調整、再実行できるツール群です。このツールを使用するには、AndroidManifest.xml で android:debuggable="true" を設定する必要があります。
