🎮

マクロコントローラにおける冪等マクロ設計

に公開

前提

マクロコントローラは8BitDo Ultimate 2 Bluetooth Controllerを想定する。なお、このコントローラーのマクロ設定手順の具体的な方法には触れない。

マクロコントローラとは

マクロコントローラとは、ボタン入力の連続手順を登録し、同じ動作を自動で繰り返せるコントローラのことを指す。例えばレベル上げや金策のような反復作業を自動化できる。

冪等性とは何か、なぜ重要なのか

冪等性とは「同じ操作を何回実行しても、最終状態が同じになる」性質を指す。マクロは一度ズレると以降の入力が連鎖的に破綻するため、最初に戻せる操作や、何度やっても同じ結果になる操作が決定的に重要だ。例えば同じ順番のボタン入力でリストを開けば必ず先頭を指す、という仕様は冪等性の直感的な例になる。つまり、冪等な操作を組み込むことで「ズレても戻せる」「何回繰り返しても壊れない」設計になる。本記事では、その発想を中心に、相対操作から絶対指定へ転換し、堅牢なマクロへ作り替える手順を示す。

ゲーム内での冪等な操作の具体例は次の通りだ。

  • 座標の初期化: 壁に向かってスティックを数秒倒し続け、位置を確定させる。
  • 状態の初期化: Bボタンを一定時間連打し、メニューや会話を強制的に終わらせる。
  • 演出の吸収: 昼夜逆転など長い演出を想定し、5〜10秒の「何も動かない時間」をあえて作る。

この中でも、本記事で扱う具体例は「ファストトラベルの移動先リストを開いて選ぶ方法」だ。「先頭にカーソルがある状態→固定回数移動→決定」という形で冪等性を実装できるため、実例として最も扱いやすい。

スティック移動がマクロを壊す理由

スティック移動は相対座標の操作だ。つまり「ここから3秒右に倒す」といった入力は、開始位置が1ピクセルでもずれていると結果が変わる。以下の要因でズレは発生する。

  • 処理落ちやフレーム落ちで移動量が変動する
  • 通信遅延や負荷で入力受付が伸縮する
  • 昼夜変更などの演出が入る

結果として、同じマクロでも毎回同じ場所に辿り着けない。「再現性の欠如」は自動化の致命傷だ。

リスト選択による「絶対指定」の導入

解決策は、相対座標から絶対指定へ転換することだ。地図上を移動する代わりに、リストから目的地を選ぶ。ここでのポイントは、2次元の位置情報を1次元のリストに落とし込むことにある。

  • スティック移動: 2次元の相対操作
  • リスト選択: 1次元の絶対選択

例えば、Yボタンでファストトラベルのリストを開くと、カーソルは常に先頭に戻る。だから下入力は「絶対指定」として機能する。目的地はリスト内の固定位置にあるため、同じ入力が常に同じ結果を返す。これは冪等性の核になる。

マクロコード例

以下は「ファストトラベルの移動先リストを開いて選ぶ方法」の基本設計だ。

ボタン 動作
スティック 移動
+ボタン マップを開く
Yボタン 移動先リストを開く (先頭固定)
十字キー 選択操作
Aボタン 決定

ポイントはYボタンで移動先のリストを開くことにより常に同じ初期状態を作ることだ。これにより、下矢印は絶対指定として機能する。

まとめ: リスト選択で「確実に」動かす

相対操作は前提が崩れると必ず破綻する。冪等性を軸に、同じ順番でリストを開けば先頭を指す仕様を利用し、固定回数の移動で目的地を絶対指定すれば、失敗しにくいマクロが作れる。ここで重要なのは「速さ」ではなく「再現性」だ。

Discussion