ループに閉じる
知覚して、考えて、動く。判断の道具をどれに替えても、毎フレーム回るループの中で「次に何をすべきか」を返す関数でしかない。返り値は体に渡す「どこへ向かえ」か「どのマスを選べ」に落ちる。判断と運動が切り離されているので、考える部分だけを差し替えても、動く部分はそのまま使い回せる。
道具はまだ組み替えられる。ビヘイビアツリーに装飾ノードを足す、効用とビヘイビアツリーを混ぜる、MCTS に学習した評価を差し込む。このうち装飾ノードは、Sequence と Selector に子を一つだけ包むノードを加えるだけで届く。
ビヘイビアツリーの Decorator は、子を一つだけ持って、その成否や呼び出しを書き換えるノード。Inverter は成功と失敗を入れ替え、Repeater は子を指定回数くり返し、Cooldown は成功した子を一定時間そのあと失敗させて連発を止める。Sequence と Selector が木の形(AND・OR)を組むのに対し、Decorator は一本の枝の振る舞いだけを上書きする。葉のアクションを直さずに「反転・くり返し・間引き」を外側から差し込めるので、同じ行動を別の文脈で使い回せる。
cooldown(ready, kid) は子を包む装飾。子が成功したら ready フレームのあいだ自分は失敗を返し続け、その間は包んだ行動が発火しない。見張りの木で、プレイヤーが視界に入ったときの突進アクションをこれで包む。突進が一度出ると一定フレーム止まり、Selector はその間だけ巡回の枝へ落ちる。
プレイヤーが視界の輪に入ると、左のバーが一瞬だけ点いて見張りが突進する。突進のあとは輪に入ったままでも左のバーは点かず、右の巡回バーが点き続ける。cooldown の ready フレームが明けて初めて、次の突進が出る。包んでいる action は中身を一行も変えていない。ready を 0 にすると装飾が素通りして毎フレーム突進が出っぱなしになり、condition を inverter(成否を入れ替える装飾)で包めば「見えていないときだけ動く」に裏返る。判断の枝は、外から包むノードでいくらでも書き換えられる。