AndroidのFPS表示に「Display FPS – Real-time FPS Meter」を使ってはいけない

Android

自分で書いたスマホ向けのFPSを表示する方法の記事内容を改善するために下調べをしていたら、見過ごせないものがあったので注意喚起も含めて記事にします。

ゴミみたいな情報が検索1位

昔のスマホゲームは、パズドラとかモンストみたいなfps(フレームレート)が重要視されるゲームはほぼなく、スマホでfpsを計測する系のツールや情報が必要とされていませんでした。

しかし最近では原神やバトロワ系の重量級タイトルの登場と、SoCの高性能化に伴いベンチマークテストだけでなく、PCと同じように実際のゲーム動作時のfpsが求められつつあります。

大半の人にとってはどうでもいいことですが、その手の情報を求める人にとっては重要であり、そのfpsの情報元である表示ツールにも正しい値であるかどうかが求められます。

現時点では、マトモな値を表示できるツールは限られており、それらの情報を取り扱っているブログなども少数です。

…なのですが、久しぶりに「Android fps 表示」で検索をかけてトップに表示される記事を覗いたら流石に酷すぎたので、Android系の情報を発信する1人として見過ごせませんでした。

「Display FPS – Real-time FPS Meter」を検証する

玩具として使っているroot化済みのPixel 3にて「Display FPS – Real-time FPS Meter」のfpsを検証しました。

比較としてAndroid 12のダッシュボード機能のfpsと、ミラーリングツールscrcpyでのfpsも表示。

ゲームプレイには動作の軽いウマ娘を用意。

ウマ娘はrootに対して、どうせ突破されるのに無駄な対策が施されていてadb&Magisk環境だと弾かれるので、Magiskを隠してUSBデバックも一度取り消し。

動作できるようになったので、Android 12のゲームダッシュボードからFPS表示を有効化。

「Display FPS – Real-time FPS Meter」の値は61fpsですが、ウマ娘は確かスマホ版だと30fpsまでしか動作しなかったハズ…。既に雲行きが怪しいです。

ダッシュボードとscrcpyのカウンターは30fpsを表示しています。

レース中でも内容は同じ。

30fpsまでのハズですが「Display FPS – Real-time FPS Meter」の値は常に61fpsに張り付いています。

ウマ娘はまともにプレイしたことが無いので、原神かアズレンでも入れて追加検証しようとも思いましたが、この時点で何となく察しがついたのでやめときます。(どうせ結果は同じです)

何故60fpsに張り付いたままなのか

答えは簡単で「Display FPS – Real-time FPS Meter」は、ディスプレイfps(≒リフレッシュレート)を表示するアプリだからだと思います。

実際、開発者向けオプションにあるリフレッシュレートと同じ値を表示してるっぽいです。

わざわざアプリなんか入れなくても表示できるんで…実に無駄だとは思いますが。

アプリ提供側の説明を引用すると…

アプリで説明されているように、このアプリはGPUまたはゲームFPSを提供しませんが、AndroidChoreographerによって提供されるFPSを表示します。これは、Android11以降のDevOptionで利用できるものと非常によく似ています。このアプリはAndroid11より前に開発されました。否定的なレビューを残した多くの人はこれを正しく読んで理解していませんでした。

画面上の任意の場所に、カスタマイズ可能なリアルタイム表示Hzをフレーム/秒(FPS)で表示します。オーバーレイとして表示するか、ステータスバーに表示するかを選択できます。

アプリに含まれているクイック設定タイルを使用して、どこでもオンにすることができます。

https://play.google.com/store/apps/details?id=com.tribalfs.realtimefps

と、一応…それらしい説明がされていて、噛み砕いて言えば

Android 11以降の開発者向けオプションにある機能によく似ているが、このアプリはそれより前から開発していて、否定的な意見をした人は仕様を理解していないからだよ。

ってことです。

なので「Display FPS – Real-time FPS Meter」自体がゴミみたいなアプリなのではなく、使い方を間違えているユーザー側に問題があります。(とはいえ、今となっては何の役に立つのか疑問ですが)

お金で雇われて記事書いたのか、それとも本当に何も調べてないのかは存じ上げませんが、よく調べもせずに「AndroidでFPSを表示する方法をご紹介!」と…このアプリを取り上げられましたね…ホント。(滅べ)

何が問題なのか

ぶっちゃけ、余計なことに首を突っ込むだけ私にはリスクでしかないので、取り上げた記事に他のAndroidユーザーが騙されようが知ったことではないです。

むしろ、私は性格が悪いので「そのまま鵜呑みにしてこれを使う人がいるなら滑稽」とすら思う人間性なので、こんな記事を書いて無駄なリスクを取るべきではないです。

ただ…流石に検索1位に君臨している記事がこの始末で、実際にこのアプリをfps表示で勧めちゃってる知恵袋の民がいることと、他の正しい情報が埋もれていること。

最悪、このまま騙されて「Display FPS – Real-time FPS Meter」を計測に使い出すユーザーが出てくると、大多数が迷惑するので見過ごせませんでした。

例外的にマトモなFPSの表示方法

仮にこの記事にたどり着いた人がAndroidでマトモにfpsを表示・計測したいのであれば、以下の方法くらいしかありません。

デバイスをroot化(Magisk導入)し「GLTools」を使う

「scrcpy」+「MSI Afterburner」

独自UIのゲーム系機能からfpsのみオーバーレイ表示

プロ向けツールの「WeTest PerfDog」を使う

Shizukuと合わせてroot不要で使える「TakoStats-FPS&Perf overlay」を利用する

これら以外でマトモなfps表示ツールを私は知りません。

今のところ私が試した限りで実用的な方法は、TakoStats-FPS&Perf overlayかWeTest PerfDogくらいです。