忍者ブログ

方向音痴のSkyrim

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

Procedure【Find】

Find

指定した対象を探させます。対象には特定のオブジェクトやNPCなどを指定できる他、Object IDやObjectTypeによる指定も可能。
指定されたものが見つかればProcedureは終了します。逆に見つかるまで、終了することができません。
また検索対象が読み込まれていない(ロードされていない)エリアやセルに存在する場合、発見そのものができません。
このProcedureは行動を伴わないメンタルなものです。多くの場合、他の行動を伴うProcedureとSimultaneous Branchにて同時実行されています。これにより、Travelしながら何かを探し、見つければその発見物に対してなんらかの行動を起こすといったAIの作成が可能です。Acquire、Eat、Sleep、SitなどのAI Templeteで実際の利用法が確認できます。

このProcedureは単体で使用されることはなく、検索結果を他のProcedureに渡すことではじめて意味をなします。Procedure:Waitと並び、扱いこなせばAI作成の幅が飛躍的に広がるとても有用なProcedureでもあります。

―パラメータ―
  • SearchLocation: Findで探す範囲。
  • TargetSelector: 探す対象。主にSpecific ReferenceやAny Objectを指定します。
  • ObjectList: 発見した対象を保存するリスト。SeachLocation内の対象が(見つけられた分)全て列挙されます。他Procedureに検索結果を渡すのに使います(リストに保存された対象はSingleRefの扱いになるようです)。
  • SearchOwnInventory: 自身のインベントリを検索範囲に加えるかどうか。
  • RandomizeList: ObjectListの中身をランダムに並べ替えるかどうか。Falseの場合、SearchLocationの中心に近いものから順にListに並んでいるようです。


■TargetSelectorの指定方法
「Specific Reference」での直接指定は何も問題ないと思いますが、「Any Object」を指定して探させる場合には一見出来そうで出来ないことがあるのでまとめてみます。勘違い等あるかもしれないので、各自で最終確認をお願いします。

・FormListは使えない?
見つけて欲しいものリストのつもりでFormList、例えばArmorのみを登録したFormListを作成しObject ID欄で指定しても、Findできないようです。FormListの内容でなくListそのものをFindする設定になってしまっているのかもしれません。

・FactionでActor探し
検索範囲にいるフォロワーを動的に探したいという場合など、「Any Object」のObject IDにFactionを設定してFindすると、そのFactionに所属しているActorのみの検索が可能です。

・Object TypeでModアイテムも検索可能
「Any Object」でObject Typeを指定すると、Modで追加されたアイテムや装備、家具類なども検索対象に含めることができます。「Armor」は防具全般、「Weapon: Melee」は近接武器全般などざっくりとした設定しかできませんが、とても便利です。アイテムを拾ったりするとき、Procedure: Acquire側でObjectListの中身を照合し、兜だけ拾うなどのConditionを設定することである程度選別は可能かもしれません。
ちなみに "Alchemy" は "Food" を包含する関係にあるようです。CKのObject Windowにて、食べ物アイテムがPotionに分類されていることからそれが類推できます。また "Flora" は地面に生えている草やキノコなど、採取用のアクティベーターのことで、"Ingredients" はアイテムとしての錬金素材になります。ニルンルートは個別指定が必要になるみたいなので注意です。Floraじゃないらしい。
使おうとしているObject Typeがなにを指しているのかは、CKでの分類を調べてみたり、実際にProcedure: Acquireで拾わせるなどして確認してみてください。"Miscellaneouse" はその他アイテムのことらしいのですが、取得対象となるアイテムが非常に多いため、目的の物をなかなか見つけてくれないことが多いです。対象となるオブジェクトが本当にそのObjectTypeで検索可能なのか、よく分からない部分もそれなりにあります。


■検索効率の劣化
ゲームに負荷がかかっている、例えばたくさんのNPCが周りにいる(フル稼働しているAIが多い)と、Findの検索能力が落ちる気配がありました。
特にSearchLocationで指定したRadiusが実際より狭くなる感じがします。全く探せなくなることもあります。SearchLocationを自分の周囲などに設定している場合は、一度その場から大きく動いて新しい場所が検索範囲に入るようにすると、見つけられるようになることもあります。
Find自体それなりに重いProcedureと思われますので、ある程度は仕方ないのかもしれません。
作成したProcedureTreeがうまく動かなかった時、検索効率が落ちているとTreeの作成ミスと勘違いしやすいこともあります。

前へ | 次へ
PR

Author

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

ブログ内検索

最新コメント