本blogはGoogle AdSenseおよび各種アフィリエイト広告を含みます

reWASD Tips(未満): トグルの押し状態を別のボタンから解除することは現状できない

年末にGPD WIN MAX 2を買いました。当blogでは2年ほど前にWIN MAXはノートPCの正常と引き換えにポータブルゲーム機として異常になった機械だというような感想を上げており、MAX 2はその路線を更に推し進めてしまったPCですが、詳しい話はいずれ書きます。

今回はそのGPD WIN MAX 2でキーリマップソフトreWASDをいじっている時に気付いた話です。

はじめに

reWASDではコントローラーなど各種入力機器の、アクティベーター(ユーザー操作イベント)毎にアクションを割り当てて動作をカスタムできます。特に有償の追加機能によって、連射やトグル、コンボシーケンスなど幅広い操作の割り当てが可能です。

トグルやトグル連射、コンボシーケンス、付け加えればシフトモードなどの機能は、言ってみればコントローラーに状態遷移を追加しているようなものです。

その状態に関して、割り当てた論理コントローラーボタンの状態が外的要因で上書きされることは原則として無いらしいという話が今回の主旨です。

分かりにくい話なので例を挙げて説明してみたいと思いますが、その前に。

Using Combo, Turbo and Toggle buttons may be considered as cheating in competitive games. reWASD doesn't promote any way of cheating and asks you to share our values about the fair play.

(コンボ、ターボ、トグルボタンの使用は、競技性ゲームにおいてチート行為と見なされる可能性があります。reWASD はいかなるチート行為も支援するものではなく、私たちとフェアプレーの精神を分かち合うことを求めます。)

一応これは貼っておきましょう(「リマインダー→チートマッピングと推定されるコンフィグの適用について知らせる」は初期状態でオンになっています)。この記事は競技性ゲームでの必要以上の設定を推奨するものではありません。

例1: トグルは他のボタンやシフト遷移ではキャンセルできない

例として地球防衛軍5(EARTH DEFENCE FORCE 5)、レンジャーのダッシュ操作を「LS(Lスティック)押しっぱなしで走る」から「LSを押すと走る、もう一度押すと止まる」というトグルに近付けるような設定を考えてみます。

まず、LS押しをトグルに変更。単純にはこれでいいです。

ただゲーム中、ダッシュはLS離しだけでなく被ダメージやローリング(LT)でも解除されます。前者はともかく後者はプレイヤー操作なので、LTで一息にLSのトグルも解除したいところですね。

試しにLTの「押し始め」にLSを足して、LTとLSが同時に押され(そして離され)るようにしますが、ダッシュ中にLTを押してもスティック側のトグルは解除されません。コンボシーケンスに変えてLT・LSを押させてもムダです。

シフトレイヤーを増やし、LSのトグルONと同時にレイヤー2(DashMode)に移行し、LTでローリングと同時にレイヤー1(Normal)に戻る設定を組んでみますが、これもダメ。シフトとトグルを同時に発生させることはできても、シフトを変えればトグルが連動して変わるというものではありません。

つまり、「トグル」モードでの論理ボタンの押し状態は他と重なっても生き続けており、他のボタンマッピングからの押し離しやシフトレイヤーの移動では解除されないということが分かってきます。トグルを解除するためには、同じアクティベーター(物理ボタン操作)をもう一度発生させる以外には無いわけです。

例2: コンボシーケンスに対する中断や上書きはできない

コンボ機能にも似たようなことが言えます。

たとえば10秒間同じボタン(LS)を押し続けるコンボを設定してみたとして、それは他のマッピングでLSの押し離しがあろうが、シフトレイヤーの移動があろうが、同じコンボを後出しで実行しようが、始まってしまった「10秒押す」コンボシーケンスは影響を受けません。コンボの実行終了後、改めて同じボタンの操作に応じて再びコンボが実行されることになります。

  • コンボ中のボタン長押しは、他のマッピングからの押し/離しの影響を受けない
  • 一つのボタンに割り当てられたコンボアクションは先勝ちであり、同じボタンを連打しても中断も延長もされない

という感じでしょうか。

例外: スロットの再ロードで初期化は一応可能

2023年1月現在、reWASDには「他のボタンのトグル状態を解除」「コンボのキャンセル」といったアクションは存在しません。

さすがにスロットを移動してコンフィグごと再ロードしてしまえば状態はリセットされます。キーバインドを設定して素早くスロットを往復するという手も、場合によっては検討してよいかもしれません。

とはいえこれが「ローリング(LT)押下と同時にダッシュ(LS)状態も解除」といった素早い動作の合間に使えるような機能でないのは、明らかです(シフトと違い、スロットには無反応時間もあります)。

フォーラムでの開発側の見解

と、ここまで書いたような話は公式フォーラムにも類似スレッドが幾つか立っています。

forum.rewasd.com

代表的らしいスレッドは、このあたり。

Regarding the release of particular button by pressing another one, it is not possible at the moment. If you used some particular button for pressing the button, please use the same button for releasing it. It is like a caps lock. You press it once for the big letters, then press it again for normal ones.

(現状、他のボタンで特定のボタンのトグルを解除することはできません。特定のボタンをトグル状態にしたら、もう一度押して解除してください。それは一度押したら大文字になり、もう一度押したら普通の文字になるCapsLockキーのようなものです)

開発者によって仕様が明快に説明されているので、ぐうの音も出ません。

スレッド内では「改善の検討はしているが、それが反映されるかどうか、いつまでに改善できるかは確約できない」としており、すぐに直るようなものでもなさそうです。

以上です

コントローラーに状態を持たせられるといっても、ボタン毎の押し続け・離しはステートとして孤立度が高く、他のボタンから手を出せない。そこまで精緻な状態変化を扱うのは、少なくともreWASD単体では現状難しいという話でした。

いずれ何とかなってくれると面白いですが、それはそれで、もともと難解なソフトが更にマニアックになっていく予感もしますね……。