見出し画像

Pyxelでゲームパッド入力させるときに気をつけること(A/Bボタンの配置が逆?!)

レトロゲームエンジンPyxelには "pyxel.GAMEPAD1_BUTTON_A" のように、ゲームパッドからの操作を受け付ける機能があります。便利便利。

ですが、1点気をつけるべきことがあります。それは「ゲームパッドの種類によってはA/Bボタンの(X/Yボタンも)配置が逆になる」という点です。

まず、以下はNintendo製のコントローラ例。Aボタンが右に配置されています。ほか、Sonyのプレステのコントローラの◯ボタンも右配置ですね。

日本のゲームプレイヤーはこの配置に慣れていることが多いはず。


Nintendo製のコントローラの例

一方、Microsoftのゲームパッドだと以下のように、Aボタンが下に配置されています。

どうやら海外の(といっても国によると思いますが、アメリカなどの)プレイヤーとしてはこちらのほうが標準形のようです。

Microsoft製のコントローラの例

んで、Pyxelの "pyxel.GAMEPAD1_BUTTON_A" なのですが、国際標準を意識しているためか、下に配置されたボタンをAボタンと認識するようです。

つまり Pyxelで "pyxel.GAMEPAD1_BUTTON_A" ボタンを決定やジャンプの用途でコーディングした場合、Nintendoなどのゲームパッドを使っている人がプレイすると、「Bボタンで決定やジャンプ」という操作になってしまいます。

「右側の下ボタンでxxの操作」と説明していれば間違いにはならないのですが、「Aボタンでxxの操作」と説明していたり、慣例的にAボタンの操作が自然な機能に "pyxel.GAMEPAD1_BUTTON_A" を割り当てたりしていると「あれ、逆じゃね?」と一部のプレイヤーに思われてしまうので注意です。

ちなみに私が気づいたのは、こちらの動画を発見したことがきっかけ。
ゲーム配信者の方がPyxel版ドラクエ1をプレイしてくださっていて、わーいありがとう!と喜んで観てたのですが、どうやらABボタンが逆でめちゃくちゃ操作しづらいらしいのです。
なんで??と思って調べたら上記の事情だと判明した次第でした。事前調査不足で申し訳なかったです。。 そして気づかせていただき二重にありがとうございました。

開発側の対策は?

2つあると思います。

  1. コンフィグ画面を用意して、下側Aボタンと右側Aボタン両方に対応できるようにする

  2. 最初にAボタンを押させて、それが右側ボタン(pyxel.GAMEPAD1_BUTTON_B)だったら、以降は右側ボタンをAボタンとして扱う。

Pyxel版ドラクエ1では上記の2の方法でパッチをあてました。
読み込み直後の画面でAボタンを押すようにうながしておいて(というか、何も考えずに押すでしょうけど)、入力されたボタンに応じてAボタンとBボタンを逆にしています。

いやーびっくりしました。
同じことをやらかさないよう、この記事がどなたかのお役に立てれば幸いです!

いいなと思ったら応援しよう!