latest log

酩酊状態で書いたエンジニアポエムです。酩酊状態で読んでください。

ゲームパッドをブラウザで使える GamePad API の実装が始まりましたね

Firefox Nightly と Chrome Dev に GamePad API が実装されているようです。

API: http://dvcs.w3.org/hg/webevents/raw-file/default/gamepad.html
DEMO: http://rawkes.com/blog/2011/12/14/gamepad-api-demo-in-firefox-and-chrome

if (navigator.gamepads) {
    window.addEventListener("gamepadconnected", connected, false);
    window.addEventListener("gamepaddisconnected", disconnected, false);

    // 仕様と実装が安定するまで Firefox では 
    //  "MozGamepadConnected" と
    //  "MozGamepadDisconnected" を使うようです
}

function connected(evt) {
    var gamepad   = evt.gamepad,
        id        = gamepad.id,
        axes      = gamepad.axes,
        index     = gamepad.index,     
        buttons   = gamepad.buttons,
        timestamp = gamepad.timestamp;

/*
    id - IdentString: パッド名や製品名など
    axes - RangeNumberArray: [axis:Number, ...]
                             Axis情報の配列
                             -1.0 から 1.0 の値を取る
                             -1.0 が up または left
    index - Number: ブラウザに接続されているパッドのインデックス(0~)
                    何個まで繋げられるかは不明
    buttons - RangeNumberArray: パッドの全ボタンの押下情報(0.0~1.0)
                                押されていなければ0.0
    timestamp - Number: axes または buttons が更新された時刻(ms)。
                        前回からの差分 
 */

}
function disconnected(evt) {
}


2012年の前半頃には一般にも公開され、
ブラウザゲームをよりリッチにしてくれそうです。

そろそろ、何を作るか考えておいたほうがよさそうですね。

おっと

"gamepad.buttons に格納されるボタンの順番は優先順" と仕様にありますが、
実際のボタンの順番と API から取れてくる順番の違いはユーザにはわからないので、
それらを可視化する表示や設定画面が必要そうですね。