Windows 10でゲーム・コントローラを使用する場合、2種類のAPIのいずれかが適用される。DirectInputと、XInputだ。
Windowsコントローラとして販売されているものの中には、他社ゲーム機との互換性を有するものがある。PlayStationとの互換性が明記されていながら、Xboxとの互換性が併記されていない場合、そのコントローラはDirectInputにだけ対応している可能性が高い。
PCゲーム用のコントローラを選ぶ場合、両方に対応しているものを選ぶのが理想的だが、どちらか一方であればXInput対応コントローラを選ぶのが安全だ。制約付きながら、XInputコントローラは、DirectInputでも動作する。
偶然にも面白い仕掛けのコントローラを見つけた。USBで接続するとXInput、Bluetoothで接続するとDirectInputで動作するコントローラだ。
今回の投稿では、このコントローラの紹介と合わせて、XInputの制約を説明する。
XInputとDirectInput
両者の特徴的な違いをまとめると、次のようになる。
Direct Input | 古い | DirectX | Sony PlayStation Nintendo Switch |
|
XInput | 新しい | Xbox 360 | Windows Storeアプリ対応 |
DirectInputはDirectXに含まれるAPIで、Windows環境では標準的に用いられる技術だ。PlayStationやNintendo Switchのコントローラ、その互換製品をWindowsで用いる場合にも、DirectInputで動作する。
XInputはXbox系統のAPIで、Windowsでの新標準でもある。コントローラをWindowsに接続した際、Xboxコントローラとして認識された場合は、こちらの技術で動作している。一般的なコントローラ・アイコンとして認識されている場合は、DirectInputだ。
どちらも一般的なWindowsゲームで利用される技術ではあるのだが、Windows Storeアプリとして提供されているゲームでは、DirectInputで動作するコントローラを使用することはできない。
Steamのように、ソフトウェアで両方に対応している場合もあるのだが、これは例外的な事例だ。
DirectInputにおける、XInputコントローラの制約
XInputコントローラはDirectInputにも対応しているので、古いゲームの操作用に用いることもできる。ただし制約付きだ。具体的には、
- 単一系統での左右トリガー・ボタン(L下、R下)入力
- バイブレーションが動作しない可能性
- コントローラ経由の音声入出力(イヤホン、ヘッドセット)が動作しない可能性
1の詳細は、コントローラの紹介で触れる。
面白い仕掛けのコントローラ
今回紹介するコントローラがこれだ。意図的なのか、誤りなのか分からないが、Amazonの商品説明は、実際の動作とは異なっている。次のように機能する。Bluetooth接続時
L下 | ボタン7 | X Rotation |
R下 | ボタン8 | Y Rotation |
右スティック(横) | Z axis | |
右スティック(縦) | Z Rotation |
USB接続時
L下 | Z axis |
R下 | Z axis |
右スティック(横) | X Rotation |
右スティック(縦) | Y Rotation |
「DirectInputにおける、XInputコントローラの制約」で触れた制約、「単一系統での左右トリガー・ボタン(L下、R下)入力」がZ軸操作に反映されているのが分かる。例えば、左トリガーでズームイン、右トリガーでズームアウト、といった奥行き操作に該当する。
またDirectInputでは対応可能だったZ軸回転は、このコントローラでは対応することができないことも分かる。