忍者ブログ

方向音痴のSkyrim

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

Procedure Treeレシピ03【スリとパーフェクトタッチ 】

NPCにNPCからスリを行わせるのは、果たしてAI Packageのみで可能なのでしょうか。
Scriptとそれっぽい隠密行動をするAI Package、クエストのシーンを使えばそれらしい演出はできます。しかしこれではあくまで演出どまりになってしまいます。

以前、こちらの記事にて「盗み」をするAI Packageを作成しました。その辺のコンテナや裸で配置されている他人のアイテムであれば、Procedure:Acquireを使用することでNPCに拾わせることができます。しかしNPCが盗っても、それを目撃した衛兵などが盗ったNPCを罪に咎めることはありません。時々「あんたが取ったのを見たのよ」とコメントするNPCもいますが、言うだけです(盗ったものの値段によるのかもしれませんが)。
Acquireには"AllowPickpocket"のパラメータがあり、一見スリもできそうに見えたのですが、実際に"AllowPickpocket"をTrueに設定してやっても、NPCがスリを行う気配はありませんでした。Procedure Treeの構造自体をミスってできなかった可能性もありますが、結局諸々の設定をどうすればいいのか分からず、NPCにスリをさせるのは諦めていました。

ところがついに、スリAIを作成された方がいらっしゃいました!
「ファルログ」のファル粕さんが記事「収集系フォロワーに関する考察」後半に書いてくださっています。
Procedure:Acquireではなく、Procedure:Activateを使えば可能とのこと。わくわくしながら、早速こちらでも試させていただきました。結果はもう面白すぎて、おなか抱えて笑うほどでした。オブリビオンではスリを行うNPCがいたそうですが、このAIを使えばSkyrimでそのNPCを近い形で再現できます。ただ、SkyrimではNPCのスリに関して無視できない問題点もありますので、そちらもあわせてこの記事にまとめてみようと思います。

■スリAIの基本構造
Sequence Branch内にて、以下の処理を順に行います。
  1. スリを行う対象となるNPCの検索(Procedure: Find 1)
  2. 見つけたNPCを検索場所として、スりたいアイテムの検索(Procedure: Find 2)
  3. 見つけたアイテムをスる(Procedure: Activate)
このProcedure: Activateというのはかなり強力な力を持っているらしく、アクティベート対象に設定された物に対して、直にアクティベートできるようになっているようです。それがたとえ生きているActorのインベントリ内にあろうとも、アイテムであればアクティベートしたときの動作「自身のインベントリに加える」を実行できるようなのです。アイテムは装備しているものでも関係ないです。問答無用のパーフェクトタッチになります。
注意点として、他NPCのインベントリ内にあるアイテムをアクティベートするのは敵対を誘発する行為なので、盗人NPCには隠密状態でActivateを実行させなければなりません。そうでないと100%見つかり、結果、敵対します。意外とこのスリ行為の見つかりやすさ、スリスキルと関係ないようです。スリ100隠密25のNPCは見つかっても、スリ25隠密100のNPCはまず見つかることはありませんでした。

■NPCのスリが見つかったら
もし盗人NPCが見つかってしまったら、被害者のNPCは盗人NPCに敵対します。そしてなぜか、被害者NPCの敵意はプレイヤーにも向きます。理由は分かりませんが、Skyrimのシステム自体、「犯罪を行うのはプレイヤー」という想定で作られているのかもしれません。プレイヤーが隠密状態で誰にも見られていなくても、盗人NPCが見つかっている時点でアウトみたいです。

実際にはプレイヤーが盗んだわけではないので、犯罪履歴には残らないようですし、賞金もつきません。衛兵もプレイヤーを犯罪者として見てないので逮捕することもありません。NPCの敵意だけが窃盗を理由にプレイヤーに向いているという中途半端な状態です。
不思議なことに、衛兵が被害者の場合はスリ行為によってプレイヤーに敵対することはありません。衛兵はプレイヤーの投降を受け入れたりと、敵対状態に細かな制御が加えられているせいなのか、割と常識的な反応をしてくれます。盗人NPCが衛兵からものをスって見つかった場合、衛兵は盗人NPCを攻撃しますが、表向きプレイヤーに敵対することはありません。
しかし衛兵に加勢するタイプのNPCは、盗人NPCとプレイヤーに敵意を向けるようです。本人達がスリの現場を目撃していなくても敵対するので、ゲーム内部でなんらかの敵対情報(犯罪情報)が伝わっているのかもしれません。ホワイトランだと、ウスガルド、イドラフ・バトルボーン、エルリンドルなどが該当します。ドラゴンズリーチにいる面々も危ないです。敵対すると、プレイヤーに友好的なNPCやフォロワーなども巻き込んで大乱闘の大惨事になる可能性が十分にあります。結局衛兵も内部的にはプレイヤーに敵対反応を出しているのかもしれません。

いずれの場合においても一般NPCの敵意がプレイヤーに向いてしまった場合は、とりあえず軽犯罪でも犯して「牢屋で罪を清算」すれば解けます。衛兵さんを一発殴って捕まえてもらうのが無難でしょう。

「犯罪」に関する情報は同じくファルログさんの「スカイリムの犯罪 ~プレイヤーの罪と罰~」の一連の記事で詳しく検証してくださっています。


NPCにスリを行わせる以上、無関係なプレイヤーが被害者NPCらの敵意をかうことは避けられません。QuestとScriptを駆使してこれらの冤罪を無効化する方法をとる選択肢もあるのでしょうが、ここまでやるとなるとCrime関係の知識も必要になってきます。CKwikiに、カスタムのCrimeFaction作成方法のチュートリアルがあります。
プレイヤーの牢屋送り "SendPlayerToJail()"、逮捕の拒否 "SetPlayerResistingArrest()" など、犯罪を制御できるPapyrus関数が存在し、「Jail Event」「Escape Jail」「Arrest Event」「Crime Gold Event」などStoryManagerのイベントもあります。

■理不尽な動作を承知の上で
否が応でもプレイヤーに嫌疑がかかるなら、いっそそれが自然になる状況だけでNPCにスリをやらせればいい。
ある意味これが一番簡単で納得のいく解決法です。
プレイヤーの号令でフォロワー達がいっせいにスリを行う、プレイヤーが盗賊ギルドマスターになったら、ギルドメンバーがスリなどの犯罪行為を始める、など。スリの現場を押さえられ、フォロワーやギルドメンバーらの口から真の黒幕が発覚するとなれば、プレイヤーに人々の敵意が向いてもまぁまぁ納得できます。ボス自らお勤めして部下達の罪を清算することになりますが。ギルドマスターって大変なお仕事ですね。

■サンプルMod
前置きが非常に長くなりましたが、プレイヤーにあらぬ敵意が向くのは無視できない事項なので、先に書かせていただきました。

 
サンプルModで作ったスリAIです。
NPC(衛兵)を探しながらパトロールし、見つけたら発見したNPCをSearchLocationとしてアイテム(防具)を検索します。
アイテムを見つけたら、隠密姿勢をとりProcedure:Activateを実行して見つけたアイテムを盗ります(1回につき1種類にしてますが時々連続で盗ります)。一定時間以内(25秒)に取れなければいったん諦めます。
その後、一定時間(25秒)はパトロールを続けます。
詳しくはMod内の「SL00PickpocketItemWithPatrolTemplate」を参照してください。

Procedure: Find②のSearchLocationですが、SingleRefを設定しても、そのレファレンス中心に一定範囲内までが検索範囲になっている気配がありました。衛兵のすぐ隣にいたフォロワーがアイテムを盗られることがまれにあったので。盗るアイテムと見つけたNPCとの距離が非常に小さいときのみActivateを実行するようにすればある程度避けられるかと思います。

少なくとも、衛兵の鎧、篭手、ブーツ、兜を全て盗むまでスリを行います。
先述の通り訳も分からず無関係なNPCに突然敵対されたら、スリNPCが衛兵に見つかった証拠です。衛兵を殴って逮捕してもらい、敵対をクリアしてください。

【スリを行うNPC】※隠密上昇+100のアビリティつき
・ブレナイン(ホワイトラン)
・不可視のシルダ(ウィンドヘルム)
・ディゲイン(マルカルス)
・早業のバイパー(リフテン)

いずれも月・水・金の22時から5、6時間、町の一定の場所を徘徊して衛兵の防具をスります。全員不死属性をつけました。隠密上昇のアビリティおよびスリのAI Packageについても、Actorデータをいじらず「SL00PickPocketQ」という優先度ゼロのクエストで行っているため、他Modの影響を受けて誤動作を起こす心配は少ないかと思います。隠密スキル100にしたのもプレイヤーへ濡れ衣が及ぶのを回避するためですが、時々見つかるくらいの方が実は面白かったりするので、隠密上昇アビリティのMagnitudeをいじるなどして調整してみてください。ブーツを取られた衛兵が裸足でブレナインを追いかけるさまは見ものです。
サンプルですのであまり気を使って作っていません。クエストがらみで多少行動に問題が出るかもしれませんが、ご了承ください。

ダウンロード(mediafire)
※必須環境:特になし
※AIを変更するModと競合して動作しない可能性があります。

前へ | 次へ
PR

コメント

1. 南中の月、30日

―――暑い夏ですね!
その後、パソコンの調子は大丈夫でしょうか? 私も今月、三代目PC(6年目)が壊れてしまいました。(昨年もたしかこの時期に…汗) 気温が高いと排熱の関係からなのか…負担が増えて危険が増すみたいです! その影響もあって、Mod製作のテンションも、夏バテ気味です…。HDDが故障したようなので、バックアップしていなかったデータの吸出し作業用のケーブルを注文し、その間にもう一台(5年目)の方が壊れないか、ヒヤヒヤしています。もしかすると、「CKで作業をしながらSkyrimも起動していることが、PCにかなり負担をかける原因になっているのかも?」といつも心配しています。ブログがあるとバックアップ問題の救済になるので、本当によかったと思います! しかしあくまで、アップできる前提での話なので…「早くModを完成させてアップしないと…危ない!」と焦りに焦っているところです。その割に、悠々とテストプレイにふけっており…危機感に行動が伴わず、逆行する日々を過ごしております。

「スリAI」の記事、お待ちしていました!!PatrolとActivate(スリ)が融合した、新しいタイプのPackageの誕生ですね! 実を言うと…私は未だに「Patrol」を使いこなせていないので、UNIさんのPackageでNPCがバランス良く、スムーズに動いてくれる秘訣がすごく気になります。(他のProcedureと組み合わせると、巡回が一周でストップしてしまうなど。泣く泣くTravelで代用…)

こちらの記事に、「ファルログ」へのリンクを貼っていただけて、とても嬉しいです d(゚∀゚d)
相変わらず閑散としているのですが、心なしか“拍手ボタン”をポチッてくださる方が…最近増えてきたように感じます(喜) 今月はブログ更新を頑張りました。UNIさんからコメントもいただくことができ、かなり充実した月になりました。

犯罪の調査後は、全くと言っていいほど進展が無いのですが…「スリAI」を取り入れたModの準備も、時間を見つけて少しずつ進めています。最近は、「スる側」より「スラれる側」の方の条件に、重点を置いて調べています。「カモNPC」を自作し、UNIさんのサンプルModの「スリNPC」の隣に配置して様子を観察しております。…結果は、私のMod側に致命的な不備があり、微妙です。「カモNPC」の製作は、もう一つ飛躍的なアイディアを何か見つけないと…難しい状況だと感じています。Factionの設定には、まだ重要な鍵が眠っている気配がしているので…ハッキリとは分かりませんが、引き続き調査していこうと思います。おそらく、山賊(犯罪認定なし)と同胞団(犯罪認定あり。しかし、衛兵よりユルい)の中間的なFactionを作り出せれば、ベストです!
「スリ」って…繊細ですよね~。(現実世界では、絶対NGだと承知していますが…本当に面白いテーマです。)

>否が応でもプレイヤーに嫌疑がかかるなら、いっそそれが自然になる状況だけでNPCにスリをやらせればいい。
UNIさんの「金言」に、またしても多くの事に気付かされました!!…私はずっと、謂れの無い罪を解除することばかりに捉われていましたが、予めおかしな挙動にならない相手や状況を見つけてスらせるのが、実は最も安全な方法だったのですね!(的確すぎる)

サンプルModの『隠密上昇+100のアビリティ』の発想を拝見して、「なるほど!!」と気付いたことがありました。『NPCのスリ成功率100%=プレイヤーに罪がなすり付けられる確率もほぼ0%』になるということです。(ホントに当たり前な事ですみません…汗) この状況を上手く利用して…『スリ終わった瞬間』に、「犯罪者NPCが一定時間、“錯乱+恐怖”する」や「被害者NPCに、ランダムな確率(←実際のスリ確率を模倣したもの)でHostileEffectを与える」などの特殊能力をスリNPCに持たせておいたら…どうなるのだろう?と想像してみました。

「スカイリムの犯罪」での調査結果に従えば、「NPCがスリをしたことは(隠密アビリティで気づかれないので)罪に問われず、傷害を働いたことで罪に問われる状況」になり、「プレイヤーが敵対されずに、アイテムをしっかり奪った上で、犯罪者NPCと被害者NPCのを追い駆けっこ」を見ることができるかもしれません。しかし、『スリを終えた』と判定するための適切な『ConditionFunction』に何を使ったら良いか、全く思いつかないので…そこを解決できない限り、この方法は現実的には難しいと考えています。さらに、被害者が「この盗人め…!」などの、“スリ特有の台詞”を言わない問題もありそうです。(攻撃に対するリアクションになってしまい、スリ感が減少。)

全然、脈絡の無い妄想を長々と書いてしまい、申し訳ありません。UNIさんとの議論の中で、「スリ対象を衛兵以外にも拡張する方法」を見つけられたら良いな、と思っております!!

最近Modの更新がたくさんあり、ブログのファンとしましては…非常に嬉しいです!
PCの問題が無事、終息することを祈っています…(^^;) ⇒自分のも含め。

Re:南中の月、30日

お気遣いありがとうございます。うわあ、ファル粕さんのパソコンもですか。たいへんでしたね……。
私のパソコンはまだ何とか動いてくれてるのですが、ご老体だけにいつ壊れてもおかしくないです。バックアップはとってあるし、一部の手がかかっている自作Modはブログや外部ストレージにも置いてるので、壊れても大丈夫だと思いたいです;
今の不安定なパソコンで複雑なModをいじるのは落ち着かずCKいじりは半休止中ですが、逆に普通にゲームで遊ぶ時間が増えました。Skyrimはやっぱり楽しいですね。自作Modのテストのつもりでゲームを起動しても、テストプレイ自体が楽しくて当初の目的を忘れがちになるのは私もよくあります。

「Patrol」は他のProcedureと一緒に使うと上手く動いてくれないことが多い気がします。スリAIでは獲物が見つからないときは順にパトロールポイントを回ってくれるので、「Find」は一緒に使っても大丈夫みたいです。確実に決まった場所を順にめぐらせたいときは、「Travel」のほうがよさそうです。

スリAIはプレイヤーへ濡れ衣が及ぶのがネックですね。相手が山賊やドラウグルなどの敵ならいくら恨まれようが構わないのですが、一般市民NPCとなると……。CrimFactionの壁が高いです。
スリに関してそれらしい演出を加えるとなると、スクリプトが必要になりそうです。むしろスクリプトを使えば、濡れ衣問題も回避できそうな気が。スリ用の魔法を作って、カモNPCの近くで隠密状態で使わせるのが一番手っ取り早いかもしれません。魔法につけたスクリプトによって対象から何かのアイテムを奪い、スリスキルに応じて「スリ発覚」の判定を行うのであれば、対象に「この盗人め!」と怒鳴らせたりできますしプレイヤーに濡れ衣がかかることもありません。「Activate」のかわりに「UseMagic」を使うことになるので、AI Packageでスリを行わせる……とは違うものになってしまいますが。
カモNPCが特定のCrimeFactionに入っていたときは、衛兵がスリNPCを逮捕するイベントにつなげるのも面白そうです。
フォロワーにスリを行わせるのはスリAI(フォロワーの隠密スキルが生きる上、発覚時プレイヤーに濡れ衣がかかっても不自然ではない状況)、他NPCが自主的(?)にスリを行う場合はスリ魔法AIというふうに使い分けをするといいかもしれませんね。ちょっと手の込んだ作りになりそうですけれど(^-^;

コメント

2. 比例する期待と実用の難しさ

“アラス”さんのプレイ日記の続きが読めて、嬉しいです!!
最近、私も製作よりプレイの方に熱を上げながら…Modのちょっとした問題を修正しております。スカイリムの衰えない楽しさと人間を虜にする中毒性、それを造り出したベセスダのブレーンの頭の中を想像すると…この猛暑が少しヒンヤリする、ホラーです((( ;゚Д゚))

>「Patrol」は他のProcedureと―――「Travel」のほうがよさそうです。
アドバイスありがとうございます!“使い分け”って、改めて大切だと思いました。何事も強引に押し進める傾向があるので、反省しています(^^;)
個人的に「Travel」の良くないところは、細かく使えば使うほど…ProcedureTreeやPackageDataの欄が、どんどん増えていく所だと思います。「Patrol」が使えるようになれば、複数のポイントに一つのProcedureで周ってくれるので、「上手くいけば整然とした、洗練されたPackageにできそうなんだけれどなぁ~」という憧れがあります。

>スリ用の魔法を作って、カモNPCの近くで隠密状態で使わせる
Crime関係のPapyrusを使いこなせれば、「スリ魔法AI」によって、このような事も可能なのですね!…すごい。CKwikiを何度か見に行ったのですが、処理の仕組みについて…私はほとんど理解が及びませんでした。UNIさんのMod『VanillaFollowersAI』で、「暗殺者が対象者に毒をスリ渡す時の動作」がとても自然に見えたので、アイテムのスリの場合も「Activate」を使用しなくても、「UseMagic」の方法だとほとんど違和感が無さそうですね!(^u^)

>衛兵がスリNPCを逮捕するイベントにつなげるのも面白そうです
すごく面白いアイディアだと思います!! バニラでは、「ブラン・シェイ」や「サビョルン」が牢屋で過ごしていましたが、あのシーン…個人的にツボで、本当に大好きです。(異様な親近感もあり…) 彼らと違って…盗みなどの軽犯罪でも死が待っていたり、逃げ切れればプレイヤーに罪をなすってお咎めなしのNPC達が、『一時的に逮捕されて罪を償える』ようになったら…スカイリムの世界での行動面が、より現実的な社会に近づいたみたいで、楽しそうです!!

『スリのフォロワー用オーバーホールMod』の製作は、私ようにScriptやQuestの初歩的な所しか分かっていない人だと、かなり敷居が高いと思いますが…細々とした製作において、少しフォロワーに“盗賊らしいこと”を行わせてみたいと思った時に、「スリAI」は良いかもしれないですね。

NexusにアップされているModderの方々の色々な製作を見ていると…自分の製作において『敵と味方』どちらのModを作るべきか、常々思いにふけることがあります。
以前から少し興味があることなのですが、「同胞団のMod」が一つ完成させられたら…今度は対極にある存在である「シルバーハンドのMod」を製作してみたいと考えています。スリのAIでも、「自分の味方に盗ませる」のと「敵が盗んでくるようにする」という2つのパターンがあると思ったので、両方とも捨てがたいテーマで興味深く…どちらから調べようか、とても迷いました。(UNIさんは、さらに別の視点である「第三者の場合」という、極めて特殊な発想を持っていらっしゃったので…驚きました!!)
同胞団の“変わったCrimeFaction”は、「第三者のスリ」に寛容なので、シルバーハンドの奴らが「時々、街に襲撃してくる」や「ウースラドを狙って盗みにやってくる」などの行動をするようになったら、あの“ポカポカでぐうたら感”に溢れたジョルバスクルにいる同胞団たちが…多少、気を引き締めるかもしれないです。

追伸
ファルログ、更新しました! 少しご相談があるのですが…自作QuestのAliasに入れたフォロワー達を「ブレイズ入団」させたら、恐れていた問題が起きてしまいました。UNIさんだったら、こういった時にどう解決されるのか? ご迷惑にならない範囲で、教えていただけたら…と思います。

Re:比例する期待と実用の難しさ

>バニラでは、「ブラン・シェイ」や「サビョルン」が牢屋で過ごしていましたが、あのシーン…個人的にツボで、本当に大好きです。
すごく同意です。実は私が一般NPCにスリをさせたいと考えたのは、こういったその他NPCがぽつねんと牢屋の中にたたずんでいるさまを見たいがためだったりします(^-^;
NPCを牢屋に入れるとなると、数日後に釈放してあげる処理も必要になりそうなのでクエストとして作るとちょっと大掛かりになりそうですね。リフテンやソリチュードの牢屋は部屋数が多いので、改造しても差し支えなさそうな牢を現在物色中です。

「ブレイズ入団」のクエストは優先度45みたいですね。アシス達のAIを「日常生活&非雇用時用」、「雇用時用」の二つのクエストに分けるのはどうでしょうか。「雇用時用」はフォロワー管理用のクエストより優先度が高い必要がありますが、「日常生活&非雇用時用」はその必要は無く、優先度ゼロでも機能すると思いますよ。優先度ゼロであればブレイズ入団に限らず他クエストの動作を妨げる心配もなくなります。

Author

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

ブログ内検索

最新コメント

[07/16 chomechome-X]
[07/16 ブレトン魔術師]
[07/15 amo]
[07/10 初心者シセロ]
[07/10 ソウルケルンのエレンウェン]