今回はAndroid機を使ってエミュで遊ぶ時の入力遅延の謎について。
検証をしてみたのだが、結果は謎のままという・・・
事の発端:
Retroid Pocket 3でPS1のグラディウスDeluxeのグラディウスIIで遊んでいた時の事。僕の過去の経験では、何故かはわからないがグラディウスは遅延を感じやすい。
にもかかわらず、Retroid Pocket 3で比較的快適に遊べてしまっていた。
Retroid Pocket 3はそこそこ遅延がありそうな印象だったので、「???」となってしまったのだ。
なんでだ?と思い、いつもとは使っているエミュが違う事に気が付いた。
今まではPS1のゲームを遊ぶ時は、RetroArchかePSXeを使っていたのだが、今回はDuckStationを使っている。
使うエミュによって遅延具合が変わるって言うのはあり得る話だ。
という事で改めて入力遅延具合を比較検証してみることに。
検証内容:
検証はいつも通りGBAの星のカービィのミニゲーム「刹那の見斬り」を使う。
検証する機体は
- GalaxyNote10+ (Android 12)+Razer Kishi v2
- Galaxy Z Fold 3 (Android 12)+Razer Kishi v2
- Surface Duo (Android 11)+ Razer Kishi v2
- Retroid Pocket 3 (Android 11)
- Odin Pro (Android 10)
- RG503 (JELOS)
検証に使うエミュは、
- RetroArchのmGBA CoreでRetroArchの先行実行設定なし
- RetroArchのmGBA CoreでRetroArchの先行実行設定2フレーム
- GBA.emu(スタンドアロンのGBAエミュ)
RetroArchを使う場合は、先行実行のONとOFFの両方を検証する。
先行実行の設定は、
「設定→遅延→先行実行して遅延を減らす」をONにして、「先行するフレーム数」を選択する。今回は2フレーム先行という設定にする。
ついでに、RG503ではRetroArchのmGBAを使っているので、RG503も比較対象に入れている。RG503のJELOSでは、初期設定で先行実行がAUTOになっており、先行実行が有効化されているっポイので、他機種同様にON(2フレーム)とOFFで検証する。
実機(ゲームボーイアドバンス)では、大体10フレームで反応出来ているので、10フレームが基準値になる。10フレームに近いほど遅延が少ないと考えて良いだろう。
検証結果:
Android Ver. | SoC | RetroArch (mGBA core) 先行実行なし |
RetroArch (mGBA core) 先行実行2F |
GBA.emu | |
Galaxy Z Fold 3 | 12 | SD888 | 13 | 11 | 11 |
GalaxyNote10+ | 12 | SD855 | 13 | 12 | 12 |
Surface Duo | 11 | SD855 | 15 | 14 | 13 |
Retroid Pocket 3 | 11 | T310 | 14 | 13 | 13 |
Odin Pro | 10 | SD845 | 15 | 14 | 15 |
RG503 | JELOS | RK3356 | 13 | 12 | N/A |
結果値は集中していればある程度コンスタント(5回中2回位)に出せる最速値にしている。
手動検証なので、値の精度に問題はあるかもしれないが、何となく傾向はある様な気がする。
意外だったのは、Retroid Pocket 3より性能が上のOdin Proの方が、遅延が大きくなっている事。
そして、今までLinuxベースなら遅延は少ないと思っていたのだが、この検証結果からはそうなっていない事も意外だった。
RG503では11フレームくらいまでは出る印象だったので、初期設定の先行実行AUTOというのが2フレーム以上先行していた可能性がある。
考察:
結局どういう事??
わけがわからない。
ある程度傾向があるとすると、まず機体性能が高い、すなわち高性能なSOCを積んでいる方が遅延は少なそうだという事。
Galaxy Z fold 3とGalaxyNote10+とでは、体感的にもGalaxy Z fold 3の方が遅延が少ないように感じる。
さらに、AndroidOSのバージョンにも依存している様子。AndroidOSのバージョンが高い方が遅延が少ない。同じSoCを積んだGalaxy Note 10+とSurface Duoでは、高いAndroidOSバージョンを積んだGalaxy Note 10+の方が遅延が少ない。
SoCの性能はOdin Proの方がRetroid Pocket 3より圧倒的に高いにもかかわらず、AndroidOSバージョンの高いRetroid Pocket 3の方が遅延が少ない。
そして、入力遅延は少ないと思い込んでいたLinuxベースのOSとAndroid12を積んだスマホとで入力遅延の差はほとんどない。何ならAndroid12を積んだスマホの方が遅延が少ないまである。
そしてもう一つ、エミュを変えると明らかに入力遅延度合いが変わる事だ。
今回はRetroArchのmGBAとスタンドアロン版のGBA.emuを比較したが、GBA.emuは特に遅延入力の設定は見つけられず初期設定のまま動かしているが、入力遅延が少ない。
ただ、Android10を積んだOdin Proでは、RetroArchでもGBA.emuでも差が出ないという不思議な結果になった。
リズムゲーは遊べるのか?:
一番遅延の少なかったAndroid12を積んだGalaxy Z fold 3とGalaxy Note 10+の二つを使って、GBAのリズム天国が遊べるか試してみた。
結果はこんな感じ
RetroArch (mGBA core) 先行実行なし |
RetroArch (mGBA core) 先行実行2F |
GBA.emu | |
Galaxy Z Fold 3 | 無理 | 違和感あり | イケる |
GalaxyNote10+ | 無理 | 違和感あり | イケる |
「刹那の見斬り」では、差がなかったRetroArchの先行実行ありとGBA.emuだが、リズムゲームでは差が出た。
RetroArchでは、遊べなくもないけど・・・遅延していて気持悪いな~って感じ。
GBA.emuでは、遅延しているかもしれないけど、慣れればイケるなって感じだった。
他のAndroid機では「どうやってリズム取るんだっ!」とわけわからなくなる位、無理ゲー。
結論(暫定):
限定的な検証なので、このデータだけでは断言はできないがここからわかったのは、入力遅延を避けたいのなら、
- AndroidOSバージョンは11以上が良い
- SoCの性能は高い方が良いが、ある程度以上あれば大きな差は生まない
- エミュレーターによって遅延の大小は変わるので遅延の少ないエミュを探す必要がある。
という事だろうか。
専門的な知識が無いので、実際どういう事なのかはわからずじまいなのだが・・・・