コントローラー遅延検証


概要

ニンテンドーSwitch用ソフト『大乱闘スマッシュブラザーズSPECIAL』において、
コントローラーのボタンを押してから画面に反映されるまでの時間*1を計測した。
以下の条件を変えた計測を行い、比較を行った。
  • コントローラーの種類
  • アダプター
  • SwitchのUSBポート:内部・側面
  • USBハブの有無
  • Switchのモード
  • スマブラforとSP

計測概略
コントローラー基板に電子回路を接続し、Aボタンを入力すると同時にLEDが点灯するように設計。
240fpsのカメラでLEDとゲーミングモニターを撮影し、LEDが光ってから画面に入力が反映されるまでのコマ数を数える。
なお、ここではLEDはボタンを押した瞬間に光るものと考える。
この計測で測定されるのは、
  • コントローラーの処理時間
  • ゲーム内部の処理時間
  • モニター内部の処理時間
  • モニター液晶パネルの応答時間
の合計である。

モニターは I-O DATA EX-LDGC251TB を使用した。
計測は100回を基準に行い、平均を取る。

この記事はコントローラーの絶対的な良し悪しを決めるものではありません。
スティック、ジャイロセンサーの反応については未検証です。


結果

時間の単位:
  • 1F(フレーム) = 60分の1秒
  • 1ms = 1000分の1秒
    • 1F ≒ 16.667 ms
計測方法の欠点を補完して真の値に近い数値を見積もるため、 計測データには一律の補正をかけている。
詳しくはデータ処理・誤差の節にまとめた。
値が不安定なものは、複数回の計測結果を平均して掲載している(備考欄に記載)。
他にも、結果には様々な誤差が含まれることに留意。

コントローラー比較

コントローラーの応答速度の差を比較する。
有線コントローラーはSwitchドック側面のUSBポートに直接接続した。

No. コントローラー image 備考
1 ゲームキューブコントローラー
2 Switchプロコン(無線/有線接続)
3 ホリ クラシックコントローラー for Nintendo Switch
振動・ジャイロなし、連射あり
4 Joy-Con
5 Dinofire有線
ジャイロなし
6 Dinofire無線
ジャイロあり
7 ウェーブバード
8 CYBER・ジャイロコントローラー 有線タイプ(SWITCH用)
ジャイロ・連射・マクロあり
9 CYBER・ジャイロコントローラー 無線タイプ(SWITCH用)
10 8BitDo SN30 PRO GAMEPAD
(製品名もしくは画像クリックで製品ページにジャンプ)

検証に使ったGCコンはスマブラX時代に販売されていた通称「白コン」。
GCコン接続タップは純正品(WiiUのロゴ入り)。
公式サイト によれば、現行販売されているタップはWiiU用の物と同一仕様とのこと。
無線コントローラーは検証するもののみを接続し、混線が起こりにくい環境で計測した。
Joy-ConはLRセットでの接続で、Joy-Con(R)のAボタンを押した。

結果
単位は左2列がフレーム、右3列がミリ秒。標準偏差はミリ秒のみ表示。
「(USB)」は、有線接続に対応している無線コントローラーをUSB(有線)接続したときの値。
標準誤差は、今回のデータ集計で発生しうる遅延平均の誤差幅(測定回数を増やすほど減る)。
標準偏差は、測定誤差や機器の処理時間のばらつきを示す値。
少ないほど遅延の振れ幅が小さく、反応が安定している(測定回数を増やしても減らない)。
No. コントローラー 遅延平均 標準誤差 遅延平均[ms] 標準誤差[ms] 標準偏差[ms] 備考
1 GC 5.953 F ±0.034 F 99.208 0.571 5.714
2 SwPro無線 6.290 F ±0.033 F 104.833 0.543 5.432
2.5 SwPro有線 6.980 F ±0.049 F 116.333 0.809 8.087
3 HORI GC型 6.088 F ±0.035 F 101.458 0.575 5.753
4 Joy-Con 6.120 F ±0.032 F 102.000 0.535 5.352
5 Dinofire有線 6.310 F ±0.039 F 105.167 0.643 6.426
6 Dinofire無線 6.625 F ±0.030 F 110.417 0.503 6.158 測定50回x2。再計測
6.5 Dinofire無線(USB) 6.760 F ±0.034 F 112.667 0.570 5.696
7 GC Wavebird 6.245 F ±0.033 F 104.083 0.556 5.561
8 CYBER有線 6.655 F ±0.033 F 110.917 0.554 5.542
9 CYBER無線 6.710 F ±0.048 F 111.833 0.802 8.018 測定50回x2
9.5 CYBER無線(USB) 6.765 F ±0.036 F 112.750 0.602 6.017
10 SN30 6.685 F ±0.037 F 111.417 0.612 7.491 測定50回x3


アダプター比較

アダプターの応答速度の差を比較する。
アダプターはSwitchドック側面のUSBポートに直接接続した。
アダプター image 対応コントローラー
GC 公式接続タップ
GCコン
CYBER・GCコントローラー変換アダプター(SWITCH用)
GCコン
8BitDo GBros. Wireless Adapter for Switch
GCコン,Wiiクラシックコントローラー
MAGIC-NS
Bluetooth/USB有線接続コントローラー
(製品名もしくは画像クリックで製品ページにジャンプ)

MAGIC-NSは搭載されている以下の2つのモードについて測定を行った。
  • 振動なしのSwitchモード(ランプ色:赤
  • 振動ありのSwitchProモード(ランプ色:紫
MAGIC-NSに接続するコントローラーは
  • Switchプロコンの無線モード
  • WiiUプロコン
を試した。有線コントローラーとの組み合わせは未検証。

結果
アダプター コントローラー 遅延平均 標準誤差 遅延平均[ms] 標準誤差[ms] 標準偏差[ms] 備考
GC 公式接続タップ GCコン 5.953 F ±0.034 F 99.208 0.571 5.714
CYBER GC接続タップ GCコン 6.278 F ±0.039 F 104.625 0.655 6.549
8bitタップ GCコン 6.501 F ±0.031 F 108.354 0.517 7.306 測定50回x4
MAGIC-NS(赤) SwPro無線 7.045 F ±0.070 F 117.417 1.174 8.303 測定50回
UPro 6.975 F ±0.064 F 116.250 1.073 7.588 測定50回
MAGIC-NS(紫) SwPro無線 7.158 F ±0.068 F 119.306 1.139 8.826 測定50回
UPro 7.185 F ±0.081 F 119.750 1.350 9.546 測定50回


USBポート・ハブ

SwitchドックのUSBポートについて、内部・側面のどちらにコントローラーを繋ぐかによる応答速度の差を検証した。
また、USBハブを経由した場合の応答速度も合わせて計測した。
内部のUSBポートは物理的にはUSB3.0規格だが、本体バージョン6.2.0現在ファームウェアが未対応のため実質的にUSB2.0と同機能となっている。
側面の2つのUSBポートはどちらもUSB2.0規格。

GCコン接続タップは原則として黒・灰色の端子を両方接続した。
ただしGCコンを内部ポートに直接繋ぐときのみ、黒の端子(コマンド入力信号端子)のみを接続し、灰色の端子(振動信号用端子)は接続しなかった。

USBハブは、ELECOM社製のバスパワータイプのものを2種類、セルフパワータイプの物を1種類比較した。
  • U3H-A407B (USB3.0対応、4ポート。 U3Bと表記
  • U2H-SN4B (USB2.0対応、4ポート。 U2Bと表記
  • U3H-A408S (USB3.0対応、4ポート。AC電源のセルフパワー。 U3Sと表記


結果
コントローラー USBポート ハブ 遅延平均 標準誤差 遅延平均[ms] 標準誤差[ms] 標準偏差[ms] 備考
GC 内部 直接 5.958 F ±0.034 F 99.292 0.566 5.657
GC 側面 直接 5.953 F ±0.034 F 99.208 0.571 5.714
GC 内部 U3B 6.030 F ±0.034 F 100.500 0.574 5.744
GC 側面 U2B 6.068 F ±0.033 F 101.125 0.542 5.417
GC 内部 U3S 5.995 F ±0.035 F 99.917 0.578 5.778
GC 側面 U3S 5.985 F ±0.035 F 99.750 0.585 5.845
SwPro有線 内部 直接 6.290 F ±0.033 F 104.833 0.543 5.432 測定50回
SwPro有線 側面 直接 6.980 F ±0.049 F 116.333 0.809 8.087
SwPro有線 内部 U3B 6.963 F ±0.058 F 116.042 0.961 9.611
SwPro有線 側面 U3B 6.950 F ±0.069 F 115.833 1.142 8.074 測定50回
SwPro有線 側面 U2B 7.035 F ±0.067 F 117.250 1.116 7.888 測定50回


Switchモード比較

携帯モード・テーブルモード・TVモードの3つで応答速度を比較した。
TVモードの結果はコントローラー検証に準ずる。
携帯モード、テーブルモードは映像処理の補正が一部異なる(詳しくは計測詳細へ)。

結果
モード コントローラー 遅延平均 標準誤差 遅延平均[ms] 標準誤差[ms] 標準偏差[ms] 備考
携帯モード Joy-Con(接続) 6.735 F ±0.035 F 112.250 0.587 7.187 測定50回x3
テーブルモード Joy-Con 6.200 F ±0.036 F 103.333 0.595 5.952
テーブルモード SwPro無線 6.295 F ±0.043 F 104.917 0.712 7.119
TVモード Joy-Con 6.120 F ±0.032 F 102.000 0.535 5.352
TVモード SwPro無線 6.290 F ±0.033 F 104.833 0.543 5.432


for/SP比較

スマブラforWiiUとスマブラSPの画面遅延を比較した。
この検証のみ、異なるゲーミングモニター(VX2363SMHL)を使用した。
そのため、SPの計測値もコントローラー比較のものとは少しだけ異なる。

結果
ソフト 遅延平均 標準誤差 遅延平均[ms] 標準誤差[ms]
forWiiU 4.878 F ±0.359 F 81.29167 5.978092
SP 5.990 F ±0.340 F 99.83333 5.659383


まとめ

主要なコントローラーの応答速度は、速い順に
GCコン ≧ GC型HORIコン = Joy-Con ≧ Swプロコン無線 > Swプロコン有線
Switchプロコン無線までは0.3F程度の幅に収まる。
Switchプロコン有線は無線よりも0.7F、GCコンよりも1F遅く、シビアな対戦には向かない。

SwitchドックのUSBポートについては、内部・側面の差はない。

USBハブによっては、2ms程度の遅延が発生する場合がある。
GCコン+公式接続タップの場合、速い順に
直接 > USB3.0セルフ ≧ USB3.0バス > USB2.0バス
GCコン接続タップはUSBハブとの相性があまり良くないため、ハブを使わず直接接続するとよい。
一方Switchプロコンの有線接続では、性能の良いハブを使えば直接接続と変わらない速度になる。

Switchのモードによる差は、テレビ・モニターの反応速度が良ければ
TVモード≧テーブルモード>携帯モード

スマブラSPはスマブラforWiiUよりも1フレーム強、応答が遅い。

生データ


計測詳細

+開く

使った機材


回路設計

LEDとコントローラーを並列に繋ぐ(回路図)。
コントローラー側の抵抗R2はコントローラーに応じて変更する。
適切な抵抗を使わないと、スイッチを入れてもボタン入力されなかったり、Aボタン以外が押された扱いになったりする。
下表は正常な動作が確認できたR2の値。
コントローラー R2
GC 33 kΩ
SwPro 100 kΩ
Joy-Con 100 kΩ
HORI 10 kΩ
Dinofire 10 kΩ
CYBER 33 kΩ
UPro 1 kΩ
SN30 100 kΩ

回路から導線を引いて、コントローラー基板にセロハンテープで写真のように固定する。
ボタンに対応した位置にある分断された金属板間に電流が流れると、そのボタンが押されたという処理になる。


上がGCコン、下がSwitchプロコン。
導線の正極・負極も適切に配線する必要あり。

この検証では、スイッチを押した瞬間にLED点灯とコントローラー回路ONが同時に起こるものと仮定している。
回路の応答時間は考慮していない。


撮影

回路のスイッチを押し、LED点灯および画面応答を240fpsカメラで撮影した。
10回を10セットとし、計100回分のデータを取った。

ゲーム画面で撮影するのは、
  • ピカチュウの弱攻撃
  • 75m終点化
  • トレモのカメラ「もっとアップ」設定
とした。
ピカチュウの弱攻撃を選んだ理由は以下の通り。
  • キャラの色が背景色(黒)と大きく違っていて見やすい
  • 1F目から姿勢が大きく変わる
  • 全体Fが短く、続けて測定しやすい


映像処理

撮影した動画をAviutlで読み込み、コマ送りでLEDとモニターの応答時間差のコマ数を数えた。
LEDが光ったコマを基準とし、その何コマ後にモニター画面に変化が現れるかを記録した。

反応したかどうかは全て目視で判断する。
LEDは、少しでも色が変化したら「光った」とする。
モニター画面は、ピカチュウの体の黄色い部分に少しでも変化が見られたら「切り替わった」とする(下図)。
27コマ目の変化は分かりづらいが、コマ送りで見ると前コマとの差が識別できる。
このように判別がシビアなケースもあるため、見落としも発生しうる。
(2019/1/2 画像を差し替えました。)

スマブラでは垂直同期が有効であるため、画面は必ず上方から、1Fかけて一番下まで徐々に切り替わる。
理論上は画面一番上のピクセルが変化する瞬間を画面の切り替わりとするべきだが、
ピカチュウの体の黄色い部分は画面縦方向1080pxのうち上部の約150pxには映らない(下図)。
したがって、本記事の方法では画面上部約1/7に起こる変化を観測することが不可能であり、画面の応答を約1/7フレーム分遅く見積もってしまうことになる。
1/7フレームは
16.667 / 7 ≒ 2.31 ms
実際には1pxの変化ではコマ送り時に気付けず、見積もりはこれよりも幾分か遅くなると考えられるため、
補正として計測結果の平均から2.5msを引いた値を応答速度の推定値とした。
将来的にModなどが開発され、ワザを使うと全画面にエフェクトがかかるような設定ができれば、補正の必要が無い測定が可能になる。

携帯モード・テーブルモード
TVモードでは画面は上方から変化するが、 携帯モード・テーブルモードでは画面右方から変化する。
映像処理で注目するのは左を向いたピカチュウのしっぽ。
変化を観測できないのは画面右部約1/6で、
16.667 / 6 ≒ 2.78 ms
これより、 補正として引くのは3.0msとした。


データ処理

計測したN=100個のデータから、平均・標準偏差・標準誤差を次のように計算した。
mean = sum(data) / N
stdev = sum((data-mean)^2) / N
sterr = stdev / sqrt(N)
その後、平均に関しては映像処理の補正として-2.5ms(携帯・テーブルモードは-3.0ms)の処理をした。


誤差の議論

カメラのフレームレート
実験装置で生じる誤差。理論的には影響は±0
カメラのフレームレートを上げるか、測定回数を増やすことで誤差の振れ幅を小さくできる。
結論から言うと240fpsどころか 60fpsのカメラでも有意義な結果を出すことは可能 なのだが、
市販で簡単に手に入る中ではもっとも高性能な1000fpsのカメラを使った検証も多いので、先に解説しておく。

240fpsのカメラでは、実際に現象が発生してからカメラでとらえるまでに
0 ~ 1/240 s
のラグがランダムに発生する(一様分布。平均1/480ms)。
LED(開始時刻)とモニター(終了時刻)の両方をカメラで計測するため、全体としては両者はキャンセルされる。

LEDは100回の点灯のたびにラグの値がランダムに決まる。
一方モニターについては、240fpsが60fpsの整数倍であるため、10回行うそれぞれの撮影中は発生するラグが常に一定となる。
一様分布は 1/12*(b-a)^2 の分散を持つので、その和に(半ば強引に)中心極限定理を適用して本計測におけるカメラ撮影の誤差を推定すると
LED撮影:± 1/120/480 ms
モニター撮影:± 1/12√10/480 ms
撮影合計: ~ ±0.04ms
となる。これは他の要因による誤差に比べて非常に小さい。
1000fpsのカメラを使えば誤差を約1/4にできるが、 この検証方法ではそこまでの精度は必要ない と言える。


ゲーム・モニターのフレームレート
ゲーム及びモニターの画面更新周期で生じる誤差。
ボタン入力などの情報は、ゲームのフレームレートである1フレームの周期でしか画面に反映されない。
例えば1.00~1.99フレームの間に届いた入力は全て2フレーム目の画面に表示される。
任意のタイミングのボタン入力は、ゲーム機に届いてから画面に反映されるまで+0~1F(平均0.5Fの一様分布)のラグが必ず発生する。

このため、60fpsのゲーム画面を撮影orキャプチャして計る場合、応答速度は系統的に+0.5フレーム遅く計測される
測定回数を増やすと、誤差の振れ幅は+0.5フレームに収束していく。

本計測では、この0.5フレームの遅れは補正せず、結果に含めて表示している。
どんなに性能の良い機器を使っても、60fpsのゲームを遊ぶ以上必ず発生するラグだからである。


コントローラーのサンプリングレート
コントローラーがボタン入力信号を受け付ける周期。
GCコンのサンプリングレートは120fpsで、ゲームのフレームレートのちょうど2倍となる。
参考: スマブラDX対戦攻略指南 コントローラ入力のサンプリングレート

遅延の性質としてはゲーム・モニターのフレームレートと同種である。
サンプリングレートがゲームのフレームレートの整数倍である限り、サンプリングレートによるラグはゲーム・モニターのフレームレートに全て吸収されるため、これらは一括りで考えてしまって差し支えない。


コントローラー・ゲーム機の特性
ハードウェアの処理・通信速度自体にもばらつきがある。
とりわけ標準偏差が大きく異なる場合は、コントローラーの特性由来のばらつきだと考えてよい。
標準偏差が大きいコントローラーは接続や処理が不安定な傾向にあると言える。
今回はAボタンしか使っていないので、同時押しやスティックを併用したときには処理にばらつきが出るかもしれない。
また無線コントローラーは、電波ノイズが強い環境では通信が不安定になる可能性がある。
無線コン4台同時接続程度ではほぼ変わらない ことは確認しているが、周囲に強い電波を発するものがある、ゲーム機を複数台置いて大人数でコントローラーを使うなどすると影響が出てくるかもしれない。


映像記録のミス
映像の変化を目視で読み取る際の人為的なミスもある。
主に集中力の問題 なので量的に評価するのが難しいのだが、感覚的にどの程度の誤差がありそうかを見積もってみる。

240fpsではLEDの点灯を見落とすことはまずない。
モニターは映像の小さな変化を見落とす可能性がそれなりにあり、100回中1~3回ミスが発生してもおかしくないといったところである。
モニターの見落としは、応答速度が遅くなる方に働く。
1コマ分(約4.16ms)のミスが多めに見積もって5回あるとすると、平均ではおよそ+0.2msのエラーが出ることになる。

カメラのフレームレートが大きいほど一度の計測ミスによるエラーを小さくできるが、高フレームレートでは画面の変化も微小になり見分けるのが大変になる。


接続の不安定さ
(2019/1/2 追記)
以下のコントローラーは、 複数回の計測結果が標準誤差の範囲で一致しなかった。
  • DinoFire無線
  • CYBER無線
  • SN30Pro
  • 携帯モード
これらについては2~3回の計測を平均した結果を掲載した。

GCコン、Switchプロコン無線などでは標準誤差以上のずれは発生しなかった(計測の限りでは)。
今の所、 一部の無線コントローラーは、同期するごとに遅延の数値が変わる という仮説を立てている。



おわりに

繰り返しになるが、この検証は コントローラーの絶対的な良し悪しを決めるものではない

特にこの検証では「ボタンを押す」という物理的な動作にかかる時間を測定していない。
ボタンのゴムが高い・硬いならば、指でボタンを押してから実際に信号が送られるまでは時間がかかる。
GCコンのLR,Zボタンは物理的な構造が普通のボタンとは異なるため、押下→入力までの時間にも多大な影響があると思われる。
さらに言えばボタンまで指を運ぶ動作もあるし、コントローラーのボタン位置に戸惑えばその分だけボタンを押すのは遅くなる。

数ミリ秒の応答速度のために手に馴染まないコントローラーを使うよりは、慣れているコントローラーで操作したほうが総合的に反応が速くなるのは間違いない。
無線Switchプロコンくらいまでの入力遅延なら、ボタン配置や握り心地などの好みを優先してもいいように思う。


参考

GigaBoots Button2Pixel
海外で行われた同様の検証。コントローラーの遅延数値は今回の結果とほとんど一致している。
他にも歴代のスマブラシリーズの遅延比較などを行っている。
この動画シリーズでは、ロックマン11はセルフパワータイプのUSBハブでGCコン接続タップの応答速度が向上したという結果が出ている。
動画投稿者によると、スマブラではそのような現象は見られなかったと言う。

Switch Pro vs. GameCube Latency Test for Super Smash Bros Ultimate
複数のコントローラーに配線を繋ぎ、ボタンが同時に入力されるように設定し応答に差が出るかどうかを調べた検証。
  • Switchプロコン有線が無線よりも1F遅い
  • GCコンと無線プロコンを比べた場合、
    • 83%:同時に入力される
    • 14%:GCコンの方が速い
    • 3%:プロコンの方が速い

Controller input lag test and comparison - Rocket Science #17
結果(画像):https://i.imgur.com/6rVNjSU.png
ロケットリーグでの検証。検証方法の詳細を参考にした。

Noodalls氏,WydD氏による独自の検証方法
入力したタイミングを、コンバーターでゲーム画面に直接表示する手法。PS4などの格闘ゲームが調査対象。
リンク:


コメント

  • コントローラー基板のきばんは基板ですよ基盤は日本語として間違ってます。基盤は物事の基礎となる部分 電子基板は基板 - 名無しさん (2018-12-19 04:53:05)
    • ありがとうございます。修正しました。 - DRAFIX (2018-12-19 13:05:20)
  • LEDの向きが…… - 名無しさん (2019-01-03 08:38:59)
    • ありがとうございます、修正しました。 - DRAFIX (2019-01-03 12:54:48)
  • 検証データすごい!MAGIC-NSや8bitDoを使おうと思ってたので参考になりました。有線ホリパッドとワイヤレスホリパッドも検証して頂けると嬉しいです。 - 名無しさん (2019-01-12 04:29:38)
名前: