2018年1月21日日曜日

オプション-コントローラー設定

オプション-コントローラー設定

アスカ見参のコントローラー設定にはいろいろ問題があったため、コントローラー設定を追加しました。
コントローラー設定を有効にするとアスカ見参のパッド設定は無視される仕様です。
有効にしない場合でもパッド設定のいくつかの問題を改善しています。

改善されること

初めにこの設定により可能となることをまとめておきます。
コントローラー設定を使用せずとも有効となる機能。
  • 軸の初期化をすべての軸に対して行う
  • DI8DEVTYPE_1STPERSON のデバイスタイプにも対応
コントローラー設定で任意で有効にできる機能。
  • XInput(XBox360コントローラー)での入力に対応(LRトリガー同時押しに対応)
  • コントローラーが複数ある場合の優先度を設定可能
  • アスカ見参起動後に接続されたコントローラーを認識可能

軸の初期化をすべての軸に対して行う

X軸とY軸しか取得値の範囲の設定を行っていなかったが他の軸に対しても行うように修正されます。
これによりアスカ見参のパッド設定の「移動」を好きな操作系統を選択できるようになります。本来のアスカ見参の実装しようと思っていた仕様になったはずです。
POVも普通に選択可能になります。

DI8DEVTYPE_1STPERSON のデバイスタイプにも対応

かなりマイナーな対面型のアクションゲームデバイスに設定されているコントローラーがありますが、アスカ見参は検出していないようだったので検出するように修正されます。
PS3パッド用のメジャーな非公式ドライバがこのタイプになるようです。
非公式ドライバが使えるのかという問題は別にありますが。

XInputでの入力に対応

XBox360コントローラーと呼ばれるタイプのコントローラーのAPIに対応。
(このAPIで入力を読み取らないとLRトリガーの同時押しを検知できない)
XInputは最大4つ接続可能で#1~#4として認識されますが、どのコントローラーが#1かという情報を取得するAPIは提供されないので「XBox360コントローラー#1」などと表示します。接続状況により#1がどのコントローラーになるかは保証されない仕様なので、複数のXBox360コントローラーを使用されている場合が使えない場合は優先順を変更してみてください。
DirectInputとしても同時に検出されますが、こちらを使用するとLRトリガー同時押しが反応しません。

コントローラーが複数ある場合の優先度を設定可能

いつも使いたいコントローラーは決まっているが、それ以外のコントローラーを外さないと使えないことがあるので、優先順を決めれる仕様としました。

起動後に接続されたコントローラーを認識可能

多くのゲームは面倒なので起動時にしかコントローラーの検出を行わないので起動後に接続されたコントローラーは認識されません。アスカ見参もそうなのですが、コントローラー設定を使用すると起動後に接続されたコントローラーも自動で認識し、優先順次第でコントローラーが変わります。

このような仕様にした個人的理由

デスクトップPCは常にいくつかコントローラーが接続されているがその都度付け外しをしたくなかった。
GPD-WINの場合は、パッド部分はマウスかコントローラーか切り替える仕様なため、起動をマウス操作で行うと起動の瞬間はコントローラーが接続されていない状態となるため起動後に認識したかった。
わかりにくい仕様になっているかもですが、一度設定するとあまり変更する必要はないはずですのでご容赦願います。

方向指定のiDashについて

ドリームキャストのときにあったアナログコントローラーを倒すだけでiDashする仕様は、PC版でも設定できますが使用しづらいのでコントローラー設定では対応していません。
ボタン+方向のiDashは対応しています。

決定+取消し

このキー割り当ては本来存在しないものですので、標準仕様でプレイしたい場合は使用しないでください。
普通に決定+取消しを操作すると、ボタンを解除するたびに取消しを押した後のように方向指定の切り替えになったりしてしまいますので、純粋にターン経過だけできるようにカスタマイズが入っています。

1 件のコメント:

  1. こんにちは。お世話になっております。
    コントローラ―の事で質問させて下さい。
    自分はPS4のコントローラーをUSB接続で使用しております。
    PS4コントローラ―だとコントローラーのボタン配置変更が出来ません。
    また移動の際も十字キーを使用したいのですがこれも左パッドのみで対応できません。

    もし解決方法などございましたらお返事いただけると幸いです

    返信削除