No Gadget, No Life

ゲームやガジェットの雑記

エミュ機の入力遅延を検証する

f:id:Lou-gun:20210509114524j:plain

エミュ機では、実機と比較するとどれくらいの入力遅延が発生しているのか?それを検証してみた。

入力遅延について

エミュレーターでは、入力遅延が発生するものらしい。詳しい仕組みは良くわからないが、ハードとゲームの間をエミュレーターを介してデータの処理をするわけだから、中間の処理が増えて遅延が発生するというのは感覚的にも理解できる。

実際エミュ機では、感じるレベルでの入力遅延が発生していることもある。いわゆる中華エミュ機だけでなく、互換機といわれるレトロフリークなども、中身はエミュ機なので入力遅延が発生するというのは周知の事実のようだ。

おそらく実機と同じと言えるのは、Analogue社の互換機の様に、FPGAといわれる技術を使ってハード的に実機を再現している互換機くらいだろう。

また、「遅延」は入力だけでなく「表示の遅延」もある。

液晶画面は表示時に画像の表示処理をしている分、ブラウン管テレビよりも表示が遅延するという事もあるらしい。

エミュによる遅延、液晶画面による遅延の大きく2つの遅延によって、「エミュ機で遊ぶと、昔は感じなかった遅延を感じるな~」という事になるようだ。

ただ、「人による」という意見もある。

どうやって入力遅延を検証するのか

専用の機材があるわけでもなく、動画のコマ送り編集などが出来るわけでもない。手軽な方法で、検証できないかと思って思いついたのが、星のカービィのミニゲーム「刹那の見斬り」。

f:id:Lou-gun:20210509120723j:plain

GBA版の星のカービィ夢の泉デラックスのミニゲーム

「刹那の見斬り」は、画面に「!」が出たタイミングでボタンを押す速さを競うミニゲーム。

他のカービィにも入っているミニゲームの様で、ファミ通の記事によるとスーファミ版の「星のカービィ スーパーデラックス」では、フレームが表示されているとのこと。

今回使うゲームは、GBA版の「星のカービィ夢の泉デラックス」だが、おそらく同じであろうという事で、このゲームを使って入力時のフレーム数を比較していこうと思う。

性能は異なるだろうが、すべて液晶画面なのでモニターのみの遅延は考慮しない。単純に液晶も含めて、携帯エミュ機ごとでの遅延を計測するという事にする。

人の反応速度はどれくらいなのか

検証の前にフレーム数と人の反応速度についてちょっと確認をする。

ここでいう1フレームとは、1秒間に60回画面が切り替わった時の1回分の事を言う。つまり、1フレーム=1/60秒(約0.0167秒)だ。

人がいつ来るかわからない刺激に対して待ち構えて反応できる速度は、普通の人で0.2秒くらい。アスリートなどでは0.14秒前後、とされているようだ。人間の限界反応速度は医学的に0.1秒とされていて、スポーツ競技ではスタートの合図から0.1秒以内に反応してしまうと、フライングと判断されてしまうそうだ。

少し話がそれたが、フレーム数に換算すると普通の人は、ゲーム内の出来事に対して12フレーム位で反応できる。プロゲーマーなら8フレーム位で反応できると考えていいだろう。これは視覚のみでの反応速度で、音による反応が加わるともう少し早くなるらしい。さらに「予測」が含まれとさらに早くなる。

今回検証に使う「刹那の見切り」では、音も出るので、普通の人でも12フレームより早く反応できるのではないか?という想定が出来る。

検証対象

検証を行う機体は、以下の5機種、6パターンだ。それにゲームボーイミクロの実機を加えての7つを比較する。

  1. RG350M OS:OpenDingux(StockFW) エミュ:ReGBA
  2. RG351P OS:ArkOS Final エミュ:mGBA
  3. RG351V OS:351ELEC Final エミュ:mGBA
  4. RGB10 Max OS:EmuELEC 4.1 Stable エミュ:mGBA
  5. Galaxy Note 10 plus + 8BitDo Pro2(有線接続) OS:Android11 エミュ:GBA.emu
  6. Galaxy Note 10 plus + 8BitDo Pro2(Bluetooth接続) OS:Android11 エミュ:GBA.emu
  7. GameBoy Micro

検証方法

各パターンで、30回計測する。結果は都度画面右下に表示されるのでこの数字を記録していく。

f:id:Lou-gun:20210509132004j:plain

反応が明らかに遅れた場合は、ノーカウントとして再度測定し直しとする。

なんせ、老眼、耳鳴り持ちの50近いおっさんがやっているので、コンスタントに反応し続けるのはキツイ・・・

30回行った結果の最速と平均値を使って比較する。

結果

結果は以下の通り。

f:id:Lou-gun:20210509141610j:plain

実機のフレーム数は、前述の想定通りといったところだ。視覚と聴覚で反応することで平均10フレーム位で反応していることになる。

一方、エミュ機は一様に4~7フレーム(0.06~0.1秒)程度遅れているのがわかる。

0.1秒は体感できる遅延だ。やはり遅延していると感じていたのは間違いではなかったようだ。

ちょっと興味深いのは、ハード的にはほぼ同じ性能のOGAクローン機でも差が出たこと。液晶の差なのかOSやエミュの最適化の差なのかはわからないが、結果としてはRG351V+351ELECが一番いい結果だった。

予想外だったのは、スマホのBluetooth接続でもそれほど大きな差が出なかったことだ。体感的にはBluetooth接続はだいぶ遅く感じたのだが。もしかしたら単純な操作ではそれほど差が出ないけど、複数のキー入力だと差が出るという事なのかもしれない。

 

という事で、エミュ機で遊ぶ以上は、ある程度の遅延は仕方がないという事だろう。遅延を気にするのであれば実機が一番という事だ。

今回試して思ったのは、エミュ機でタイミングゲーやリズムゲーを遊ぶのは厳しいという事。ゲームによっては、気にならない場合もあるので、うまくゲームを選んで遊ぶ必要がありそうだ。

【追記】エミュで遅延を解消させたい場合

どうしても遅延が気になるという事であれば、RetroArchの設定で遅延を軽減させることも可能。

EmuELECや351ELECでもこの設定を有効化できるので、入力遅延なく遊びたいという場合には設定をして試してみても良いと思う。

EmuELECや351ELECの設定方法は、Startボタンを押してESのMain Menu>Game Settings>Latancy Reductionを開く。

"USER RUN-AHEAD FRAMES" で何フレーム遅れを解消させるかを設定する。

この設定をすると音がおかしくなったりすることがあるので、その場合はもう一つの設定

”RUN-AHEAD USE SECONDINSTANCE”をオンにすると解消されることがある。

この設定はマシンパワーを必要とするらしいので、もともと重いゲームには向かない可能性がある。また、場合によってはゲーム自体が不安定になる可能があるので実際に試しながら設定してみるとよい。