Pyxelでゲームパッド入力させるときに気をつけること(A/Bボタンの配置が逆?!)
レトロゲームエンジンPyxelには "pyxel.GAMEPAD1_BUTTON_A" のように、ゲームパッドからの操作を受け付ける機能があります。便利便利。
ですが、1点気をつけるべきことがあります。それは「ゲームパッドの種類によってはA/Bボタンの(X/Yボタンも)配置が逆になる」という点です。
まず、以下はNintendo製のコントローラ例。Aボタンが右に配置されています。ほか、Sonyのプレステのコントローラの◯ボタンも右配置ですね。
日本のゲームプレイヤーはこの配置に慣れていることが多いはず。

Nintendo製のコントローラの例
一方、Microsoftのゲームパッドだと以下のように、Aボタンが下に配置されています。
どうやら海外の(といっても国によると思いますが、アメリカなどの)プレイヤーとしてはこちらのほうが標準形のようです。

んで、Pyxelの "pyxel.GAMEPAD1_BUTTON_A" なのですが、国際標準を意識しているためか、下に配置されたボタンをAボタンと認識するようです。
つまり Pyxelで "pyxel.GAMEPAD1_BUTTON_A" ボタンを決定やジャンプの用途でコーディングした場合、Nintendoなどのゲームパッドを使っている人がプレイすると、「Bボタンで決定やジャンプ」という操作になってしまいます。
「右側の下ボタンでxxの操作」と説明していれば間違いにはならないのですが、「Aボタンでxxの操作」と説明していたり、慣例的にAボタンの操作が自然な機能に "pyxel.GAMEPAD1_BUTTON_A" を割り当てたりしていると「あれ、逆じゃね?」と一部のプレイヤーに思われてしまうので注意です。
開発側の対策は?
2つあると思います。
コンフィグ画面を用意して、下側Aボタンと右側Aボタン両方に対応できるようにする
最初にAボタンを押させて、それが右側ボタン(pyxel.GAMEPAD1_BUTTON_B)だったら、以降は右側ボタンをAボタンとして扱う。
2ですが、たとえばゲームの起動直後に以下のような画面になっていたら、プレイヤーは自分のゲームパッドでの「A」ボタンを押すはずなので、プレイヤーに意識させずに解決できるというわけですね。

自分の持っているコントローラー次第では気付きにくい問題なので、お気をつけくださいませ!
