リーチ担当の掃除人(50代ブレトン)。
ProcedureTreeの動作確認でしばらく後をついてリーチを回ったのですが、フォースウォーンやら熊やらスプリガンやらオークハンターやら、続々と現れる敵に思った以上の大冒険を強いられました。
狼相手に逃げているようではとても掃除がはかどらないので、彼には弓と、少しばかりの戦う勇気を持たせてあげました。プレイヤーとレベル同期するようにしているので、最終的にはかなり強くなるでしょう。
さて、懸案だった「拾い物をしながら一人でホールドを回るProcedureTree」。
色々いじっているうちに、ようやく形ができてきました。
目的地を目指しながら、道中目についたものを拾うProcedureTreeの大幅改良版です。
一番上のSequenceには、目的地の近くに行くまでRepeatするようチェックボックスとConditionsを設定。Conditionsにて「GetDistance」を使うために、「Travel」の"Location"はSingleRefタイプのデータを設定することにしました。
Sequenceの中身である三つのSimultaneousを、目的地に着くまで順に繰り返します。
- 「Travel」しながら3種類のアイテムをサーチ。いずれかを「Find」したらBranch終了。
- 「Find」したものを「Acquire」。取得対象がアクセス不能な場所にある場合を考慮して、一定時間以内(AcquireTimer)に取得できなければタイムアップでBranch終了。
- Boolタイプの設定にて、このBranchを行うかどうか選択。取得後、もしくは取得失敗後、すぐにその場を立ち去らせ、次回の「Find」のサーチ範囲に現在地が含まれないようにします。移動速度を考慮しつつ、”LeaveTime(秒)”にて立ち去る距離を調整。
1番では、「Find」を三つ重ねています。これはそのままサーチの優先順位になるようです。
サーチ範囲に三種類のアイテムがあったとしても、ObjectListに登録されるのは最初の「Find」で探しているアイテムの種類だけ。二番目以降の「Find」で指定したアイテムは、サーチ範囲に上の「Find」で指定したアイテムがなくなるまでは、見つけてくれません。
3番は主に「Flora」対策です。「Flora」はアクティベーターをサーチ対象とするので、サーチ範囲内に取得済アクティベーターがある限り、それを無駄に「Find」&「Acquire」し続けてしまうことになります。なので「Flora」をとった後は、その場から速やかに離れさせるのが必須。
それ以外のアイテムはだいたいは取れば消えるので、現場から離れる必要はありません。3番を行わない場合は、自分の近くにある物を全て取ることができます。
このProcedureTreeで、掃除人の動きが劇的に良くなりました。
複数の地点を巡るよう、この基本形を6つ複製してそれぞれTravelの目的地を設定します。
複数の地点をちゃんと巡ってくれるかどうか、本動作確認。
道中、転がっている死体から容赦なくお金と武具を奪っていきます。以前は自分がせっせとやっていたことですが、改めて見るとかなり無体な所業ですね。
道中の拾い物に関してはまったく問題ありません。決して欲張らず、物を取ったら速やかに現場を離れる行動は、プロっぽいとすら感じられるほど。
ただ、時々AI Packageにリセットがかかってしまい、一番最初の目的地に戻ろうとすることが多々ありました。リセットされてしまう理由はよく分かりませんが、目的地をランダムに巡るよう設定を変えれば、不自然に見えないでしょう。
ProcedureTreeは、これで完成としてよさそう。
前回作った、お供を連れている掃除人のパッケージも修正。
「Travel」を「Follow」に変え、「Acquire」のBranchはConditionsを設定し、お供との距離が一定以内の時のみ行うようにしました。これで拾い物に夢中になって置いてけぼり……な状況を回避できます。
一人でホールドを回るAI Packageはリセットがかかると「ふりだしに戻る」ことになっていましたが、こちらはペースメーカーであるお供が正しく動いてくれている限り、リセットがかかっても支障がありません。
各目的地を決められた順に巡らせるのは、こちらの方が安定するようです。
目的地に、掃除人が寛げるようなマーカーを追加してあげました。
大半の目的地はランダムイベント近くに置いているので、イベントで沸いたNPCが勝手に使うこともありますけど。
ひと月前に沸いて以来、ずーっと立ちっぱなしだったバルバスさん。ようやく座れる場所が見つかったようでなによりです。
アイテムの取得に関する今後の課題
・敵が死んだ時に落とした武器は取らない
(特殊な状態にあるらしい。FindできてもAcquireできず、Procedure:Acquireが終了できない状態になる。Flora同様サーチ範囲から外す、あるいはプレイヤーが取って捨てればAcquire可能になる)
・Playableでない物も取る
(インベントリに表示されないためコンソールで確認するしかない。処分したい……)
・クエストアイテムも普通に取る
(クエストアイテムの判別ってどうすればいいんだろう)
・ロックピック、魂石、巻物を取らない
(他にも取らないものはあるかもしれない。個別指定でFindさせるしかないのかな)
・鍵のかかった宝箱から、鍵を開けずに中身を取る
(イリュージョン。便利だけど、取っちゃいけないものを取る可能性がUP)
・子供は魚や虫をActivateできない?
(近くに蝶々がいても一切反応なし。でもサーモンをAcquireしているのは見た気がする。これも調べてみないと)
道のりは遠い……。
前へ |
次へ