前回の
「スカイリムの犯罪①」では、主に「プレイヤーがNPCに逮捕される時」の処理についてまとめました。「衛兵」と「住民」という立場の違い(IsGuard=1.00 or 0.00)が“逮捕”にはかなり影響を及ぼしているようです。そして今回は
『NPCがNPCに逮捕される時』という、珍しくカオスな状況に置いて、どういった事が生じるのかを考えていきたいと思います。
(~回想~)アシスたちが訪れる数時間前。
道化エルフ「キィィィィイッ!!!」 看守A「うわっ…黙れ、囚人!」
道化エルフ「…始まるヨ、NPCたちの“サーカス”が!!!(狂)」
【NPC同士の争い】
敵対したら罪を償う方法が無い、悲しき宿命を持つのが―――NPC達です。非雇用時のフォロワーや一般NPC同士が互いに争うことは大変珍しい光景ですが…例を挙げると、「あるNPCが敵対者にダッシュ攻撃を仕掛けた時に、他者の攻撃よって敵対者が絶命/戦闘終了。攻撃の勢いが止まらずに、敵対者の後ろに居たNPCに当たってしまった(誤爆)」ような、非常に稀なケースもあります。他にも、「AIPackageで第三者NPCを攻撃するように設定した場合」や「シャウトを使うNPCをModや自作/追加している場合」には、このような「NPC同士の争い」の問題が起こりやすくなるようです。
争いが始まると、彼らはどちらかが死ぬまで確実に「殺し合い」ます(臆病だと一方的な結末に…)。なんとかして、この問題を食い止めたいと考えました。まずは、「彼らが争っている時にどのような状態になっているのか?」と「信頼を元に戻す方法(相手の罪を許す)」を確かめるために、簡単な実験をしてみました。
<実験方法>
フォロワーではない一般人で、FactionやRelationshipなども互いに関係していない、不死のNPCを2人用意します。片方をもう一方の正面に立たせ、コンソールで「Playidle KillmoveShortA」を実行(AIで攻撃させた場合とほぼ同じ意味)。すると、プレイヤーとは一切無関係な状態で、「普段は大人しいNPC同士の争い合い」を見ることができます。
※プレイヤーがKillmoveを行うNPCの近く(射程内)に居ると、優先的に殺害されますので注意!!
<結果>
敵対後は、互いのAggressionやRelationshipには変化がありませんでした。争いが生じると、通常の場合はどちらかが死ぬまで、殺し合いを続けました。不死属性や保護属性を持つ場合、一方が膝を着いている間に、もう一方が別のCell(区画)に立ち去れば、争いがいったん止みます。隣接したCellの場合、プレイヤーが立ち去った方のNPCと同じCellに移動すると、膝を着いていたNPCが追いかけてきて再び争いが始まることもありました。互いが別々のCellにいる時に、Tキーで時間経過をはさむだけで、争いは完全に終結します。
<考察>
もしプレイヤーがこのような場面に出くわした時は、一刻も早く別のCellに立ち去って時間を置かなければなりません。プレイヤー自身が同一のCellに居続けることで「NPC同士の殺し合い」を意図せず助長し、本来ならば生きれたであろうNPCが死んでしまう危険性があるからです。
仲裁する方法としては、「鎮静系の呪文」を片方のNPCに対してかけてやれば、争いを止めます(NPCのレベルが高い時には、効果を出すにはある程度の「幻惑」スキルも必要です)。鎮静が解けた後は、どんな重罪を犯したとしても互いの関係が修復し、それぞれが何事も無かったかのように日常に戻ります。
しかしながら、争いの原因が各ActorのAggressionやRelationship、Faction、Quest、Scriptに起因する場合には…NPC同士の敵対の根本を断つことは、コンソールやCKでの編集を駆使する以外の方法ではほぼ不可能と考えられます。一時的に「鎮静」などで落ち着かせることで、その場の争いは止みますが、呪文が解けた時に両者が近くにいた場合には、すぐに再発してしまいます。
【NPCが犯罪を行う特別なケース】
バニラの状態ではNPCが自ら犯罪を犯すことはありません。そう見えるイベントが用意されているだけのようです。リフテンに現れる“盗賊”も何かを盗んで逃げているのではなく、元々Aggressionが高く設定されていたり、街の住人達に嫌われる「敵対Faction」に加入しているから追われています。マルカルスのオープニングでマルグリットを殺害する“ウェイリン”も、似たような感じです。一部の上述したようなQuestによるイベントを除いて、「NPCが犯罪を行う特別なケース」があります。
<誤爆による過失>
「ダッシュ攻撃」や「シャウト」による誤爆です。鎮静が効く対象ならそれで解決できますが、無理な時はプレイヤーが別のCellに逃げ込んだり、思いっきり走ってCellの区画を変えるしかありません。
<プレイヤーの命令に従った犯罪行為>
命令に従うということは、主にフォロワーによる犯罪です。例外として、一時的に味方になって同行してくれる“チームメイトNPC”は、Eキー長押しで命令を出せる人もいます。彼らにプレイヤーが命令を出した時点で、「全ての責任はプレイヤーが背負う」ことになります。
<自作したAIによる、傷害および窃盗>
これは通常のバニラの状態では起こり得ない、新たなケースです。UseMagicやUseWeaponを使用した「暗殺AI」、AcquireやActivateを使用した「収集AI」をModderの方々が製作し、フォロワーの行動を飛躍的に進化・拡張させたことで生じた、全く新しい問題です。具体的な問題の解決方法やどんなことが起こり得るかは、未知の領域と言えます。現在までに筆者が把握できている範囲で、分かっていることを列挙してみます。
【NPC犯罪の法則】
筆者自身のケーススタディの結果なので、信憑性は低めです…。情報不足を補うために、Wikiや書き込みの調査に加えて、コメント欄で教えていただいたことも合せて、記載させて頂きました。
<犯罪の判定に関して>
・プレイヤー同様に、NPCの「傷害行為」と「窃盗行為」は、同等の犯罪として処理されるとは限らない。(特に窃盗行為の挙動が特殊です。【NPCのスリと対象の敵意の変化】を参照のこと。)
・プレイヤーと同様に、
NPC自身のPerkやスキルレベルの成長が反映され、「見つからずに犯罪を行える」ことがある。(例:傷害はNPCの「隠密」スキル、窃盗はNPCの
「スリ」スキルによっては、ターゲットに全く気付かれない場合もある。)
《訂正》「スリ」ではなくどちらも「隠密」スキルによって見つからないようです!
<犯罪の責任に関して>
・
フォロワーになっている状態のNPCが、AIPackageよって自発的に起こした「犯罪行為全般」は、
全てプレイヤーの責任になる。(例:UseMagicやUseWeaponによる傷害行為、Acquire/Activateによる窃盗行為)
・プレイヤーが
「目撃されているかどうか」が、「犯罪の責任」と「犯罪歴(TrackCrimeによる記憶)」を決定している。隠密や透明化でプレイヤーが発見されていない時に、NPCが起こした犯罪の責任は、プレイヤーの罪にはカウントされない(賞金がつかない)
⇒
「逃げ殺し」に関してはこの説が有力。プレイヤーが「遠くのCell(区画)に逃げる=検出されていない」ので、殺害された被害者や目撃者に記憶されない。その間にNPCが見つかれば、NPC自身が敵対される。(逮捕や交渉による解決は無いので…基本、殺し合いに発展)
<窃盗に関して>
・「窃盗/スリPackage」で盗ませた場合、プレイヤーが発見されていない限り、「窃盗」は無限にできる。「スリ」は途中で気付かれることがある。
⇒万引きのように設置型Objectを盗る「窃盗」と他人のインベントリからアイテムを盗み出す「スリ」は、犯罪検出の内部処理による判定が異なる可能性あり。
・フォロワーではない
「第三者のNPC」が、AIPackageによって自発的に起こした
「スリ」は、
何故か無関係であるプレイヤーの責任になる。
【犯罪の仕組み(NPC編)】
いよいよ、最重要テーマである
『NPCの逮捕の仕組み』の謎に迫ります。NPCが逮捕されるケースは非常に稀です。記事の執筆にあたり、ネットをくまなく探しましたが…該当する情報はほとんど見当たりませんでした。熟練したプレイヤーでもその現場を実際に見たことのある方は、少ないと思われます。
NPCの逮捕に関わるQuestを探したところ、
「DGArrestQuest」に行き着きました。このQuestには「ArrestingGuard(衛兵)」と「Criminal(犯罪者)」という2名のAlias(登場人物)が設けられています。Criminalの条件は「GetIsID」と「GetIsVoiceType」により、「プレイヤーでなく、NPCのボイスタイプを持つ者」と定義されています。NPCであれば“フォロワーかどうかは問わない”ということになります。
NPCが何らかの犯罪を行うと、NPCと近くに居る衛兵がこのQuestのAliasを被ります。しかし、
この段階ではまだAliasの挙動は伏せられています。犯罪が発生すると、別の内部処理によって衛兵が駆けつけて、「首長の命令により、止まるよう命じる!」と、NPCに対しても「逮捕」を行おうとします。NPCはプレイヤーと異なり、声を掛けられても自ら降伏することは無いため…何度言われても、耳を貸そうとしません(完全にシカトです)。遂に時間切れとなり…衛兵は敵対し攻撃を仕掛けます。通常のNPCならば、駆けつけた複数の衛兵隊によって殺害されてしまうでしょう。しかし、フォロワー等の場合は保護/不死属性がついていることが多いので、膝を着いて生き残ります。そして責任を負わされるプレイヤーが、一時的に事件現場から逃げ出してほとぼりが冷め、
「非戦闘状態」になって初めて…このQuestの伏せられていた挙動が現れます。
「方向音痴のSkyrim」のUNI様が製作された、「ブレナインがスリを行うようになるサンプルMod」にて確認。「鎮静」の呪文で、一時的に戦闘状態を解除した時の状況です。―――ブレナインは“衛兵の兜”を盗んで逃げているところでした…。
NPCは戦闘状態が解除されると、QuestAliasに設定されたAIPackage
「DefaultStayAtCurrentLocation」によって
事件現場に留まり、追従しなくなってしまいます。「よくもこんな目に遭わせてくれたな。」という台詞をつぶやき、逮捕された場所でプレイヤーが来るのを待ちます。Aliasの衛兵もまた、同じように現場近くで待機しています。フォロワーに話しかけると、QuestのDialogue「行こう、衛兵とのことはまかせてくれ。」という選択肢が現れます。これを選択することで、NPCは「逮捕」の拘束から解放され、再び追従できるようになります。同時に
プレイヤーには、フォロワーが行った罪状がそっくり移行され、衛兵が敵対します。後の処理は、プレイヤーが犯罪を起こした時と同じです。
バニラには“好き勝手に犯罪を行うNPCが居ない”ため、このQuestは元々、“プレイヤーがフォロワーに犯罪行為を間接的に行わせた時のリアクション用”に設計されたものだと考えられます。しかし、第三者のNPCもフォロワーのように現場に拘束されてしまうという問題点があるようです。(Questの優先度90。凄まじい拘束力!…汗)
試しにAliasCriminalの条件に「GetInFaction」で、犯罪者は「プレイヤーのフォロワーになっている」という条件を付け加えた、“バグFixMod”を作成したところ、フォロワーになっていないNPCが「逮捕」されることによって、その場に留まり続ける問題は無くなりました。しかし、第三者のNPCの犯罪の責任をプレイヤーが負わされる方の問題は解決されませんでした。罪の所在はもっと根深い所に隠されているようです…。
【NPCのスリと周囲の敵意の変化】
前章に関連した内容の製作になりますが、近頃はNPCに「スリ」を行わせる方法を研究しています。しかし、「スリ/収集AIPackage」を使って盗ませた場合、面識のない第三者のNPCがした犯罪であっても、何故か無関係のプレイヤーが責任を問われるという謎のバグがあるため、なかなか利用や実装に至れない状況にあります。問題解決の糸口として、【逮捕の仕組み(NPC編)】から現状を分析してみたいと思います。
衛兵には一般住民NPCとは少し違う、特殊な挙動があるようです。「スリPackage」で第三者NPCが盗みを働いた場合、何故か衛兵とだけは敵対しないようです。筆者の完全な憶測になりますが、少ない手掛かりからある仮説を立ててみました。
仮説:「目撃者/被害者」と「逮捕しに駆けつけた衛兵」は、それぞれ敵意の変化の仕方が異なっている。
仮説を裏付ける重要な鍵として、『第三者のNPCが行ったスリでは、賞金額がプレイヤーに加算されない』ということが挙げられます。この影響により、想定外の問題が生じている可能性があります。以下、あるケースを例に考えてみます。
<被害者が衛兵のケース>
結果:
犯人NPCが衛兵に敵対され、プレイヤーは敵対されない。
衛兵Aが第三者NPC(ブレナイン)に“パン”を盗まれたとします。衛兵Aはその場で盗んだ犯人NPCと敵対。自分で逮捕しようとする他に、目撃者としても市警隊に報告して救援を要請します。すると、近くに居た衛兵Bが現場に駆けつけます。衛兵Bは到着したものの、犯人はプレイヤーではなくNPCです。しかし、バニラでは盗みを働くのは必ずプレイヤーのはずなので、間違ってプレイヤーを逮捕しようと、Questに連動する内部処理が同時に走ってしまいます。Questの処理では対象のConditionsを調べますが、プレイヤーは実際に手を汚したわけではないので、賞金がついていません(
GetCrimeGold=0.00)。したがって、その後の対話および敵対のフラグが立ちません。一方、犯人NPCは衛兵Bに「首長の命令で、止まるように命じる!(逮捕)」と言われても全く降伏しないので、衛兵Aは攻撃を止められません。しまいには…衛兵Bも堪忍袋の緒が切れて(時間経過)、止むを得ず衛兵Aと共に死を以って罪を償わせようと、攻撃を仕掛けます。こうして、
『衛兵はプレイヤーには敵対せず、犯罪を行った第三者のNPCだけに敵対する』、という様相を呈するのかもしれません。⇒被害者の衛兵Aは盗まれた時点で敵対化。後から駆け付けた衛兵Bは犯人が逮捕に応じないので、時間経過による敵対化の可能性あり。
<被害者が一般住民のケース>
結果:犯人NPCは、被害者NPC(とその家族や仲間)と目撃者の衛兵に敵対される。駆けつけた衛兵にはしばらく敵対されない。プレイヤーは被害者NPCに敵対される。
住民(アムレン)が第三者NPC(ブレナイン)に“家宝の剣”を盗まれたとします。住民の逮捕方法は「犯人が武器を降ろす」なので、それを確認します。無論、犯人NPCは戦闘中に自主的に抜刀/納刀による「降伏」を行いませんので、敵対したままです。住民は被害者になると同時に、目撃者として衛兵に報告します。すると、近くに居た衛兵Xが現場に駆けつけます。衛兵Xは到着したものの、犯人はプレイヤーではなくNPCでした。こちらも先程と同様に、間違ってプレイヤーを逮捕しようと、Questに連動する内部処理が同時に走ってしまいます。しかし、プレイヤーは実際に手を汚したわけではないので、賞金がついていません(
GetCrimeGold=0.00)。したがって、プレイヤーは衛兵Xとの対話および敵対のフラグが立ちません。―――ここから違いが生じます。被害者が衛兵ではない「
住民(IsGuard=0.00)」だということが、大きく影響していると考えられます。
“衛兵”はプレイヤーに話しかけることで逮捕が開始しますが、“住民”は少し特殊であり…Dialogueが用意されておらず、「武器を降ろすという動作」が逮捕になっていて、一回だけ許してくれる仕様になっていました。しかし、今回はプレイヤーが行った犯罪ではないため、そもそもプレイヤーには『反省する機会自体が用意されていない』ようなのです。住民からしてみれば「何もしてないあなた(プレイヤー)が、武器を降ろした(逮捕に応じた)ところで意味が無いよ!」という感じでしょうか。つまり、被害者の住民が第三者NPCにスられた際に「プレイヤーを巻き込んで発生する内部処理的な敵意」を衛兵とは違って、解除する方法が無いのです。
コンソールで敵意を確認したところ、ActorValueには何の変化も見られませんでした。しかし、“プレイヤーと犯罪NPC”の両者は…被害者のCrimeFactionに属する他NPCで、Actor情報の「Aggressionが1以上」かつ「Assistanceが1以上」に設定されている“仲間を助ける勇敢な性格の者”、全員と敵対してしまいます。どうも…敵意の所在はRelationshipなどのActorValueの変化ではなく、プレイヤーが「TrackCrime」の犯罪者リストのようなものに記録されてしまった状態にあると考えられます。そして、たとえそのリストに載ったとしても、賞金がついていないため…衛兵には犯罪者であると認識されない状況になるのだと、推測しています。
このようにNPCから、あらぬ罪をなすり付けられてしまうと…TrackCrimeのリストがリセットされるような処理が行われない限り、被害者とその派閥の人から、永遠に追われ続ける運命を背負ってしまうことになると思われます。「冤罪にも程があるよ…」と、頭を抱えていたのですが…少しだけ救いがありました。プレイヤーが勘違いした被害者の追跡を逃れ、かつ、正義感の強いNPCが近くに居ない安全な場所へ移動し、ゲーム内の2時間を上述のNPC達が居るCellと別のCellで待機することで、“被害者本人”のみのプレイヤーへの疑いは晴れるようです。何故か1時間ではダメなようです。ですが、TrackCrimeで逮捕を拒絶した(一度しかない降伏の機会を失った)…いわゆる「お尋ね者」になってしまうので、当人との示談が成立していても、街に居る傭兵や正義感の強い人たちからは、手配犯として追われ続けることになります。
―――根本的な解決にはなっていないので…目下のところ、解決策を検討中です。
【導き手の転落】 vol.2~言葉の罠~
アシス「お前が気が狂ったのにも…多少、同情するよ。入団してまもない新参者が、あれよあれよと言う間に、責任まで背負う運命となった。そして、この事件だ…。まぁ、元々の人格がイカれている可能性の方が、俺には遥かに大きく感じられるがな…」
道化エルフ「ケッケッ…!本気で私を心配シテくれていたのか?それとも、単に“サークルの座”が1つ空くのを待ってイタとか?…ネ。どちらでも構わないケレド、今の落ちぶれた私は…見ての通り、“滑稽な道化”に過ぎナイ!!…折角、皆でここまで遊びに来てくれたノダ。―――休暇の初日に、まずは面白い“余興”をヒトツ!お見せしようジャあないか!!」
アシス「そんな口を叩いて、やれるもんならやってみろ!」
(ガチャァン…!!…ギコギコ!!!)
看守B「なんて騒々しい奴らだ…!面会時間は終了だ。早く立ち去れ!!」
看守B「…んんッ!?……貴様、何故…斧を持っているッ!?…牢にブチ込む前、確実に所持品は全て没収したはずだ!!」
道化エルフ「道化師がよく行う、ちょっとした“手品”…というかコレは、あなたのお仲間の“看守の誰か”から戴いたものだヨ。…彼はもう、覚えていないかもしれないけどネ。身内に裏切り者が居るゾ?…トンデモない悪徳衛兵が!…さぁ、どうする?」
看守B「なっ…仲間を何らかの手を使って、買収したのか…囚人!?…許せん!!」
道化エルフ「ケケケッ…眼が泳いでるゾ…!!信じるか信じナイかはあなた次第。だが、他の囚人達も私のように武器を持ち、今まさに脱獄ヲ計画している可能性もアル。決行の時は、刻々と迫っているノダ!…さぁ、どうする?…どうするんダ!?」
看守「(ぐぬぬ…!?)…下がれ、とにかく武器を降ろして下がるんだ…このォ!!」
(ガシャン!…ニュッ!!)
道化エルフ「
“洗脳”(プォーン!!)」
―――看守Bは操られ、狂暴化した―――
道化エルフ「
まずは私だけでなく、例の裏切り者にも罰を与えヨ!…あなたの後ろに居る見回りの衛兵、そいつダ!!」
看守B「(ギロッ…!)ウラァァァァ~…!!!」
アシス「何が起きてるんだ…?!この監獄で!!」
錯乱した看守Bは道化エルフと衛兵を殺そうと、持っていた鍵で自ら牢の扉を開け…入ってしまう。我を忘れ、周囲に居たアシス隊にも見境なく襲い掛かる…!!
道化エルフ「“開錠”に感謝するヨ、看守のアニキ!…これは私にはできない“おつとめ”だからネ!!…すべてが演目通りの結末を迎えるのダ。」
アシス「(アイツの仕業だ…完全に頭のネジが飛んでやがる…こんな奴が“導き手”では、同胞団は近い将来…確実に終わる。…早く、何とかしなければ……)」
…つづく。