コントローラー遅延検証


概要

ニンテンドーSwitch用ソフト『大乱闘スマッシュブラザーズSPECIAL』において、
コントローラーのボタンを押してから画面に反映されるまでの時間*1を計測した。
比較の項目は以下。
  • コントローラーの種類
  • アダプター
  • SwitchのUSBポート:内部・側面
  • USBハブを経由するかどうか
  • GCコン接続タップの灰色端子の有無・GCコン接続数
  • Switchのモード:TV・携帯・テーブル
  • スマブラforとSP

計測概略
コントローラー基板に電子回路を接続し、Aボタン入力と同時にLEDが点灯するように設計する。
240fpsのカメラで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 TNS-901
ジャイロなし
6 TNS-1724
ジャイロあり
7 ウェーブバード
8 CYBER・ジャイロコントローラー 有線タイプ(SWITCH用)
ジャイロ・連射・マクロあり
9 CYBER・ジャイロコントローラー 無線タイプ(SWITCH用)
10 8BitDo SN30 PRO GAMEPAD
11 GCコン 類似品
12 PDP Wired Fight Pad Pro
海外ライセンス商品
13 PowerA Nintendo Switch Wired Controller GameCube Style
海外ライセンス商品
14 PowerA Wireless Controller for Nintendo Switch – GameCube Style
海外ライセンス商品
15 Tectinter
(製品名もしくは画像クリックで製品ページにジャンプ)

検証に使ったGCコンはスマブラX時代に販売されていた通称「白コン」。
GCコン接続タップは純正品(WiiUのロゴ入り)。
公式サイト によれば、Switch用として販売されているタップはWiiU用の物と同一仕様とのこと。
Joy-ConはLRセットでの接続で、Joy-Con(R)のAボタンを押した。
Switchプロコン、CYBER無線タイプを有線接続する際は、Switchプロコン付属のUSB Type-Cケーブルで接続した。

結果
単位は左2列がフレーム、右3列がミリ秒。標準偏差はミリ秒のみ表示。
「(USB)」は、有線接続に対応している無線コントローラーをUSB(有線)接続したときの値。
標準誤差は、平均値の誤差幅の目安(測定回数を増やすほど減る)。
標準偏差は、反応速度の不安定さの目安(測定回数を増やしても減らない)。

検証者は、検証環境確認のためにGCコンの測定を何度も行なっている。
ここでは、検証日時以外の条件が全て同じかつ結果がお互いに乖離していないGCコンのデータを一つにまとめて掲載している。*2
No. コントローラー 遅延平均 標準誤差 遅延平均[ms] 標準誤差[ms] 標準偏差[ms] 備考
1 GC 5.994 F ±0.017 F 99.903 0.288 5.658 測定385回
2 SwPro無線 6.025 F ±0.030 F 100.417 0.497 4.973 2019/6更新。
2019/1測定時は6.290F
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 TNS-901 6.310 F ±0.039 F 105.167 0.643 6.426
6 TNS-1724 6.625 F ±0.030 F 110.417 0.503 6.158
6.5 TNS-1724(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
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 測定150回
11 GC類似品 6.445 F ±0.048 F 107.417 0.807 8.072
12 PDP 6.053 F ±0.035 F 100.875 0.582 5.824
13 PowerA有線 6.500 F ±0.033 F 108.333 0.556 5.556
14 PowerA無線 6.100 F ±0.036 F 101.667 0.595 5.952
15 Tectinter 6.330 F ±0.037 F 105.500 0.617 6.174
GCコンとSwitchプロコン(無線)は、ほぼ同等の応答速度を持つ。
PDP, HORIコン, PowerA無線も応答が速く、GCコン・無線プロコンとそれほど変わらないと言える。
Switchプロコンは、有線接続時の方が明らかに遅延が大きい。
CYBER無線タイプ・TNS-1724も、有線接続によって遅延が少なくなることはない。

(2019/6/16記)
2019年6月の検証において、無線Switchプロコンの応答速度が2019年1月の結果に比べ0.3Fほど速かった。
無線コン接続数は1月・6月ともに1台だった。登録数は6月が3台、1月が6~8台(?)。
この原因として考えられるのは、
  • コントローラー以外のノイズの状況が異なっていた
  • コントローラーおよびSwitch本体のファームウェアアップデートで応答速度が改善された
などがある。今後も折を見て検証したい。
ちなみにGCコンの応答速度は時期による違いは無かった。


接続数比較

同時接続されているコントローラーの数による、無線コンの応答速度の違いを調べる。

Switchに接続されているコントローラーの状態は、次の2種類がある。
  • 操作を常時受け付けている状態 :ボタンを押して「 認識 」されている
  • 実質的に接続が切れている状態 :無線コンは「 登録 」だけ・有線は「 配線 」だけ済ませてボタンを一度も押していない
他のコントローラーがそれぞれの状態にある場合に対して測定を行なった。

測定対象はSwitchプロコン(無線) である。
他に接続するコントローラーは、
  • 無線:Joy-Con(L), Joy-Con(R), CYBER無線タイプ, SN30, TNS-1724, PowerA無線, 8BitDo GBros. Wireless Adapter
  • 有線:GCコンx2, HORIコン, CYBER無線タイプ(USB), TNS-901, PDP, PowerA有線
とした(それぞれ計7台)。

結果
認識数 登録・配線数 遅延平均 標準誤差 遅延平均[ms] 標準誤差[ms] 標準偏差[ms] 備考
1台 無線登録3台 6.025 F ±0.030 F 100.417 0.497 4.973 登録はJoy-Con×2とプロコン
1台 無線登録8台 6.013 F ±0.035 F 100.208 0.590 5.904
1+無線7台 無線登録8台 6.320 F ±0.036 F 105.333 0.605 6.048
1台 無線登録8台
有線配線7台
6.013 F ±0.069 F 100.223 1.155 11.608
1+有線7台 無線登録8台
有線配線7台
6.184 F ±0.070 F 103.069 1.175 11.805
  • 無線コン登録数は応答速度に影響しない。
  • 有線コン配線数が増加すると、応答時間の平均には影響しないが、応答時間のバラつきが大きくなる(速度が不安定になる)。
  • 有線コン認識数が増加すると、応答時間が遅くなる。
  • 無線コン認識数が増加すると、応答時間がより遅くなる。
オフ大会会場などでは、無線プロコンに体感できるレベルの入力遅延が発生するという報告も多数ある。
台数をさらに増やした場合についても要検証。
測定したのは無線プロコンのみだけだが、同様の環境で有線コントローラーの応答速度がどうなるのかも検証したい。

ところで、過去の測定では「接続プロコンのみ・登録多数」という状態で応答速度が6.290Fだった。
本測定の「8台接続」とほぼ同じ値であることには何か関連があるかもしれない。


アダプター比較

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

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

結果
アダプター コントローラー 遅延平均 標準誤差 遅延平均[ms] 標準誤差[ms] 標準偏差[ms] 備考
GC 公式接続タップ GCコン 5.994 F ±0.017 F 99.903 0.288 5.658
CYBER GC接続タップ GCコン 6.278 F ±0.039 F 104.625 0.655 6.549
8bitGC GCコン 6.503 F ±0.025 F 108.375 0.414 7.170 測定200回
MAGIC-NS(赤) SwPro無線 7.158 F ±0.068 F 119.306 1.139 8.826 測定50回
MAGIC-NS(赤) WiiUPro 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回
MAGIC-NS(紫) WiiUPro 7.185 F ±0.081 F 119.750 1.350 9.546 測定50回
MAGIC-NS 有線 SwPro有線 7.600 F ±0.084 F 126.667 1.404 9.925 測定50回
8Bitワイヤレス WiiUPro 6.958 F ±0.040 F 115.958 0.663 6.628
GCコン接続タップ内では、純正品が最速であった。
無線SwitchプロコンをMAGIC-NS(赤)経由で認識させると、直接Switchに認識させるよりも0.7F遅い(紫だと0.8F)。
有線SwitchプロコンをMAGIC-NS経由で認識させると、直接Switchに認識させるよりも0.6F遅い。

WiiUではGCコンとWiiUプロコン(直接WiiUに認識)の差は約0.5Fだった。
SwitchにてMAGIC-NS(赤)を経由したWiiUプロコンで比較すると、差が約1Fに広がる。

MAGIC-NSと8Bitワイヤレスはほぼ同様の機能を持つワイヤレスアダプターであり、応答速度にも有意な違いは見られない。


USBポート・ハブ

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

GCコン接続タップは原則として黒・灰色の端子を両方接続した。
ただしGCコンを内部ポートに直接繋ぐときのみ、黒の端子*4のみを接続し、灰色の端子*5は接続しなかった。

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.970 F ±0.062 F 116.167 1.039 7.350 測定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回
USB3.0対応のハブは、応答速度にほぼ影響しないと言える。バスパワー・セルフパワーのタイプ差もない。
USB2.0対応のハブを経由すると応答が少し遅くなるように思われるが、統計的に有意と言うには測定回数が不足している。
接続箇所(内部・側面)では有意な差は見られない。


電力不足状態のUSB・プロコン

1つのUSBポートに対し、USBハブで大量の機器を接続した場合などには、給電量が不足して分岐先の一部の機器が反応しなくなる。*6
この状態にあるとき、同じハブ内の給電されているコントローラーの応答速度が影響を受けるのかどうかを調べた。
測定では、側面のUSBポート1つに対してタコ足配線でスピーカー・大量のコントローラーを接続し、電直不足状態を設計した。
計測対象は 有線接続のSwitchプロコン とし、充電池フル充電・一番目に認識させた状態で計測した。
他に接続するコントローラーは手持ちのものを適当に利用し、可能な限りSwitch本体に本体に認識させた。
合わせて、Switchプロコンの充電池を抜いた上で、ポートに直で有線接続した状態(電力不足ではない)での応答速度も計測した。

ちなみに、給電不足だからといって有線プロコンが勝手に無線接続に切り替わることはない。
+電力不足状態の設計詳細
  • ハブ1:ELECOM USB2.0 4ポート
    1. USBスピーカー
    2. CYBER無線USB接続
    3. PDPコントローラー
    4. USBハブ2
  • ハブ2:ELECOM USB3.0 4ポート
    1. Switchプロコン
    2. GCコン接続タップ(黒・灰2端子、GCコン3つ接続)
    3. USBハブ3
  • ハブ3:ELECOM USB2.0 4ポート
    1. HORI GC型コントローラー
    2. TNS-901
    3. PowerA有線
電力不足状態をより顕著に実現するという観点では、ハブ3にSwitchプロコンを接続するのが理想的だと思われる。
しかし、ハブ3に接続したところプロコンが全く認識されなかったため、ハブ2への接続で妥協した。
ハブ3に接続されているコントローラーは動作が非常に不安定で、全く認識されないこともあった。
また、新たにSwitchのコントローラー認識数を増やそうとすると、別のコントローラーの認識が切れることがあった。

結果
給電状態 遅延平均 標準誤差 遅延平均[ms] 標準誤差[ms] 標準偏差[ms] 備考
通常 6.908 F ±0.049 F 115.125 0.810 8.095
電力不足 7.108 F ±0.047 F 118.458 0.791 7.911
通常 6.870 F ±0.048 F 114.500 0.803 8.026 非純正ケーブル
電力不足 6.898 F ±0.044 F 114.958 0.732 7.318 非純正ケーブル
電池抜き 6.940 F ±0.045 F 115.667 0.757 7.573
電池抜きプロコンは、通常の有線接続プロコンとほぼ変わらない値を示した。

電力不足状態においては、応答が有意に遅延する場合があった。
ただし、電力不足でも接続状況によっては遅延しなかった。
今回の計測では、接続に使うUSB Type-Cケーブルを非純正品に変えた場合に遅延が発生しなくなった。
非純正ケーブルはCYBER無線タイプに付属していたもので、Switchプロコン付属の純正ケーブルよりも短い。
他の要素は特に変更していないことから、「短いケーブルは接続が安定している」という仮説が有力なように思われる。
純正ケーブルではプロコンを含めた同時接続数が4台だったが、非純正ケーブルでは7台だったことも記しておく。
(上記以上の台数を繋ごうとすると、プロコンの接続が切れた。接続位置やコントローラーの種類にも依存すると思われる)


GCコン接続タップの灰色端子/コントローラー接続数

GCコン接続タップには2つのUSB端子がある。
黒い端子がデータ転送用、灰色の端子が振動モーターの電源用となっており、黒端子のみを挿してもコントローラーは動作する。
ここでは、灰色端子を繋いだ時と繋がない時で応答速度に差が出るかどうかを比較した。
合わせて、接続タップに繋ぐコントローラーの個数も変えて検証した。
なおコントローラー所持数の事情で、4個接続の内訳は純正GCコン×2, ウェーブバードx1, GCコン類似品x1 とした。

結果
接続数 端子 遅延平均 標準誤差 遅延平均[ms] 標準誤差[ms] 標準偏差[ms] 備考
GCコン1個 黒+灰 5.950 F ±0.051 F 99.167 0.842 5.952 計測50回。改めて計測
GCコン1個 6.015 F ±0.044 F 100.250 0.730 5.162 計測50回
GCコン4個 黒+灰 6.015 F ±0.032 F 100.250 0.534 5.337 計測50回x2
GCコン4個 5.965 F ±0.034 F 99.417 0.566 5.662 計測50回x2
結果にはわずかに差があるが、統計的に ずれは誤差の範囲内 である。
灰色端子の有無、コントローラー接続数は応答速度に影響があるとは言えない。


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の入力遅延を比較した。
コントローラーはGCコン+純正タップ。
この検証のみ、異なるゲーミングモニター(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コン ≧ Swプロコン無線 ≧ GC型HORIコン = Joy-Con ≧ > Swプロコン有線
Switchプロコン有線は無線よりも0.7F、GCコンよりも1F遅く、シビアな対戦には向かない。

有線コン認識数が増加すると、無線プロコンの応答速度は遅くなる。
無線コン認識数が増加すると、より顕著に遅くなる。

GCコン接続タップは、純正品が最速。

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

USBハブによっては、2ms程度の遅延が発生する場合がある。
GCコン+公式接続タップの場合、速い順に
直接 > USB3.0セルフ ≧ USB3.0バス > USB2.0バス

ハブ内で給電量が不足している場合、コントローラーの応答速度が遅くなることがある。

GCコン接続タップは、灰色端子を繋がなくても応答速度は変わらない。
GCコンを繋ぐ個数も応答には影響しない。

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

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

生データ



計測詳細

+開く

使った機材


回路設計

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

LEDとコントローラーを並列に繋ぐ(回路図)。
LED側の抵抗はなくてもよい。

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


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

コントローラー側の抵抗R2は、コントローラーに応じて変更する。
適切な抵抗を使わないと、スイッチを入れてもボタンが反応しなかったり、全く別のボタンが押された扱いになったりする。
下表は正常な動作が確認できた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Ω
PDP 33 kΩ
PowerA有線 33 kΩ
PowerA無線 100 kΩ


撮影

回路のスイッチを押し、LEDが点灯してから画面が応答するまでを240fpsカメラで撮影する。
10回×10セット もしくは 5回×20セットで、計100回分のデータを取る。(一部データは5回×10セット)

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


映像解析

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

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

映像解析補正について
本検証では、計測結果の平均から2.5msを引いた値を応答速度の推定値としている。
これは以下の考慮に基づいた補正である。

スマブラでは垂直同期が有効であるため、画面は必ず上方から、1Fかけて画面下部まで切り替わる。
そのため理論上は、画面一番上のピクセルが変化する瞬間を画面の切り替わりのタイミングと設定するべきである。
しかしながら、ピカチュウの体の黄色い部分は画面縦方向1080pxのうち上部の約150pxには映らない(下図)。
よって、本記事の方法では画面上部約1/7に起こる変化を観測することが不可能である。
すなわち、画面の応答を約1/7フレーム分遅く見積もってしまうことになる。
1/7フレームをミリ秒に直すと、
16.667 / 7 ≒ 2.31 ms
である。実際には1pxの変化ではコマ送り時に気付けず、目視での判断はこれよりさらに遅くなるため、補正の値を-2.5msとした。

将来的にModなどが開発され、画面全体にエフェクトがかかるような設定ができれば、補正の必要が無い測定が可能になる。

携帯モード・テーブルモードの補正
携帯モード・テーブルモードの検証では、補正として3.0msを引いた。
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のカメラでも有意義な結果を出すことは可能 である。

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

このラグによる誤差の振れ幅を推定する(10回×10セットを想定)。
LEDは100回の点灯のたびにラグの値が一様ランダムに決まり、それらを均したものが誤差の振れ幅となる。
一方モニターについては、撮影1セットごと、計10回分の一様ランダムなラグを均すことになる*7
一様分布は 1/12*(b-a)^2 の分散を持つ。
本項の誤差幅は、一様分布100個(LED)もしくは10個(モニター)の重ね合わせの標準誤差と考えることができる。
重ね合わせに対し中心極限定理が適用できると仮定すれば、誤差幅は
LED撮影:± sqrt((1000/240)^2 /120) ms
モニター撮影:± sqrt((1000/240)^2 /12√10) ms
撮影合計: ~ ±0.69ms (誤差伝播則)
と見積もられる。これは他の要因による誤差に比べて非常に小さい。

1000fpsのカメラを使えば誤差を約1/4にできるが、 この検証方法ではそこまでの精度は必要ない と言える。
本記事の方法では画面を注視する必要があるため、ある程度の画質が保てる240fpsの方がかえって良いかもしれない。


ゲーム・モニターのフレームレート
ゲーム及びモニターの画面更新周期で生じる誤差。
影響は平均で+0.5Fで、測定回数を増やせばその振れ幅を小さくできる。

ボタン入力などの情報は、ゲームのフレームレートである1フレームの周期でしか画面に反映されない。
例えば、1.00~1.99フレームの間に届いた入力は全て2フレーム目の画面に表示される。
このように、任意のタイミングのボタン入力は、ゲーム機に届いてから画面に反映されるまで+0~1Fのラグが必ず発生する。
そのため、ゲーム画面を撮影orキャプチャして計測する場合、応答速度は系統的に+0.5フレーム遅く計測される

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

この誤差幅については、+0~1Fの一様分布が100回観測されることから、カメラのフレームレートと同様の議論で
モニター:± sqrt((1000/60)^2 /120) ~ ± 1.52 ms
となる。


コントローラーのサンプリングレート
コントローラーがボタン入力信号を受け付ける周期。
遅延の性質としてはゲーム・モニターのフレームレートと同種で、見かけ上はゲーム・モニターのフレームレートと区別できない。
特にサンプリングレートがゲームのフレームレートの整数倍である限り、
サンプリングレートによるラグはゲーム・モニターのフレームレートと一括りで考えて差し支えない。
例えばGCコンのサンプリングレートは120fpsで、ゲームのフレームレートのちょうど2倍である。
参考: スマブラDX対戦攻略指南 コントローラ入力のサンプリングレート


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

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

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


コントローラー・ゲーム機の特性
ハードウェアの処理・通信速度自体のバラつき。
他の外的要因を全て除いたときに残るのがこの誤差である。
とりわけ標準偏差が他と大きく異なる場合は、コントローラーの特性由来のばらつきだと考えてよい。
標準偏差が大きいコントローラーは、接続や処理が不安定な傾向にあると言える。

今回はAボタンしか使っていないので、同時押しやスティックを併用したときには処理にばらつきが出るかもしれない。
また無線コントローラーは、電波ノイズが強い環境では通信が不安定になる可能性がある。



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

(2019/2/8)
GCコンやSwitchプロコン有線でも、複数回の検証結果が95%信頼区間(2σ)を超えて乖離するケースが確認された。
一番差が開いている結果(50or100回の平均)は、GCコンでは0.1F程度、Switchプロコン有線では0.2F程度の差がある。
ちなみに、上述の無線コントローラーでは0.2~0.3F程度の差が認められる。
いずれも測定方法は特に変更していない。

(2019/6/15)
検定の結果によれば、GCコン・Switchプロコンに関しては有意と言えるほどの差ではない。
しかし、無線コンのデータ不一致に関しては統計的に差が認められるものもある。
誤差幅も本ページで解説した誤差要因で説明できる範囲をはるかに超えているため、他に何らかの原因があるものと思われる。


検定について

本ページにおける「統計的に」や「有意な」などという表現は、統計学的な分析に基づいている。
分析には標準誤差のほか、コルモゴロフ–スミルノフ検定(KS検定)を用いた。
KS検定は、「2つのデータがどのくらい似ているか」を"p値"として出力する。
p値は0から1の値を取る。通常、p値が0.05を下回れば、2つは十分に異なる(=性能に差がある)とみなされる。

※ここでは大雑把な説明にとどめています。

参考までに、いくつかの測定結果の組に対してKS検定を適用した結果を以下に掲載する。
下に行くほどp値が小さく、分布の異なり具合が大きい。
項目1 項目2 p値
GCコン1月 GCコン6月 0.8756
GCコン SwPro無線 0.8020
GC4台黒端子 GC4台黒灰端子 0.6766
CYBER無線 CYBER無線USB 0.3439
GCコン HORIコン 0.1703
SwPro無線 Joy-Con 0.0356
SwPro無線1月 SwPro無線6月 10^(-21)



おわりに

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

特に、この検証では「ボタンを押す」という物理的な動作にかかる時間を想定していない。
ボタンのゴムが高い・硬いならば、指でボタンを押してから実際に信号が送られるまでは時間がかかる。
GCコンのLR,Zボタンに関しては物理的な構造が普通のボタンとは異なるため、押下→入力までの時間も通常のボタン以上に長い。

現実にはボタンまで指を運ぶ動作もあるし、コントローラーのボタン位置に慣れていなければその分だけボタンを押すのは遅くなる。
数ミリ秒の応答速度のために手に馴染まないコントローラーを使うよりは、
使い慣れたコントローラーで操作したほうが総合的に反応が速くなるのは間違いない。
  1. 0.3Fくらいまでの入力遅延なら、ボタン配置や握り心地などの好みを優先してもいいように思う。


参考

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などの格闘ゲームが調査対象。
リンク:

ストⅤの入力遅延
ストリートファイターⅤでは「50秒の周期で入力遅延が4~7Fの間を推移する」という仕様が指摘されたことがある。
現在はアップデートで改善した。



コメント

  • コントローラー基板のきばんは基板ですよ基盤は日本語として間違ってます。基盤は物事の基礎となる部分 電子基板は基板 - 名無しさん (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)
    • 今の所購入する予定は無いのですが、入手できたら検証したいと思います。 - DRAFIX (2019-02-09 01:16:44)
  • 参考になりました! - 名無しさん (2019-02-06 14:37:09)