ゲームがクラッシュすると、Unreal Engine ではクラッシュ レポートが作成され、これを クラッシュ レポート クライアント に送信できます。クラッシュ レポート クライアントは、オプションの コメントを提供してクラッシュ レポートを Epic Games に送信するようにユーザーに要求するアプリケーションです。ゲームにパッケージ化したクラッシュ レポート クライアントをカスタマイズして、ゲームのデバッグに役立つように自分のサーバーにクラッシュ レポート データを送信できます。
このガイドでは、以下のものを提供します。
- クラッシュ レポートとその内容の概要。
- ローカル マシン上のクラッシュ レポートが存在する場所に関する情報。
- コンフィグ変数のリファレンスおよびクラッシュ レポートのプロジェクト設定
- 自分のパッケージ化されたアプリケーション用にクラッシュ レポーター クライアントを変更および設定する方法。
- リモート サーバーにクラッシュ レポートを受信するために使用できるクラッシュ レポート サービスの推奨事項。
クラッシュ レポート
クラッシュ レポートには以下のものが含まれています。
- クラッシュ guid と呼ばれる一意のランダム クラッシュ識別子。
- タイプ (crash、assert、ensure) などのエラー、またはクラッシュしているスレッドと他のすべてのスレッドのコールスタックに関する情報
- マシンのシステム情報およびビルド コンフィギュレーションなどのアプリケーション コンテキスト情報。
- クラッシュ時のログ出力。これは、デバイスのランタイム ログまたはプロジェクト エディタ ログです。
- キー / 値のペアを使用した、ゲームで提供される追加のコンテキスト。
- クラッシュ レポート クライアントを介してユーザーによって提供される追加のコメント。
以下は、クラッシュ レポート クライアントで表示されるクラッシュ レポートの例です。

ローカル クラッシュ レポートの場所
エディタのクラッシュ レポートは、ローカル マシン上にあるプロジェクトの「Saved/Crashes
」フォルダに格納されます。
または、クラッシュ レポートはユーザーのローカル マシン上の「C:\Users[Your Windows Username]\AppData\Local[Project Name]\Saved\Crashes
」にある場合もあります。
Unreal Engine のクラッシュの一般的な原因
発生するクラッシュ レポートの最も一般的な原因を以下に示します。以下のそれぞれは、クラッシュ レポーター クライアントを起動し、発生したクラッシュのタイプに関する詳細を提供するコールスタック上にメッセージを表示します。
クラッシュ ソース | 説明 | 画像の例 (クリックして拡大) |
---|---|---|
Crash | プログラムが処理できない問題が発生したため、シャットダウンしました。発生したクラッシュの理由は以下のとおりです。
|
|
Assert | デベロッパーがある条件に基づいてプログラムを意図的にクラッシュさせるためにコードに配置したアサート文によって発生しました。これは、予測可能な事柄がランタイム時に問題を引き起こすことを確認する際に役立ち、これによって問題を事前に把握することができます。次に例を示します。
Unreal Engine でのアサートの詳細については、アサートに関するドキュメント ページ を参照してください。 |
|
Ensure | Ensure ではある特定の条件をチェックしますが、false を解決した場合はクラッシュしません。代わりに、出力ログにメッセージを生成し、レポートを無人モードのクラッシュ レポーターに送信します。モニターしたい事柄がある場合に便利ですが、必ずしもクラッシュではありません。次に例を示します。
Unreal Engine での Ensure の詳細については、アサートに関するドキュメント ページ を参照してください。 |
Ensure は開発ツール専用で、テスト ビルドとシッピング ビルドのコンフィギュレーションでは通常、無効になっています。シッピング コンフィギュレーションを使用して、常にゲームをエンド コンシューマーに公開することをお勧めします。クラッシュ レポーター クライアントを変更していない場合、開発ビルドまたはデバッグ ビルドを配布すると、ユーザーから Epic Games に無人クラッシュ レポートが送信される場合があります。
カスタム コンテキストをクラッシュ レポートに追加する
クラッシュ レポートに追加される標準の情報に加えて、ゲーム プロジェクトでは ゲーム データ と呼ばれる独自のカスタム コンテキストを追加することも可能です。これは、ゲーム モード、ワールド内のプレイヤーの位置、またはバグの調査に重要な他のゲーム ステートに関する情報である場合があります。データは、キー / 値のペアや FPlatformCrashContext::SetGameData
関数を使用して追加されます。
GenericPlatformCrashContext.h
/** 任意のゲーム データをクラッシュ コンテキストに更新 (存在しない場合は追加) します (空の文字列を渡した場合、キーが削除されます)*/
CORE_API static void SetGameData(const FString& Key, const FString& Value);
エラーが発生する 前に、カスタム コンテキストが設定されることに注意してください。クラッシュ レポートが収集されると、ゲーム データ値の現在の状態が捕捉されレポートに書き込まれます。
例として、ゲームで新しいゲーム モードが呼び出されるときは常に、以下のようになります。
MyGameMode.cpp
void OnEnterMyGameMode()
{
FPlatformCrashContext::SetGameData(TEXT("GameMode"), TEXT("MyGameModeName"));
}
void OnExitMyGameMode()
{
FPlatformCrashContext::SetGameData(TEXT("GameMode"), FString());
}
ゲーム モード時のクラッシュには、以下の XMLdata が含まれています。
CrashContext.runtime-xml
<GameData>
<GameMode>MyGameModeName</GameMode>
</GameData>
クラッシュ レポーターのインフラストラクチャ
UE のクラッシュ レポートのインフラストラクチャは、以下のコンポーネントで構成されています。
-
エディタのビルドまたはゲームとともに配布される、ユーザーのマシン上の クラッシュ レポート クライアント。クラッシュ レポート クライアントは、クラッシュ ダンプ情報をエンドポイントに送信します。
-
クラッシュ レポートを管理、フィルター、格納するアプリケーションとコンポーネントを含む サーバー。
以下のセクションでは、これらのコンポーネントと組織用の設定方法について詳しく説明します。
クラッシュ レポーター クライアント
クラッシュ レポーター クライアントは別のプログラムで、両方のエディタ ビルドで使用され、オプションでユーザーのマシンでランタイム ビルドにパッケージ化されます。エディタまたはパッケージ化されたアプリケーションがクラッシュし、エンジンがクラッシュ レポートを生成すると、可能な場合、クラッシュ レポーター クライアントが起動されます。クラッシュ レポーターが無人モードでない場合、クラッシュ データを含むウィンドウが表示され、ユーザーにレポートを送信するかレポートの送信をオプトアウトするかを要求します。
クラッシュ レポーター クライアントをゲームにパッケージ化する
デフォルトでは、クラッシュ レポーター クライアントはパッケージ化されたゲームに含まれていません。これをパッケージ化されたビルドに追加するには、以下の手順に従います。
-
Unreal Editor で [Project Settings (プロジェクト設定)] を開いて [Project (プロジェクト)] > [Packaging (パッケージ化)] セクションに移動します。
-
[Advanced (詳細設定)] ドロップダウンを展開します。
-
[Include Crash Reporter (クラッシュ レポート機能を含む)] 設定を有効にします。
または、IncludeCrashReporter=True
をプロジェクトの「Config/DefaultGame.ini
」ファイルに追加します。
DefaultGame.ini
[/Script/UnrealEd.ProjectPackagingSettings]
IncludeCrashReporter=True
自動クラッシュ レポートを設定する
次のコンフィグ変数は、クラッシュ レポーターが自動的にクラッシュ レポートをサーバーに送信するかどうかを決定します。これらは、[CrashReportClient]
カテゴリの下にある「Engine.ini
」ファイルで設定できます。
コンフィグ変数 | 説明 |
---|---|
bAgreeToCrashUpload |
クラッシュ レポート クライアントがクラッシュ イベントを自動的に送信するかどうかを制御します。この変数は、Linux ビルドのみで使用されます。このデフォルト設定は、Windows と Mac ビルドでは false ですが、Linux ビルドでは true です。 |
bSendUnattendedBugReports |
無人のクラッシュ イベントを送信するかどうかを制御します。有効になっている場合、クラッシュ レポート クライアントはユーザーへの表示をスキップし、クラッシュ イベントをサーバーに自動的に送信します。この変数は、すべてのプラットフォームで機能し、デフォルトで true に設定されています。 |
DefaultEngine.ini
[CrashReportClient]
bAgreeToCrashUpload=false
bSendUnattendedBugReports=false
UE 5.3.2 以前では、バグのために bSendUnattendedCrashReports
クラッシュ レポーターにパッケージ化されていないランタイム ビルドで正しく機能しませんでした。false に設定すると、クラッシュ レポーターはレポートを Ensure で Epic Games に送信します。この問題は、UE 5.4 で修正されます。
クラッシュ レポーター クライアントを設定する
クラッシュ レポーター クライアントをカスタマイズして、クラッシュ イベントを選択したサーバーに送信できます。クラッシュ レポーターをカスタマイズするには、以下の手順に従います。
-
Unreal Engine のインストール ディレクトリを開きます。
-
Engine/Programs/CrashReportClient/Config に移動します。
-
「
DefaultEngine.ini
」ファイルを開きます。
このコンフィグ ファイルには、クラッシュ レポーターの設定に使用されるすべての変数が含まれています。
DefaultEngine.ini (Programs/CrashReportClient)
[CrashReportClient]
DataRouterUrl="https://datarouter.ol.epicgames.com/datarouter/api/v1/public/data"
bAllowToBeContacted=true
bSendLogFile=true
CanSendWhenUIFailedToInitialize=true
UIInitRetryCount=10
UIInitRetryInterval=2.0
クラッシュ レポートを送信する URL を変更する
クラッシュ レポートを自分の組織に送信するには、DataRouterURL
変数を自分のクラッシュ レポート サーバーの URL に変更します。このエンドポイントの設定方法の詳細については、以下の「クラッシュ レポート サーバー」のセクションを参照してください。
コンフィグ変数のリファレンス
クラッシュ レポーター クライアントのコンフィグ変数は、以下のとおりです。
コンフィグ変数 | デフォルト値 | 説明 |
---|---|---|
DataRouterUrl | https://datarouter.ol.epicgames.com/datarouter/api/v1/public/data | クラッシュ レポート サーバーを指す URL。 |
bAllowToBeContacted | true | ダイアログ内の [Allow to be contacted (アクセスを許可する)] オプションのデフォルトの状態。 |
bSendLogFile | true | クラッシュ レポート クライアントがクラッシュに関連付けられたログ ファイル送信するかどうかを制御します。 |
CanSendWhenUIFailedToInitialize | true | クラッシュ レポート クライアントが UI の初期化に失敗した場合、自動的にクラッシュ レポートを送信するかどうかを制御します。 |
UIInitRetryCount | 10 | 自動的にクラッシュ レポートを送信する前に、クラッシュ レポート クライアントのウィンドウを開くことを再試行する回数。 |
UIInitRetryInterval | 2 | 再試行間の秒数。 |
エディタ ビルドには、常にクラッシュ レポート クライアントが含まれていますが、これをパッケージ化されたビルドに含めることはオプションです。
クラッシュ レポート サーバー
ほとんどのクラッシュ レポーターを実行するには、リモート ユーザーのクラッシュ レポートを受信し、これらをシンボル化できるサーバーを設定する必要があります。UE には、ソース コードまたはバイナリを含むコンポーネントが含まれていません。ただし、クラッシュ レポート クライアントのソース コードを使用することは、自分のカスタム ソリューションを作成するための開始点になります。デプロイ可能なサードパーティのクラッシュ レポート サービスもいくつかあります。
以下のクラッシュ レポート サービスが UE のコミュニティ内でよく使用されます。それぞれに UE のクラッシュ レポーターに統合するためのドキュメントがあります。