scrcpyとMSI Afterburnerを利用し、Androidでゲーム中のFPSを表示・計測する

Android

当ブログで多用している、scrcpyとMSI Afterburnerを利用してAndroid端末で、ゲーム中のFPSを表示・計測する方法を紹介します。

root化や登録が必要なツールと違い、多少AndroidとWindowsの知識があれば比較的簡単に計測できます。

使うもの

  1. Windows 10以降のPC(fps表示ソフトが動けば、Linux・Macも可)
  2. Android 5.0以降の端末
  3. データ転送対応のUSBケーブル、もしくはadb環境でワイヤレス接続の構築
  4. Android画面ミラーリングツール「scrcpy」(scrsndcpyを推奨)
  5. フレームレート(fps)取得ツール「MSI Afterburner」

「scrcpy(scrsndcpy)」は別で記事にしているので、そちらを参照して下さい。

ぶっちゃけ「scrcpy(scrsndcpy)」は同じソフトなので気にする必要はないですが、新規で入れるなら「scrsndcpy」の方がワンパッケージかつ使いやすいので、「scrsndcpy」をオススメしておきます。

「MSI Afterburner」以外を試していませんが、似たようなfps取得ツールでもできると思います。(多分)

ダウンロードリンク

各設定

「MSI Afterburner」

「MSI Afterburner」のトップから設定を開き、項目内のモニタリングまで進みます。

モニタリング内の「フレームレート」「Frametime」「Framerate Min」「Framerate Avg」を有効化。

それぞれの「オンスクリーンディスプレイでの表示」と「Framerate Min(Avg)」は「オーバーライドグループネーム」にもチェックを入れ、グループネームには分かりやすい名前を付けておきます。

名前が付け終わったら、モニタリングからBenchmarkへ移動。ベンチマークの開始と終了時のコマンドを、任意のキーに設定。

次に「MSI Afterburner」のインストール時にバンドルされている、「Rival tuner statistic server」から「Setup」を開きます。

計測するフレームレートの間隔をデフォルトの1000msから任意の値に変更。(間隔の速い500~750msがオススメです)

「scrsndcpy」

「scrcpy」単体だとコマンドから変更しないといけないのですが、「scrsndcpy」であれば「scrcpy」を起動する際に最大FPSやビットレートを指定できます。

フレームレートを計測するアプリ次第ですが、60fpsが上限でもカウンター的には61とか62fpsに振れる場合があるので、「scrsndcpy」のConfigから「scrcpy」の最大FPSを指定しておきます。

動作確認

「scrcpy」のFPSカウンターはstdout上にてMOD+iで有効/無効化できますが、単体での動作ではコマンドで弄る系の人以外まず使えません。

たまたま「MSI Afterburner」起動中に「scrcpy」を動かしたら、見た限りDirectX9動作かつ内部のfpsを「MSI Afterburner」で取得できてしまった訳です。

「scrcpy」がデバイスに応じて30〜120fpsの動作に対応しているので、アプリ内などでfpsを指定すればその通りに動作します。

東方ダンマクカグラ

ダンマクカグラ(楽曲プレイ)中は60fps、それ以外は30fpsで動作する東方ダンマクカグラでは、Realme UIのゲームスペースと「scrcpy」で表示している値はほぼ同じでした。

カウントするタイミングが違うので誤差は生じますが、値が乖離している訳ではなさそうです。

3DMark

PC・モバイル問わず国際的なベンチマークで、fps表示のある3DMark中のfpsも確認。

3DMarkのカウントが速く39fpsなのに対し、ゲームスペースは37fps、500msに指定した「scrcpy」の表示は39fps。

フレームレートが下がる場面では3DMarkのカウントが21fps、ゲームスペースが25fps、「scrcpy」の表示は22fpsでした。

中華スキン(独自UI)のfpsカウンターは大体が1000msくらいなので、任意の値の変更できる「scrcpy」+「MSI Afterburner」が3DMarkに近い値を表示できていました。

原神

今までfpsが重要視されなかったスマホゲーム市場を塗り替えた重量級タイトルの原神のfpsも確認。Snapdragon 865(Axon 10 Pro 5G)では、こんな感じで動作&計測できてました。

簡易的な計測には一番適している

他に同じことをしている人がいないので、書いている私も半信半疑な部分はありますが…簡易的な計測には「scrcpy」+「MSI Afterburner」で表示・計測するのが一番適していると、勝手に思ってます。

root化が必要な「GLTools」と比較してもほぼ合ってるレベルの精度で、もっと正確なfpsを計測するならプロ向けのツールである「WeTest PerfDog」か「GameBench」じゃないと無理な気がします。

Android…というかスマホ・タブレットのベンチマークやレビューにおいて、ゲーム中のfpsを表示せずに体感ベースで「ぬるぬる!」とか「快適です」と言っている情報が未だに多く、PCのCPUやGPUレビューのようにfps計測での客観的数値に基づいた評価が進まないのは、敷居の高さと情報の不足が原因だと感じています。

私のような底辺が言うのは、多方面から色々言われそうですが…はっきり言えば昨今のスマホレビューは形骸化しています。ゲームプレイ中のfpsベースでレビューしている人は少数で、ガジェット系の大手は誰一人としてやってませんし、彼らはゲームに大して興味がありません。

逆にfpsを表示している情報を覗くと、参考にはなるもののプロ向けの「WeTest PerfDog」か「GameBench」ばかりであり、プロ向けのツール以外ではroot化が必須の「GLTools」以外、マトモなfps表示ツールがありません。

fpsを表示して計測したいと思っても、それに必要なツールの導入は客観的に視れば敷居が高いです。これらの要因に加え、原神リリース以前はfpsがあまり重視されなかったスマホ界隈故に、極端に情報が少ないです。

結果、最早形骸化していて参考になる情報を探そうとしたら海外のレビュアーを見るしかない状態です。

なので…100%正確なfpsの計測には適してはいませんが、「scrcpy」+「MSI Afterburner」での表示・計測は十中八九合っている(と思いたい)ので、簡易的に計測するには導入の敷居がかなり低いのでこの方法でも良いから、ある程度fpsベースの情報が増えれば良いなぁ…と思ってます。

あと、PlayStoreとかにある役に立たないfpsツールとか、それらを取り上げるクソみたいな情報に騙される人が増えなければ良いなぁ…とも思います。(既に騙された人は知りません)

あとがき

AOSP以外のROMやUIだと相性が微妙なので、今はこの方法をメインでは使ってません。ただしお金も掛からない即席簡易方としてはぶっちぎりで構築しやすいです。