忍者ブログ

方向音痴のSkyrim

PCゲーム「Skyrim」の雑多なCKいじり日記

スカイリムの掃除人07【AI Packageひとまず完成】

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

スカイリムの掃除人07【AI Packageひとまず完成】


リーチ担当の掃除人(50代ブレトン)。
ProcedureTreeの動作確認でしばらく後をついてリーチを回ったのですが、フォースウォーンやら熊やらスプリガンやらオークハンターやら、続々と現れる敵に思った以上の大冒険を強いられました。
狼相手に逃げているようではとても掃除がはかどらないので、彼には弓と、少しばかりの戦う勇気を持たせてあげました。プレイヤーとレベル同期するようにしているので、最終的にはかなり強くなるでしょう。
 
さて、懸案だった「拾い物をしながら一人でホールドを回るProcedureTree」。
色々いじっているうちに、ようやく形ができてきました。



目的地を目指しながら、道中目についたものを拾うProcedureTreeの大幅改良版です。

一番上のSequenceには、目的地の近くに行くまでRepeatするようチェックボックスとConditionsを設定。Conditionsにて「GetDistance」を使うために、「Travel」の"Location"はSingleRefタイプのデータを設定することにしました。
Sequenceの中身である三つのSimultaneousを、目的地に着くまで順に繰り返します。
  1. 「Travel」しながら3種類のアイテムをサーチ。いずれかを「Find」したらBranch終了。
  2. 「Find」したものを「Acquire」。取得対象がアクセス不能な場所にある場合を考慮して、一定時間以内(AcquireTimer)に取得できなければタイムアップでBranch終了。
  3. 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しているのは見た気がする。これも調べてみないと)

道のりは遠い……。

前へ | 次へ
PR

コメント

※スパム対策のため、コメント内やその他の項目に「http://」や「https://」があると投稿できません。全角で入れていただくか、URLであることを明記して以降のアドレスのみ入れていただくかでお願いします。 For stopping spam comments, this form doesn't accept the following words, "http://" and "https://".

Author

UNI
Skyrimで遊ぶのも、CKで改造するのも好きなファンタジー好きです。
戦闘苦手で難易度は基本EASY、慣れてもNORMAL程度。 アンデッド恐怖症なので、ノルド遺跡探索が辛い……。

ブログ内検索