純規の暇人趣味ブログ

手を突っ込んで足を洗う

DirectInput/Xinput両対応ゲームパッドJC-U3613M(BK)を買った

      HimaJyun

先日、ゲーム開発目的でXinputに対応したゲームパッド(コントローラ)が必要になる場面がありました。

と言う訳で、ELECOMのDirectInput/Xinput両対応と言う変態ゲームパッドJC-U3613Mを購入したのでご紹介しましょう。

事の発端

DirectXの勉強中、利用している本(入門ゲームプログラミング (Professional Game Developerシリーズ))に「Xinputを使用してゲームパッドからの入力を受け付けましょう」みたいな事が書かれてありました。

この瞬間、ふと脳裏に過る嫌な予感、こう言う時って大体当たるんですよねぇ……

そう、手持ちのゲームパッドがXinputに対応していないのです。

と言う訳で、「これでは先に進めない」状態に陥ってしまったので、急遽このゲームパッドを購入する事になりました(ここでXinputは後回しに先に進むタイプじゃないから勉強が出来ないのでしょう、きっと……)

購入した物

と言う訳で、購入したのはELECOMのDirectInput/Xinput両対応ゲームパッド、JC-U3613MBK

controller-jc-u3613m-001

DirectInput/Xinput両対応、なかなか気持ち悪い代物(褒め言葉)を作りますね。

読んで字の如く、略してヨンデジ、DirectInputとXinputの両方に対応していると言う珍しいタイプのゲームパッドです。(これらの違いは後で説明するとしましょう)

ざっと密林を歩き回った限り、DirectInput/Xinput両対応のゲームパッドはこの製品と、LOGICOOL ゲームパッド F310rの2種類しか見つけられませんでした

他にも「この製品も両対応だぜ」情報お持ちでしたら教えて下さい(はぁと

それでいてなおかつ、お値段もお手頃(2016/09/21の時点で1600円)、ゲーセンで遊ぶ音ゲーをちょっと我慢すれば捻出できる金額です。

個人的に左アナログスティックが十字キーの上に配置されているXbox配列は違和感しかないのですが、実際に使ってみるとそうでもないです。(どっちみち私の持つゲームでパッドを使うと言ったら東方しかありませんし、十字キーは使いませんけど……)

内容物

内容物は「本体」「説明書」「ドライバのディスク」、この基本的な3点セットです。
controller-jc-u3613m-002

とは言え、こんな物、説明書なんてなくたって使えるのですが……(一応細かく丁寧には書かれてありますよ、殆ど読みませんでしたが……

ドライバのインストール

至る所に「ゲームパッドをPCに接続する前にドライバをインストールして下さい!!」と書かれてありますが、そう書かれるとインストールもせずに接続したくなってしまうのが性と言う奴です。(あまり良い性格ではありませんね……)

と言う訳で、お手持ちのWindows10にぶっ刺した訳ですが……

結論から言うと「インストールしなくても動きました」

もちろん動かない環境もあるかも知れませんが……少なくとも、私のPCは刺しただけで認識して下さいました。

DirectInput/Xinputの両方でキチンと動作しています。

DirectInputとXinputの切り替え

さて、その「両対応」、密林内にどのように切り替えるか書いていなかったのですが……

下の画像の通り、本体後ろにX/Dと書かれたスイッチがあります。
controller-jc-u3613m-003

後ろ側にあるのは……回路か何か、大人の事情があったのでしょう。

個人的には「Guideボタン」の上辺りにあれば有難いのですが、設計上難しいんでしょうね、きっと。

X/D、読んで字の如く、XがXinput、DがDirectInputです。

え?さっさとDirectInputとXinputの違いを説明しろって?

DirectInput/Xinputの違い

DirectInputとXinputの違い、こんな物はそれらを実際に取り扱っているマ族(プログラの事を勝手にそう呼んでいる)でしか説明出来ないでしょう。

ゲーマーの方も、違いがあるのは分っていても、それらが実際にどう違うのか説明出来る方は少数かと思われます。

と言う訳で、自称マ族見習いの私が、その足りていない浅い知識で精一杯、復習の意を兼ねて説明してみるとしましょう。(もし、間違いにお気付きのマ族がいらっしゃいましたらマサカリを投げて下さい、腕が切れない限りは受け止めてみせます。

DirectInput

時系列的に「DirectInput->Xinput」なのでDirectInputから先に説明しましょう。

DirectInputは「マウス、キーボード、ゲームパッド、とにかく何にでも使える最強の機能」を目指していたみたいです。

主に以下の様な特徴があります。

  • (認識さえすれば)ほぼ大抵のゲームパッドはDirectInputから使える(対応しているデバイスが多い)
  • 使用する(される)デバイスの自由度が高い(ボタンの数、形状など)

ただ、強力な魔法に莫大な代償が伴うのは世の常でありまして……

それらは以下の様なデメリットを生み出しました

  • 初期化、利用が卒倒するくらいに面倒で使い方が複雑
  • ゲームパッド間の差異がある(ここ重要)

特に最後のポイントが非常に厄介です。

ゲームパッドからの入力は、DirectInputでは「1のボタン、2のボタン」などの「何番のボタン」と言う情報で送られてきます。

ただ、この「何番のボタン」と言うのは仕様では決まっておらず、ゲームパッドを製造するメーカが勝手に割り振って設定しています。

なので、例えば、Aゲームパッドで1番だったボタンが、Bゲームパッドでは2番になっているのかも知れないのです。

各メーカーもこの差異の事に気遣って、ある程度は同じ様な配列にしようと精一杯の努力はしているみたいですが、やはり多少の違いは生じてしまいます。

頑張って差異を吸収した挙句に、「うちのゲームパッド、LT/RTないんすけど?」とか「アケコンで操作するのクッソキツいんですけど?」とか言われちゃったらもう病むしかない。

そのため、多くのマ族が製品別の微妙な配列の違いにとても頭を悩ませていました。

Xinput

そこで現れたのがXinput、DirectInputの弱点を克服すべく現れました。

Xinputは以下の様な特徴を持ちます。

  • ボタンの配列が統一されている
  • 使い方が簡単

当たり前に見えるたったこれだけの事ですが、とても重要な事です。

特にボタン配列の統一はありがたいでしょう、DirectInput時代は「1番のボタン」として送られてきていた情報が、Xinputからは「Aボタン、Bボタン」などと、きちんと「どのボタンか」と言う情報で送られてくるようになりました。

そして、当然ながらゲームパッド側で「Aのボタン」と書かれてあるものを押せばXinputからも「Aのボタン」として認識出来ます。

使い方(プログラムからの呼び出し方)も簡単になっており、DirectInput時代では手間でしかなかったゲームパッドのバイブレーション機能がXinputでは簡単に利用出来ます。

その代わり、代償としていくばくかの犠牲も支払ってはいます、デメリットは以下の通り

  • ゲームパッドがXinputに対応している必要がある
  • 使用する(される)デバイスの自由度は制限されてしまう

主に自由度を代償に支払った訳ではありますが、多くのユーザが利用してるタイプのゲームパッドでこれが問題になる事は少ないでしょう。(所謂アケコンのXinput対応がどうなるのかは知りませんが……)

Xinputに対応する必要がある問題も、最近は対応ゲームパッドも増えたので問題ではなくなって来ました、今回の様な両対応製品などはゲームパッドが使えるゲームであれば殆ど全てで利用出来ます。

もちろん、DirectInput、Xinput両対応のゲームを開発、と言うのも可能ではあります、めんどくさいので勘弁して欲しいのが本音ですけどね……w

ちなみにですが、Xinputでは、LT/RT(L2/R2やZL/ZRとも言う)が「押されているか/押されていないか」の二択ではなく、「どれくらい押し込んでいるか」として入力されるのが面白いですね。

ただ、それを効果的に利用出来そうなパターンは残念ながら私のスカスカ頭では思い浮かびませんが……

終わりに

と言う訳で、最後の方はただのDirectInput/Xinputの仕様の違い解説になってしまいましたが、今回購入したゲームパッドは値段の割に汎用性も高くて良く出来ていると思います。

特にゲーム開発を行う方、いくら「Xinputが良いんだ!!」と言っても、泣く泣くDirectInputに対応せざるを得ない状況は無きにしも非ずでしょう。

この様な両対応製品を1つ持っておけば、勉強の時に余計な足止めも食らわずに済みます。

もちろん、普通にゲームに使う分にも、両対応だと幅広く使えて便利ですよ。

 - ゲーム ,