パフォーマンスの分析情報は、ゲーム デベロッパーのほか、アプリでネイティブ コードを使用しているデベロッパー向けに特に設計された、Android Vitals の新機能です。この情報は、ゲーム デベロッパー用に Android Vitals を強化する新しいプラグインである、Android Performance Tuner によって提供されます。
この記事では、Android Performance Tuner の基本コンセプトと、それらの基礎となる計算について説明します。
- 忠実度パラメータと品質レベル
- アノテーション
- 目標フレームレートと目標フレーム時間
- 遅いフレームのしきい値と速いフレームのしきい値
- 測定されたフレーム時間
- 遅いフレームと速いフレームの指標
- 問題と改善案
基本コンセプト
忠実度パラメータと品質レベル
アプリの忠実度パラメータは、メッシュの詳細レベル、テクスチャの解像度、アンチエイリアス方法など、ゲームのパフォーマンスやグラフィックの忠実度に影響を与えます。このパラメータには、連続した値(0~100% など)、バイナリ(はい / いいえ)、またはその他の値のセットを指定できます。
品質レベルは、複数の忠実度パラメータの値を事前定義したセットで表します。品質レベルを使用すると、一部のユーザーに安定したフレームレートで許容可能なレベルの忠実度を提供するパラメータの組み合わせを定義できます。パラメータの組み合わせによっては、ユーザー エクスペリエンスとして意味がなくなることがあります。
忠実度パラメータと品質レベルの設定方法アプリの忠実度パラメータとその品質レベルは、Android Performance Tuner の統合時に定義できます。統合の一環として、最大 15 個の品質レベルを定義できます。忠実度パラメータの数に制限はありません。レベルは忠実度の昇順に並べられます。1 が忠実度の最低レベルです。
品質レベルと忠実度パラメータは Google Play Console でも表示できます([品質] > [Android Vitals] > [概要] > [品質レベルを検査します] を選択)。ただし、読み取り専用です。パラメータを変更するには、アップデートをリリースする必要があります。詳細については、統合ガイドの関連する説明をご覧ください。
品質レベルはセッションのタグ付けに使用されるため、実行中のデバイスモデルの品質レベルが高すぎる、または低すぎる場合を判断できます。
忠実度パラメータは、各ユーザー デバイスと品質レベルとのマッピングを特定するために使用されます。
重要: 忠実度パラメータ(および品質レベル)がユーザー デバイスでのアプリの設定を正確に反映していない場合、定義済みの品質レベルにセッションをマッピングできません。このようなセッションは、品質レベルが「不明」として表示されます。「不明」な品質レベルに関する問題は、さまざまなレベルの忠実度が含まれている可能性があるため、トラブルシューティングが困難です。この問題が発生している場合は、統合を確認することをおすすめします。
ユーザーが判断する品質レベルなど、品質レベルの詳細については、Android Performance Tuner に関する問題のトラブルシューティングとよくある質問をご覧ください。
アノテーション
アノテーションは、ゲームやアプリのシーンに表示される「タグ」です。特定のフレームでのゲームの動作に関するコンテキスト情報を提供します。アノテーションは次のように構成されます。
- アノテーション タイプ: アノテーション値
- 例: "キャラクター": "主人公"
注: 1 つのフレームに複数のアノテーションを含めることができます。
アノテーションの設定方法アノテーションは統合時に定義します。アノテーションを変更するには、アップデートをリリースする必要があります。詳細については、統合ガイドの関連する説明をご覧ください。
アノテーションの使用方法
アノテーションを使用すると、ゲーム内の特定のシーンが問題の原因か、または改善案の対象となるかを把握できます。問題に対して適切なレベルの詳細情報を得るには、十分に詳細なアノテーションを定義する必要があります。
目標フレームレートと目標フレーム時間
目標フレームレートは、すべてのデバイスモデルでのフレーム時間のパフォーマンスに対するベンチマークに使用されます。そのためには、目標フレームレートを目標フレーム時間に変換し、許容差を適用して遅いフレームのしきい値を定義します。
フレームレートとは、単位が「フレーム/秒」(fps)の指標です。フレーム時間は「ミリ秒」で測定されます。この 2 つは簡単な数式で表せます。
- フレーム時間(ミリ秒)= 1,000 / フレームレート(fps)
現在、目標フレームレートとして以下のいずれかを選択できます。
目標フレームレート(fps) |
目標フレーム時間(ミリ秒) |
30 |
33.333 |
60 |
16.667 |
120 |
8.333 |
目標フレームレートにどれを選択すればよいかわからない場合は、30 fps から始めてください。これは多くのゲームに適した基本フレームレートです。目標フレームレートはいつでも変更できます。ただし、これによって基礎データが変わるわけではありません。分析情報と指標の値のみが変わります。
遅いフレームのしきい値と速いフレームのしきい値
分析情報とフレーム指標を規定するしきい値は、目標フレームレートから得られます。
- 遅いフレームのしきい値 = 目標フレーム時間 + 許容差
- 速いフレームのしきい値 = 目標フレーム時間より 25% 高速(ヘッドルームを確保)
各目標フレームレートに対するしきい値は、以下のようになります。
目標フレームレート(fps) |
目標フレーム時間(ミリ秒) |
遅いフレームのしきい値 (ミリ秒)(SFT) |
速いフレームのしきい値(ミリ秒)(FFT) |
30 |
33.333 |
35.37 |
25.0 |
60 |
16.667 |
18.54 |
12.5 |
120 |
8.333 |
10.12 |
6.25 |
一貫性と実用性がある分析情報にするために、フレーム時間には許容差が適用されます。これは、測定の精度を調整し、ユーザーに認識できないような逸脱ではなく、ユーザーに認識され得る問題だけが明らかになるようにするためです。
25% のヘッドルームは、改善案を規定するために使用しますが、保証ではなく、改善の可能性へのガイドとして扱う必要があります。デバイスの品質レベルを上げる前に、必ずよく検討してテストすることをおすすめします。デバイスにヘッドルームがある場合でも、一貫したフレームレートで品質レベルを 1 つ上げるには十分ではない可能性があります。
Android Performance Tuner での計算
Performance Tuner の基礎となる計算を理解しておくと、分析情報を最大限に活用できるようになります。
測定されたフレーム時間
アプリの多数のフレームにわたってフレーム時間が集計される場合、90 パーセンタイルのフレーム時間が報告されます。これは、そのフレームの速いほうの 90% のうち最大のフレーム時間として定義されます。
現在、90% というしきい値は固定であり、変更できません。
平均値に対するパーセンタイルのメリット
優れたユーザー エクスペリエンスを提供するには、セッション全体で常に安定したフレームレートが必要です。平均値では、速いフレームと遅いフレームが相殺されることがあるため、一貫した分析情報が得られません。90 パーセンタイルを使用すると、大多数のフレームの動作を反映した指標が得られます。
フレーム時間のバケットフレーム時間は、ユーザーのデバイスから送信されるデータ量を最小限に抑えるために、連続変数としてではなく、ヒストグラム バケットで収集されて報告されます。報告されるフレーム時間は、フレーム時間が振り分けられた各バケットの上限です。
その結果、連続変数ではなく、特定の離散値でフレーム時間が報告されます。
デフォルトのバケットは、30 fps、60 fps、120 fps の目標に関してトラブルシューティングが適切に行える粒度を提供できるように設定されています。また、遅いフレームが誇張されないよう狭めて設定されています。
遅いフレームと速いフレームの指標
個々のフレームは、フレームしきい値と比較して、遅いフレームまたは速いフレームとしてカウントされます。
- 遅いフレームのしきい値(SFT)よりフレーム時間が大きい場合は、遅いフレームです
- 速いフレームのしきい値(FFT)よりフレーム時間が小さい場合は、速いフレームです
フレーム指標は通常、特定の問題や改善案のコンテキストでのみ計算されます。例:
- デバイスモデル X での品質レベル 4 の遅いフレームの数と割合(%)
- アノテーション Y でのすべての品質レベルの速いフレームの数と割合(%)
- デバイス仕様 Z での遅いフレームと速いフレームの割合(%)
注: 例外として、概要サマリーに表示される遅いフレームの指標は、すべてのフレームで測定されます。
非対称遅いフレームと速いフレームは正反対の関係ではありません。しきい値と条件が異なります。つまりパフォーマンスの劣るデバイスモデルやアノテーションでも速いフレームがある可能性があり、逆にパフォーマンスの優れたデバイスモデルやアノテーションでも遅いフレームがある可能性があります。
条件 |
遅いフレーム(%) |
速いフレーム(%) |
|
問題 |
90% のフレーム時間が SFT より大きい |
定義上 10% より大きい |
0~90% のいずれか |
改善案 |
90% のフレーム時間が FFT より小さい |
0~10% のいずれか |
定義上 90% より大きい |
注: 問題や改善案のためにさらに詳しいコンテキストが得られるように、遅いフレームと速いフレームの両方の指標が提供されることがあります。
問題と改善案
問題と改善案に基づいて、フレーム時間のパフォーマンスに対処できるようになります。上記で定義したデバイスモデルやアノテーションがフレーム時間の目標をときどき達成していない場合、問題が発生しています。改善案とは、フレーム時間の目標を常に超えるデバイスモデルまたはアノテーションのことです。それには、忠実度を上げるためのヘッドルームを許容するのに十分な余裕が必要です。
問題と改善案は、90 パーセンタイルのフレーム時間を、遅いフレームのしきい値(SFT)、速いフレームのしきい値(FFT)と比較することによって特定されます。これらのしきい値は、目標フレーム時間から得られます。
分析情報の種類 |
定義 |
計算結果 |
問題
|
「フレームの 10% 以上がフレーム時間の目標を達成していない」 |
90 パーセンタイルのフレーム時間が SFT より大きい |
改善案:
|
「フレームの 90% 以上がフレーム時間の目標を大幅に上回る」 |
90 パーセンタイルのフレーム時間が FFT より小さい |
問題と改善案は、次のコンテキストでのみ規定されます。
- デバイスモデルと品質レベルの組み合わせ
- アノテーションと品質レベルの組み合わせ
これにより、問題と改善案について検討できます。例:
- デバイスモデル X での品質レベル 4 に関する問題 => デバイスモデル X について調べる
- アノテーション Y のすべての品質レベルに関する改善案 => アノテーション Y について調べる
問題と改善案は正反対の関係ではありません。問題のほうが改善案よりも表示される条件が低いので、問題のないデバイスモデルまたはアノテーションと、改善案のあるデバイスモデルまたはアノテーションの間には大きなギャップがあります。
同じアノテーションが、あるレベルでは問題になり、別のレベルでは改善案になることがあります。これはデバイスモデルにも当てはまりますが、同じデバイスモデルが複数の品質レベルに出現するシナリオはエッジケースです。
問題と改善案は、目標フレームレートに関連付けられています。目標が変更されると、問題と改善案も変わります。ただし、フレーム時間の基礎データは変わりません。