概要
マインクラフトのMOBが単独で行う行動の1つ、MOBの付近から無作為に選ばれた場所への移動を実装しているAI。一般的にランダムウォークや自発移動と呼ばれる行動はこのAIが働いている。
他のAIに対して比較的優先順位は低く、また徘徊を開始する確率も低めに設定されている。
アルゴリズムとしては、自分の周辺からランダムに[フルブロック?]を選び、そのブロックに近づくように移動経路を決定、移動を開始するような流れになっている。
徘徊のAIを持つMOBの一覧
- ウィザー
- ブレイズ
- クリーパー
- エンダーマン
- エンダーマイト
- アイロンゴーレム
- シロクマ
- スケルトン
- スノーゴーレム
- クモ
- ウィッチ
- ゾンビ
- ニワトリ
- ウシ
- ウマ
- ネコ
- ブタ
- ウサギ
- ヒツジ
- 村人
- オオカミ
また、ガーディアンの移動でも同じ枠組みが使われる
アルゴリズム
移動を開始する条件
徘徊の途中でない MOB は、以下の処理を 3tick に一度行う。
優先度が高く競合できないAIが働いていない
クリーパーの場合
- 泳ぐAI
- 起爆前の膨れるAI
- ネコを避けるAI
- 攻撃対象に接近するAI
- さまようAI
- 近くの他MOBを見るAI
- 中空を見るAI
- 付近のプレイヤーを敵とみなすAI
- 攻撃を加えてきたMOBを敵とみなすAI
といったAIが実装されている。この中で優先度が決まっている。
詳細はAIのまとめのページに掲載したいが、とりあえずの理解としては、 起爆、ネコを避ける、攻撃対象への接近の3つのどれかが働いているときは さまようことはない。
プレイヤーからの距離と時間の条件
プレイヤーから32m以上離れている状態が5秒続くと、徘徊をしなくなる。
抽選にヒットする
たいていのMOBは1/120の確率で抽選が行われる。ガーディアンのみ1/80の確率である。
移動の目的地となる地点が選ばれる
以下はホームポジションがない場合の記述。村人などホームがあるMOBでは異なる。
MOBを中心として21×15×21の立方体の範囲内から1ブロックを選択し、そのブロックの真下のブロックについてisFullBlock()が真を返せば移動の目的地として決定される。これを決定されるまで10度繰り返し、最終的に決定されなければさまよわない。