Help us understand the problem. What is going on with this article?

Chrome for AndroidでのGamepad APIのレイアウトマッピング

More than 5 years have passed since last update.

ちょっと手元にBluetoothなゲームパッドが3つほど揃ったので、Chrome for AndroidのGamepad APIでどれだけ使えそうか確認してみた。

W3CのGamepad APIの仕様とかはこの辺に
https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html

テスト環境とかデバイス

ゲームパッド

米国滞在中なので、米国で入手できるもの。
Red Samuraiとかは、GameStopで店員さんに「Androidで使えるやつくれ」って言って一番安かった($12)やつ。

端末

Nexus 5
Android 5.0
Chrome for Android 39.0.2171.59

確認方法

確認は、面倒だったので、こちらのテスターを使いました。
http://www.html5rocks.com/en/tutorials/doodles/gamepad/gamepad-tester/tester.html

比較用のレイアウトについて

今のところ、Standardレイアウトしかサポートされていないので、これとの対比で見ていきます。

w3c_gamepad.png

確認結果

青字はStandardレイアウトと合致しているもの、赤字は問題あるもの。

Nexus Player 用ゲームパッド

asus_gamepad.png

Google謹製(端から見たらFire TVにブチギレて作ったように見える)のNexux Playerと同時に発売された、専用のゲームパッド。メーカーは安定と信頼のASUS。
出自から考えて、今回一番期待してたけど、他と似たようなもの。。。(こいつのせいじゃないけど)

Gamepad API経由で取れるものでは、L2, R2, Jog X-Yはアナログ入力、他は全部デジタル入力。

Red Samurai Tablet Wireless Game Controller

gamestop_redsamuarai.png

ゲームショップ"GameStop"のプライベートブランドの商品。商品ページからしてだいぶSAMURAI!!!な感じ。
Gamepad API経由で取れるものでは、Jog X-Yはアナログ入力、他は全部デジタル入力。

Amazon Fire TV Game Controller

amazon_file_tv_gamepad.png

2014前半にひっそりと発売された、Amazon Fire TVの専用ゲームパッド。
Amazon Fire TV自体が、自前のビデオサービスのコンソールという役割と同じくらい、ゲームコンソールという側面をかなり推してた。ゲームクリエイター向けのworkshopもSFで行ってた。

今回の中では唯一のXBOX/Dreamcast配置。

まとめ

Chrome for Androidにおいては、Gamepad APIの対応は現状(2014年12月)ではまだまだ微妙です。
安定して使えそうなのは、A,B,X,Y(Button0..3)と、L-Jog Stick(axes0..1, Button10)です。

取れているけどレイアウトが違う、とかだとまだアプリケーション側で対応できますが、そもそも取れてこないのがとても痛い。特にD-Pad。
L-Jog Stickが取れてるからまだFPS系なら・・・という儚い希望も、L2、R2の絶望的な状況で砕かれます。

まだAPI自体がDraftなので、今後徐々に対応してくれるものとおもいますが、WebでGamepadが使えるようになってうれしそうなのはモバイルなので、倍プッシュで対応してほしいなぁ。と。

ちなみに、自分のコードで直接確認する場合は、PCのChromeからリモートデバッグをやって、navigator.getGamepads()してやると、以下のように取れます。

Developer_Tools_-_gamepad_api.png

ちゃんとOSでの認識順の通り、ゲームパッドが配列でとれてますね。

W3Cの仕様書だけだと想像ができない私のようなボンクラにはこちらがおすすめ。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away