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を指定すればその通りに動作します。

勿論ゲーム以外でも30・60の制限はしっかり機能していて、その値を「MSI Afterburner」側で取得できています。

表示しているFPSの整合性を確認する

この記事を初期の頃に書いたときはあまり考えていませんでしたが…「scrcpy」の内部カウンターから「MSI Afterburner」が読み取ったfpsの値が合っているかどうか確認しました。

大体合っていると思うのですが…仮に盛大に間違えていた場合、何の役にも立たない&意味のないことをしていることに成りかねないので、他のツールとも比較確認は必要だと判断しました。

確認のためにPixel 3をroot化し、比較的fps表示の正しいツール「GLTools」を導入、またRealme x2 Proが搭載しているColorOS(Realme UI)のゲームスペースから確認できる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が重要視されなかったスマホゲーム市場を塗り替えた重量級タイトルの原神のfpsも確認。

より動作に則したfpsの比較として、利用にroot化が必須の「GLTools」をPixel 3に導入しました。

fps更新の間隔は「GLTools」と「scrcpy」+「MSI Afterburner」どちらも500msです。

Pixel 3のレビュー時に検証した動画を持ってきました。

やはり多少の誤差は生じています。

ただ、傾向としては上2つと同じでfpsに乖離があって使い物にならないレベルではなく、root化が必要な「GLTools」と比較してもほぼ合ってるレベルの精度です。

Pixel 3だと60fpsは無理ですが、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ツールとか、それらを取り上げるクソみたいな情報に騙される人が増えなければ良いなぁ…とも思います。(既に騙された人は知りません)

あとがき

「GLTools」がrootだけじゃなくて、adbでも許可できたら楽なんですけどね。

Android 12で一応、ゲームダッシュボードからfpsの表示が可能になったり、中華系のUIだったらfps表示できるので…いい加減、一般ユーザーでも利用しやすいfps表示ツールが出れば、それに越したことはないんですが…。

ただ、そこまでスマホゲームにガチになるかと言われると「微妙…」とも言えるので、PCパーツのレビューみたいにfpsベースになるのは、日本では暫く先のことかもしれません。

まぁ…この記事の内容は、無名ブログが戯言を言っている程度に留めて下さい。

【追記】プロ向けの「WeTest PerfDog」に何処まで迫れるかテストしました。