こんな投稿をした。
元々キーマウでの操作を想定してたけど、なんとなくゲームパッド対応したほうがいいんだろうな〜という感じで手を出してみたら思いの外沼ったのでこれから対応する際はよく検討してほしい。
ゲームパッド対応するとは?
とりあえず手元にあるPS5とかSwitchのコントローラーで動けばいいんでしょ?と思っていたが考えが激甘だった。
ひとえにゲームパッド対応といっても実装すべき機能は多岐にわたる。
- 入力ボタンの数や配置がある程度仕様として決まっているXInput方式、その他ボタンの位置が異なったりそもそもあったりなかったり有象無象のDirectInput方式に対応する必要(UnityではGamepadとJoystick)
- XInput方式といってもボタンの名称がコントローラー毎に異なるのでコントローラー特定する必要(〇✕△□、ABXY、BAXY、L2LZ等)
- 今までマウスで操作してたUIのカーソル対応
- キーマウとコントローラーの切り替え対応
- デバイス毎のキーコンフィグ
- 利用中デバイスやキーコンフィグに応じたボタンのガイド表示
- 見栄えのためにもキーコンで設定したボタンがアイコンでガイド表示されると良い
見通しが甘いとこうなる
筆者は家にXInput方式のデバイスしかないからそれで動けばいいやーと考えて開発を進めることにしたが、以下のような問題でズルズルと沼っていくことになる。
- 実機がないのでDirectInput方式をサポートしない→汎用的なXInput方式とキーマウのみにする
- けどガイド表示するにはコントローラーの機種を特定する必要があるよね?どこまでサポートするの?(Xbox, DualShock, Proコン, その他)
- 新しいコントローラー出たらサポートするの?
- キーボードのキーコンもすることになるけどアイコン用意するの?
- てことは想定される全てのボタンの名称とアイコンいるくね…?
- 想定外のキー入力があった場合はテキストで表示するの?
- いっそのことコントローラーの特定は諦めてテキスト表示だけにする?けどそうするとSouthButtonとかどういう名称にすべきなの?
- なんか考えること多スンギ…
じゃあゲーム開発初期に実装すれば良かったのかというと、ゲームの本質には関わらない割にここまでのボリュームがある機能を初めから作ってモチベーションが保てるか?と冷静に考えてみるとかなり難しい気もする。
やると良いという情報は巷に溢れかえっているけど、やるなという情報はほとんど誰も教えてくれないので記事にした。
以上、良く考えてから採用しよう。