Semantic UI入力との違い
「Start buttonを押す」「名前欄へ入力する」のように、画面上のUI部品をIDやroleで指定して操作します。
「ジャンプする」「右へ移動する」「Wキーを押す」「マウスを動かす」のように、ゲームプレイそのものを操作します。
必要な操作だけを選んで公開する
jump、move、chatなど、ゲーム側が名前と意味を決めたactionを公開します。AIはキー配置を知らなくても「ジャンプする」という目的で操作できます。
キーボード、マウス、Standard Gamepad、text入力をdeviceに近い形で公開します。実際のキー割り当てや押しっぱなしの挙動を検証するときだけ有効にします。
押しっぱなしの入力を安全に解除する
たとえばAIが「Wキーを押し続ける」と指示したまま停止しても、キャラクターが永遠に歩き続けない仕組みになっています。押しっぱなしの入力は、入力を始めた接続ごとに分けて管理し、別の接続の操作には影響させません。解除命令を送れなかった場合も既定で5秒後に自動解除され、長く指定しても最大60秒です。接続切断、session終了、reset、adapter終了、Replay失敗でも、押されているキーやbuttonを元の状態へ戻します。さらに、ゲーム側が実際に入力を処理したという完了通知を受け取るまで、操作成功とは扱いません。
Engine設定
GuaGameInputMapへ意図したactionだけを登録し、Input System pumpが準備できた場合だけraw inputを有効化します。com.unity.inputsystem@1.20.0の仮想Keyboard、Mouse、Standard Gamepadを使います。
GuaAutoAdapterへAction Mapを設定します。Raw requestはmain threadでInput.parse_input_eventへ注入されます。
Toolと確認操作
gui-mcpは固定のgame-input tool群を公開し、hostが未対応の操作は呼び出し時に拒否します。WebMCPはpage tool登録時に読み取ったcapabilityで有効な入力toolだけを登録します。Inspectorの直接操作panelが提供するのは、Semantic Game Action、単発のphysical key入力、保持状態の確認、Release all(すべて解除)です。Release allは、現在のInspector接続が押し続けているキーやbutton、移動actionなど、保持中のゲーム入力をまとめて離し、キャラクターの移動やdevice状態をニュートラルへ戻すcleanup操作です。他の接続が所有する入力には影響しません。pointer、gamepad、text inputはInspectorから直接操作できません。requiresConfirmation付きactionにはconfirmed: trueが必要です。Player/Public Agent入力は、hostがPlayer向けSemanticまたはRaw capabilityを個別許可するまで拒否されます。