メインコンテンツまでスキップ

fps-drop-detection

Last updated on May 25, 2026

注釈:本資料はAI技術を用いて翻訳されています。

概要

FPS Drop Detection は、ゲームプレイセッション中の持続的なフレームレート低下を自動的に識別、キャプチャ、レポートする機能です。クラッシュレポートと並んで ADT の Health の柱を拡張し、専用ツールがなければ報告されないものの、プレイヤー体験を密かに損なう致命的でないパフォーマンス低下に対する可視性を開発者に提供します。

この機能は、Development ビルドで作業するゲーム開発者と QA エンジニア向けに設計されています。確定された FPS ドロップごとに豊富なコンテキスト(10 秒間の動画クリップ、スレッドプロファイリングデータ、プレイヤーの位置、レベル名を含む)をキャプチャし、これらのデータを ADT Web ダッシュボードと ADT Hub に表示します。

FPS Drop Detection が存在する理由

クラッシュは目に見えます。プロセスを終了させ、スタックトレースを生成し、アナリティクスに現れます。一方、フレームレートの低下は目に見えません。プレイヤーが混雑したマーケットプレイスエリアで 2 秒間のヒッチを体験しても、セッションは続行され、誰もそれが起きたことに気づきません。

FPS Drop Detection が登場する前、開発者はこれらの問題を見つけるために以下の 2 つのアプローチに頼っていました。

  • 手動プロファイリング — 開発者はプロファイラーをアタッチした状態でゲームを実行し、ドロップを引き起こす正確な条件を再現できることを期待します。この方法は時間がかかるうえに、開発者自身が問題を直接体験することに依存します。
  • ユーザーからの苦情 — QA テスターやプレイテスト参加者が「森林エリアでゲームがカクついていた」と報告します。データがなければ、チームは再現、優先順位付け、修正の検証ができません。

FPS Drop Detection は、すべての Development ビルドセッションで継続的かつ低オーバーヘッドの監視を実行することで、これらの問題を解決します。持続的なフレームレートの低下が発生すると、システムは自動的に証拠をキャプチャし、セッション終了時にアップロードします。これにより、開発者はワークフローを変更することなく、実行可能なデータを得ることができます。

FPS Drop Detection の仕組み

FPS Drop Detection は、検出、キャプチャ、アップロード、可視化の 4 段階のパイプラインで動作します。

1. 検出

ADT SDK はゲームプレイ中に毎フレームのフレームタイムを監視します。フレームレートが設定可能なしきい値(デフォルト: 30 FPS)を下回り、設定可能な期間(デフォルト: 500ms)よりも長くその状態が続いた場合、FPS ドロップイベントが確定されます。

単一フレームのスパイクでは検出はトリガーされません。システムはデバウンスメカニズムを使用して、持続的なパフォーマンス低下のみが報告されるようにしています。FPS ドロップが確定されると、60 秒のクールダウンによって、長引く低パフォーマンス期間中に繰り返しイベントが発生するのを防ぎます。

2. キャプチャ

確定時に、システムはその瞬間のスナップショットをキャプチャします。

  • 動画クリップ — リングバッファからの 10 秒間の録画で、ドロップ前、ドロップ中、ドロップ後に画面に表示されていた内容を正確に示します。
  • スレッドプロファイリング — GameThread、RenderThread、GPU のミリ秒単位のタイミングデータで、どのスレッドがボトルネックになっているかを特定します。
  • プレイヤーコンテキスト — 現在のレベル名/マップ名と、ワールド内のプレイヤーの座標です。
  • ハードウェアメタデータ — CPU モデル、GPU モデル、RAM 情報で、ハードウェア階層分析を可能にします。

キャプチャシーケンスは高速かつ非侵入的になるように設計されているため、さらなるフレームドロップを引き起こすことはありません。

3. アップロード

キャプチャされた FPS ドロップデータは、セッション中にローカルにキューに入れられます。アップロードはセッション終了後にのみ行われ、アクティブなゲームプレイ中には行われません。この設計により、レポートシステム自体がネットワーク干渉やフレームドロップを引き起こさないようになっています。

アップロードが失敗した場合、ペイロードはディスク上に保持され、次回のセッション開始時にリトライされます。一時的なネットワークの問題によってデータが失われることはありません。

4. 可視化

FPS ドロップデータは ADT ダッシュボードの複数のビューに表示されます。

  • Sessions List — 各セッションには FPS ドロップ数とステータスインジケーター(Clean、Has FPS Drops、または Crashed)が表示されるため、開発者は問題のあるセッションをすぐに特定できます。
  • FPS Drops List — セッションをまたいだ個別の FPS ドロップイベントすべてを、フィルター可能かつソート可能なテーブルで、レベル、継続時間、最小 FPS、ボトルネックタイプ、ビルドバージョンのカラムとともに表示します。
  • FPS Drops Aggregated — FPS ドロップがレベル/マップごとにグループ化され、複数のユーザーとセッションをまたいで、ゲームのどのエリアに体系的なパフォーマンス問題があるかを明らかにします。
  • Session Flight Recorder — 単一セッションのタイムラインビューで、比例したタイムスタンプに FPS ドロップマーカーが表示されます。マーカーをクリックすると、動画クリップ、統計の内訳、プレイヤーコンテキストを含むインスペクタが開きます。

将来: AI 駆動の診断 (Phase 2)

将来のフェーズでは、開発者はフルプロファイリングをオプトインでき、セッションの完全なエンジントレースファイルをキャプチャできるようになります。AI 診断エンジンがトレースを分析して、各 FPS ドロップの原因となる特定の関数を特定し、ソースファイルパスと行番号にまで解決します。これにより、パフォーマンスの観測が実行可能なコードリファレンスへと変わります。

主な利点

  • 自動検出 — FPS ドロップは、手動のトリガー、注釈、プロファイラーセットアップを必要とせずにキャプチャされます。すべての Development ビルドセッションが監視対象になります。
  • イベントごとの豊富なコンテキスト — 各 FPS ドロップには動画クリップ、スレッドプロファイリング、プレイヤーの位置、ハードウェア情報が含まれます。これにより、開発者は再現することなく診断ができます。
  • ゲームプレイへの影響ゼロ — 監視のオーバーヘッドは 1 フレームあたり 0.1ms 未満です。アップロードはセッション終了後にのみ行われます。システムが検出する問題に、システム自身が寄与することはありません。
  • レベルベースの集計 — FPS ドロップをマップごとにグループ化することで、体系的なホットスポットが明らかになります。開発者は逸話的な報告ではなく、エリアごとの影響度に基づいて最適化の優先順位を付けることができます。
  • 統一されたヘルスビュー — FPS ドロップデータはクラッシュデータと同じダッシュボード、タイムライン、セッションビューに存在するため、ツール間でコンテキストを切り替える必要がありません。
  • 永続的なローカルキュー — ネットワークの問題によってデータが失われることはありません。失敗したアップロードは次回のセッションで自動的にリトライされます。

制限事項と考慮事項

  • Development ビルドのみ — FPS Drop Detection は Development ビルドでのみ動作します。Shipping ビルドからは自動的に取り除かれます。この機能は本番監視を目的としていません。
  • Unreal Engine 5.0 以降のみ (Phase 1) — 初回リリースは Unreal Engine をサポートします。Unity およびその他のエンジンはサポートされていません。
  • Windows のみ (Phase 1) — コンソールプラットフォームのサポート (PlayStation 5、Xbox、Nintendo Switch) は将来のフェーズで計画されていますが、確定したスケジュールはありません。
  • セッション終了時のアップロードのみ — ゲームプレイ中のリアルタイムアップロードはサポートされていません。開発者はデータがダッシュボードに表示されるまで、セッション終了を待つ必要があります。
  • プロジェクトレベルのしきい値のみ — FPS および期間のしきい値はプロジェクト/ゲームレベルで設定されます。ビルドごとの上書きはサポートされていません。
  • ベータ機能 — FPS Drop Detection は名前空間設定のベータ機能トグルによってゲート制御されています。機能が利用可能になる前に管理者による有効化が必要です。
  • 30 日間の保持 — FPS ドロップデータは既存のビルド保持ポリシーに従います。30 日より古いデータは自動的に削除されます。

サポートされるプラットフォーム

エンジンプラットフォームステータス
Unreal Engine 5.0 以降Windowsサポート対象 (Phase 1)
Unreal Engine 5.0 以降PlayStation 5計画中 (将来のフェーズ)
Unreal Engine 5.0 以降Xbox (GDK)計画中 (将来のフェーズ)
Unreal Engine 5.0 以降Nintendo Switch計画中 (将来のフェーズ)
Unityすべてサポート対象外