再現可能な小さなベンチマークを作成する
シーンを選択し、そのシーンを通る操作手順をスクリプトにします。たとえば、レベルを再開し、固定された障害物シーケンスを通過してから、混雑したエフェクト エリアをトリガーします。ブラウザ、ウィンドウ サイズ、アセットの状態、シーンのコンテンツの一貫性を保ちます。ブラウザ開発者ツールを使用して長いタスクとレンダリング アクティビティを検査しながら、アニメーションコールバック間の時間と更新関数とレンダリング関数に費やした時間を記録します。
単一の最良のフレームではなく、分布または繰り返しサンプルを比較します。問題が初期ロード中、安定したプレイ中、または移行中に発生するかどうかに注意してください。再生中に簡単な診断オーバーレイで最近のフレーム間隔を表示できますが、測定コード自体が作業を追加するため、比較中に大量のログを削除または無効にします。
判定ではなく証拠としてブラウザのタイミングを使用する
Performance.now() はローカル測定の高解像度タイムスタンプを提供し、PerformanceObserver はサポートされているパフォーマンス エントリをレポートできます。オプションのエントリ タイプに依存する前に、supportedEntryTypes を確認してください。たとえば、長いタスクのレポートはすべてのブラウザで利用できるわけではありません。検出された長いタスクはメインスレッドのブロックを示していますが、コードのどの行や製品の動作が原因であるかについては説明されていません。
変更後、可能であれば複数の代表的なデバイスで同じシナリオを繰り返し、制御の応答と視覚的な安定性を手動で検証します。シーン、ブラウザ、サンプル数、変化した症状などの簡潔な結果を記録します。 1 台のマシンから普遍的なフレームレートの主張を公開することは避けてください。パフォーマンスは、ハードウェア、ブラウザ、ディスプレイ、および競合する作業によって異なります。
ブラウザゲームのパフォーマンスを測定するについての質問
平均 FPS はゲームを評価するのに十分ですか?
いいえ、平均値では、プレイヤーが気づく一時的な停止が隠れることがあります。フレーム時間の変動を検査し、それを特定のインタラクションまたは入力遅延の症状と組み合わせます。
PerformanceObserver はあらゆる速度低下を特定できますか?
いいえ。サポートされているパフォーマンス エントリを報告するものであり、レンダリング コストの完全な説明ではありません。ブラウザー プロファイラーおよび再現可能なゲーム シナリオと併用してください。
関連情報
古い情報を見つけましたか? 訂正を連絡