簡易的な遅延測定方法
はじめに
自分の環境での入力・表示遅延を調べたい場合の測定方法をまとめておきます。「ゲーム画面と入力デバイスのボタンをおなじ画角(画面)に収めてスロー撮影し、動きの差分=遅延を計測する」もので、これは簡単なのでよく使われる方法です。
入力遅延(デバイスやPC・ゲームハード由来の遅延)と表示遅延(ディスプレイ由来の遅延)を両方合わせての測定になります。
自環境の遅延を把握しておく理由
遅延については「自分の環境で実際どうなのか」というのは気になる人には気になるものですが、改めて把握しておく必要が生じてきたのは下記の出来事が原因です。
2024年の2月に、下記のようなTweetが話題になりました。
「PCの前面についているポートは分岐が入っている可能性があるので使わず、背面のマザーボードに直接繋がるUSBポートを使えば、入力遅延が軽減される可能性がある」という趣旨の発言でした。
しかし、どの程度の遅延があった場合にこの措置を取るべきなのか、といった情報は示されませんでした。入力遅延はms単位だったりするので、「このくらいなら気にしないで前面ポート使うわ」という人も大勢いるはずなのですが、肝心の数字が分からないので判断ができません。「とりあえず背面ポートに挿しておけば安心なんでしょ?」といった対応をするしかない状態です。
PCにおいては製品(この場合ケース)によっても異なるので一概に言えないという事情を考慮しても、Steam版ユーザーの不安をあおる、かなり無責任な発言だったと思います。
こういった状況を加味して、今回は入力・表示遅延の測定方法を覚えて自環境での遅延を知ろうという趣旨になります。測定した結果、あまり変わらないか許容範囲内ならPCの前面パネルを使っても問題ない、ということになるでしょう。
用意するもの
iPhone/iPad
もしくは240fps以上のスロー撮影が可能なデジタルカメラ/Androidスマートフォン撮影時に上記を固定できるホルダー
WindowsPC
※後述のアプリを使えばiPhone/iPad上でもカウントは可能PCにデータを転送するUSBケーブル
今回はiPhoneをベースに考えたいと思います。Androidスマートフォンでも可能ですが、カメラの性能に依存します。
これまでのnoteの記事では遅延測定器を使っていましたが、今回、これはナシで、代わりにボタンが押し込まれているのを視認して通電しているかを判断します。原理的にはまったくおなじことですね。
もし入力時に発光するボタンがあれば、遅延測定器と同様の使い方ができます。
測定のやり方
ディスプレイとボタンの準備
測定したいディスプレイに鉄拳を立ち上げておきます。
アケコン・レバーレスコントローラーなどは、ボタンの動きを画角に収めやすいように高さを調整しておきましょう。ボタンをなるべく側面から写せるようにしておくとベターです。
パッドでも問題ないのですが、いつ通電したのかがすこし見分けづらいかなという気がします。
iPhoneのスローモーション撮影設定
iPhoneでの撮影にはスローモーションを使います。設定から録画fpsを最大(240fps)にしておきましょう。以下の画像はiPadのものですが、設定方法は一緒です。
またWindowsに受け渡した後「データが扱えない……」といった事態を防ぐため、フォーマットも互換性優先にしておきます。
なお下記のアプリでも240fps撮影することができます。遅延測定を目的としたアプリです。PCを使わず、iPhone/iPad上で手動でコマ送りしてカウントする場合にはこちらのアプリの方が便利かと思います。
iPhone本体はスタンドか何かで固定して、ゲーム画面とアケコンがおなじ画角に収まるようにしておきます。なにかこういう感じの簡単なホルダーで良いです。
スローモーション撮影する
鉄拳ゲーム内の入力履歴とボタンをおなじ画角に収め、スロー撮影します。
撮影した状態でボタンを押します。今回は20回くらいとしました。遅延測定器を作ったトライアングルサービスさんによれば「10回くらいで十分ではないか」とのことですが、心配性なので少し多めにしておきます。
ボタンは強めに押した方が良いでしょう。FPSが高めなので、けっこう強めに押したつもりでもボタンが埋まるまで4~8コマくらいにはなると思います。なおこのボタンはGamerFingerです。
データを転送して確認する
動画が撮れたら、iPhone/iPadからWindows PCにデータを転送します。USBケーブルで接続し、iPhone/iPad側で「許可」を選択します。
「許可」すると、エクスプローラーでこの中に入ってファイルを見られるようになります。お目当ての動画ファイルを見つけたら適当な場所にコピー&ペーストしておきましょう。
ここで上手く行かないこともあり、Win版のiTunesを入れる必要があるケースもあるようです。ググると公式のヘルプをはじめとして情報は色々出てきます。
次にデータがちゃんと240fpsで撮影できているかをMediaInfoを使って確認します。
見てみると……げっ、240fpsではなく187.932fpsと表示されています。ここが240fpsならば想定通りなのですが……。
実はこれは以前も起きた症状で、Appleのヘルプに問い合わせたのですが原因が分かりませんでした。困りましたが、仕方ないので187.932fpsとして計算することにします。
コマ送りしてフレーム数を調べる
コマ送りできれば何のソフトでも良いですが、自分はなんとなくAVIUtlを使っています。当該コマ数をコピーすることもできますし。
ボタンが一番下まで押し込まれた瞬間に入力が入った(通電した)ものとみなしてカウントします。通電の瞬間のジャッジがあやふやだと、測定結果にブレが生じてしまうので気をつけてください。
キー履歴の入力に関しては、60fpsの画面描画よりも高いFPSで録画しているため表示がボヤけることもありますが、わずかでも表示されていたら「入力された」とみなして良いと思います。
この間隔が遅延(入力遅延+表示遅延)ということになります。20回分、測定してメモっておき、ExcelやGoogleスプレッドシートなどを使って平均値を割り出しましょう。
実際の測定結果
自分の環境で実際にやってみました。PCの前面パネル、バックパネル、USBハブ経由の3つのデータを取ります。
平均値は、たとえば前面パネルでは「12.2コマ」と出ますが、これは188.932fpsでの値なので、計算してmsと60fpsに換算します。まとめると下記のようになりました。
アケコンの基板はUFB-UP5です。また従来のnote記事とは違い、リフレッシュレートが60Hzまでしか出ないモニタにウィンドウモードで表示しています。その結果としては「そんなもんかな」と思える範囲の数値でしょう。
ただし測定回数が少なく、録画fpsも240fpsですので、ms単位の差を見るには向かないデータです。また通電タイミングの判断も信頼性の面で今までのnote記事よりは劣るため、ブレ幅は大きいと見た方が良いでしょう。
その上でデータを見てみますが、USBハブ経由のものが一番速くなっています……これは理屈に合わない感じがしますが、上述の通り誤差の範囲ということでしょう。20回の試行の中では上振れたようです。最低値・最大値を抜いた上での平均値を出した方が良かったかもしれません。
ざっくりですが各遅延が8ms以内に収まっているということは、ほぼ差がないと考えて良いと思います。これなら自分の環境でいちいちバックパネルに接続する意味はなさそうです。また配線の都合でUSBハブを使っても問題ないと考えられます。これがもし「60fps換算で1F以上速い」となったら、自分ならバックパネルに繋ぎますが……このあたりの判断もその人次第です。
なおPCのケース、USBハブは下記の製品です。しかもUSBハブは机の逆側へ回すための延長も兼ねていて、2つタコ足配線しています。
まとめ
遅延測定の手順まとめは以上になります。理屈さえわかればそれほど難しくないと思います。測定結果にブレがある点にだけ注意して、自環境で遅延の問題が起きていないか見てみるのも良いのではないでしょうか。
また前面パネル・バックパネルといった比較だけでなく、数値自体も見てみて「妙に大きいな」などと気づくことができれば、遅延改善に向けて何らか手を打つきっかけにもなるかもしれません。
元となった三原さん・原田さんの発言に関しては、数値を明示するか、「一例としてこういったケースなら大丈夫」といった情報を付加するなどして、いたずらにユーザーの不安をあおるのではなく、建設的な情報展開をして欲しかったですね。また立場上、そういったことが言えないなら「特定の製品に関しては言及できないが」と最初から一言添えるべきであったかと思います。
今回は以上となります。お疲れ様でした。