21

ブラウザー内で HTML5 Gamepad API を使用して、4 つのコントローラーから入力を正しく取得できます。

https://www.w3.org/TR/gamepad/

私が問題を抱えているのは、8つのコントローラーからの入力です。これらはすべて Xbox 360 コントローラーであり、XInput API には従来の制限があることを知っています。しかし、上記の HTML5 API ドキュメントを見ても、制限や API の実装方法について言及しているものは見当たりません。

navigator.getGamepads();Chrome と Edge では 4 つの未定義スポットの配列が返され、FireFox では未指定の配列が返されるようですが、まだ 4 の制限に達しているようです。

Windows 10 は、[デバイス] パネルに 8 つのコントローラーが接続されていることを確認し、すべてがブラウザー内で最大 4 つのゲームパッドで個別に動作することを確認できます。だから私はなぜゲームパッド API がここで私を制限しているのか疑問に思っています - それはゲームパッド API または XInput の設計によるものですか?

8台のコントローラーを接続

4

4 に答える 4

13

わかりました、私はいくつかの広範な調査とテストを行い、これに答えることにある程度の自信を持っています.

上記のリンクされたドキュメントでわかるように、ゲームパッド API 仕様ではコントローラーの制限が定義されていません。

実際には、以下をnavigator.getGamepads()返します。

  • Chrome では、 4 つのオブジェクトGamepadListで満たされた 4 つの未定義の値の.Gamepad
  • (レガシー) Edge では、4 つのオブジェクトで満たされた 4 つの未定義の値のオブジェクト配列Gamepad
  • GamepadFirefox では、任意の数のオブジェクトで満たされた長さゼロの配列。

XInput は、実装に影響を与える可能性がある以外に、犯人ではないようです。Firefox では、他のブラウザーではすべてが認識されなかった 4 つを超える入力を混在させることができたためです。

これは、Chrome と Edge の背後にあるエンジン側の不適切な実装に起因する可能性があると思います。彼らが光を見て、Firefox が実装を柔軟に保つことを願うばかりです。理想的には、基準が法律を明確に定めています。

于 2016-12-21T02:36:24.010 に答える