仕組み
コントローラーがブラウザーに報告する内容をすべてリアルタイムで表示します。各ボタンのアナログ値と押した回数、満たされていくバーで表したトリガー、2 本のスティックの正確な位置と軌跡の記録を確認できます。Xbox、PlayStation、Nintendo のコントローラーのほか、システムが認識する USB / Bluetooth のゲームパッド、ハンドル、フライトスティックにも使えます。
使い込んだコントローラーで最も多い不具合は、スティックを放しても中央に戻らないドリフトと、ボタンが反応しなくなる、またはチャタリングを起こす問題です。スティックが静止しているとき、中心からの距離は 0 に近いはずです。また、スティックを端に沿って回して行う真円度テストでは、可動範囲がすべての方向で均等に届いているかどうかも測定します。
例
axes[0] = 0.0784 · axes[1] = -0.1137r = 0.138触れていないのにスティックが中心からこの距離にある場合、ドリフトしています。デッドゾーンの小さいゲームでは、カメラやキャラクターが勝手に動きます。XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE = 78497849 / 32767 ≈ 0.24これは Microsoft が XInput で左スティックに推奨しているデッドゾーンです。この値より小さいドリフトは、デッドゾーンを使うゲームでは気になりませんが、精度を上げるためにデッドゾーンを狭めているゲームでは影響が出ます。buttons[7].value = 0.42RT · R2 · ZR → 42 %Xbox と PlayStation のトリガーはアナログで、どれだけ押し込んだかを報告します。Nintendo の Pro Controller の ZL と ZR はデジタルで、0 から 1 に切り替わるだけです。ユースケース
- 保証を請求する前、モジュールを交換する前、中古のコントローラーを買う前に、スティックにドリフトがないか確認する。
- 修理したコントローラーや掃除したばかりのコントローラーのボタンを 1 つずつ確認し、カウンターでダブルクリックのような二重入力を検出する。
- ゲームを起動する前に、Bluetooth コントローラーが正しくペアリングされ、システムに認識されていることを確認する。
- ハンドル、アーケードスティック、フライトスティックが報告するボタン番号と軸番号を調べ、エミュレーターで設定する。
- 振動モーターが動作することをテストする。
よくある質問
コントローラーが表示されないのはなぜですか?
プライバシー保護のため、ブラウザーは、ページが開かれて前面に表示されている状態でボタンが押されるまで、コントローラーを一切表示しません。それでも表示されない場合は、システムがコントローラーを認識しているか確認してください。Windows では joy.cpl を実行するとゲームデバイスを開けます。Steam、DS4Windows、reWASD などのプログラムは、元のコントローラーを隠して仮想コントローラーを代わりに表示することがあります。
スティックにドリフトがあるかどうかは、どう判断すればよいですか?
スティックを放して、中心からの距離である r の値を確認してください。正常なスティックは数百分の一程度に収まります。触れていないのに 0.1 を超える場合や、点が勝手に動く場合はドリフトです。スティックを端まで倒して放す操作を何度か繰り返し、毎回違う位置に戻るなら、スプリングまたはポテンショメーターが摩耗しています。
真円度の誤差は何を測っているのですか?
スティックを端に沿って回すと、ツールは 36 方向それぞれで到達した最も遠い点を記録し、それらが完全な円から平均してどれだけずれているかを計算します。値が大きい場合、一部の方向でスティックが最大値まで届いていないか、最大値を超えています。コントローラーによっては斜め方向を意図的に広げているため、結論を出す前に同じモデルのコントローラー同士で比較することをおすすめします。
マッピングが非標準とはどういう意味ですか?
ブラウザーは一般的なコントローラーの配置を把握しており、どれも同じボタン順で提示するため、図を描画できます。モデルを認識できない場合は、デバイスが報告する順序のままボタンと軸を渡します。動作はしますが、名前は付きません。別のブラウザーを使う、あるいは Bluetooth ではなく USB で接続するなど、接続方法を変えると、同じコントローラーが認識されることもあります。
振動のボタンが表示されないのはなぜですか?
ブラウザーがそのコントローラーの振動に対応している場合にのみ表示されます。Chrome と Edge は、ほとんどの Xbox や PlayStation のコントローラーで振動に対応しています。それ以外のブラウザー、一部の Bluetooth 接続、多くの汎用コントローラーでは、モーターを搭載していても振動機能が公開されません。
コントローラーの遅延やポーリングレートは測定できますか?
正確には測定できません。ブラウザーはコントローラーが変化するたびに通知するわけではなく、ページが画面の描画フレームごとに 1 回状態を問い合わせます。そのため、モニターのリフレッシュレートを超える頻度の変化は検出できません。実際のポーリングレートを測るには、デバイスを直接読み取るツールが必要です。