読者です 読者をやめる 読者になる 読者になる

ゲーム諸説

自分の中で諸説が飛び交っているゲームの話

XInputのありがたみ

入力・出力

数年前からゲームパッドはXInput対応じゃないと動かない、もしくは遊びずらいゲームが増えていて、それでXBOX360のパッドを買っていたのだけど、この動きはどんどん加速している。

UnrealEngine4もそうだし、RPGツクールMVでもXInput専用になった。

XInput以前はDirectInputという方式を使うものが主流で、それで問題なく遊べていたのに、なぜXInputに移行する必要があるのか?

XInputはDirectInputよりシンプルな設計になっている。

例えばボタンの数。これがDirectInputだと128個まで対応しているのに、XInputは10個。XInputはXBOX360のコントローラーのために設計されたもので、360のコントローラには10個しかボタンがないから、10個という仕様になっている。

10個の内訳も決まっていて、A・B・C・D・LB・RB・BACK・START・左スティック押し込み・右スティック押し込み。もっとボタンの数が多いコントローラーがXInputに対応しようとすると、いくつか使えないボタンが出るということになる。

ボタン以外にもスティックの数などDirectInputの限界値よりも全体的に少なくなっている。ただDirectInputの場合、もっとボタンが少ないコントローラーもあった。一番少ないものは多分十字キーと2つのボタンという形のもの。最近はそこまで少ない物は売ってないけど、8ボタンぐらいの物や、アナログスティックが付いていない物はある。

結果として、ボタンが足りなくても遊べるようにとか、コンフィグで沢山のボタンの中から使いたいボタンを選べるようにとか、色んなことを考えないといけなくなる。実際問題として、DirectInputでアナログスティックと十字キーが付いているタイプの場合、DirectInputの仕様上はどちらも自由に使えるけど、両方に正しく対応してたり、切り替えが出来るゲームは少なかった。仕様上の限界までやってもほとんど無駄になるし、パッドの種類が多すぎて動作確認も難しいため。

決定ボタン1つとっても、DirectInputのゲームはバラバラ。内部的にはボタン1、ボタン2と数字が振ってあるけど、ボタン1がどこにあるかという規定はない。対戦格闘ゲームがブームの頃は表面に6つボタンがあるセガサターンタイプが人気だったし、3D人気が出てからは右スティックが必須になって表面には4ボタンしか置けなくなったけど、その中でもボタン1がどこにあるかというのがまたバラバラだった。

ゲーム中の説明にボタン1で攻撃などと書いてみても、ボタン1かどうかボタン表面に書いてない場合はさっぱりわからない。LボタンとRボタンがあっても、それが何ボタンなのかはパッド次第だし、LやRらしい場所にあるとは限らない。

その点XInput専用ということにすると、XBOX360以上のボタン数も、以下のボタン数も想定しなくて良くなるという大きな利点がある。

ボタン数だけでなく配置も特定出来る。説明にLBボタンと書いてあれば、LBボタンを押せばいいわけで、簡単明瞭。決定ボタンもAボタンで、Aボタンを押して下さいと書けるようになる。実に素晴らしい。

ゲーム専用機だとこういったことは当たり前だけど、それがパソコンゲームだと今まで出来ていなかった。統一規格ができるのならそれは別にXInputでなくても良かったけど、他に普及しそうな規格があるわけでもなく、現状ではXInputがベストの選択肢だと思う。

問題はDirectInput専用のパッドが使えないこと。安くてもXInputの規格に対応したゲームパッドは出ているので、必ずしも360パッドでなくても良くなったけど、使い慣れた物が使えないのは痛い。それに特殊な形状の物はXInput用の代替品がない。変換器などを通せば使える事もあるようだけど、ボタン配置が同じだというXInputのメリットはなくなる。

それでもXInput移行によるメリットは大きい。ようやくまともにゲームが出来る環境になってきた。同じゲームなのに家庭用ゲーム機だとパッド操作で遊べるのに、PC版では出来ないといったことが今後はなくなってくると思う。対応の仕方がゲーム機と同じになるから、わざわざ使えないようにする方がめんどくさくなる。

普及率という点ではDirectInputの方がまだまだ上なので、DirectInputと両方に対応出来るようにするというケースもあるけど、あくまでXInputが基準で、DirectInput側のボタンを設定で合わせるという感じになって欲しい。折角の統一規格を、ただ2通りの入力方法があるというだけで済ますのは勿体ない。