ローグライクの説得力のあるバーサーカー敵AI有限状態マシンとは


7

私は長い間作成してきたローグライクで説得力のあるバーサーカーの敵を作成する方法を探しています。どのような種類のアクションを実行できるか、および警告できるテキストメッセージを検討する場合、NetHackのようなゲームを想定することができます。

これには2つの理由があります。

  1. 私はこの問題を1年以上解決しようとしてきましたが、失敗しました。従うべき例。
  2. このSEには、エンティティの状態のマッピングが全体としてどのように見えるかを示す例が一般的に不足しています。そのような例があることはコミュニティにとって役立つでしょう。

私が必要なもの:

私がバーサーカーと言うとき、私は盲目的な怒りに振り回され、暴力や流血と対立している他の実体を攻撃できる敵を意味します。多くのRPGで行われているように、攻撃するターゲットにランダムに切り替えるだけではありません。この目的のために、希望するステータス効果やバフの追加を自由に想定してください。これらの州に関連する情報を詳細に記載してください。

凶暴な実体は彼の怒りを単に強さの増加を伴う状態変化ではない方法で表現する必要があります。これは問題に対する非常に浅い解決策です。実体はバーサーカーのような気分にはなりません。

私が試したこと:

昨年、3つの異なるアイデアを試しました。そして、それらのどれも満足しません。この問題の解決策は、まったく新しいものか、これらのいずれかの「修正」です。私はジュースを流すためにそれらを主に含めています。

  1. 私が最初に試みたのは、エンティティの強さを増やし、(敵のリストから)ターゲットをランダム化し、彼にわいせつな言葉を叫ぶなどの単純なベルセルク状態でした。この状態になると、敵は死ぬまでそこに留まります。
  2. 次に試みたのは、実際に上記を変更したものです。敵は非常に平たく感じられ、彼を落ち着かせたり、彼の怒りから彼をノックしたりする方法はありませんでした。私は落ち着く機能を追加し(呪文やその他の効果で)、敵を通常の状態に戻し、そこから逃げるような他の状態に遷移できる状態を追加しました。これにより深さが増しましたが、バーサーカーの状態はさらに浅く、破壊的ではないように見えました。
  3. ここから私はそれをすべて廃棄し、より新しい何かを目指しました。基本的に、遷移状態に基づいて敵が自分自身にキャストできるバフ。一度キャストすると、これは敵の振る舞いを変更し(ターゲティングの場合)、敵からの侮辱を無作為に発射しながらダメージを増加させます。それから、彼は他のどの州にも入ることができて、怒り続けることができました。だから彼は逃げるかもしれないが、それでも挑発する。彼は治るかもしれませんが、それでも激怒し、多くのダメージを与えます。これは良いですが、根本的な問題はまだ残っています。彼は本当に怒ったようではなく、ただ怒っています。主にあなたは通常、単独で敵に遭遇し、バーサーカーが好まない他の敵とは遭遇しないため、ランダム化の側面が低く抑えられます。

他にどのように私は男をバーサークしたように見せることができ、そして単に腹を立てた/口を汚しただけではありませんか?


これは境界線リストの質問だと思います。だから私はこれらの要件を課します:それは移行のためのすべての状態と条件を示す非常に詳細な完全な回答でなければなりません。そして、それは推測以上のものでなければなりません。自分のローグライクでこれをテストする必要があります。そうでない場合は、ベルセルクのステータスを把握する上で、これが「最良の」ソリューションである可能性がある理由が明らかです。

これが閉まっていても私は怒りません。私はそれが端を踊っていることに気づきました。

回答:


7

バーサーカー心理学

  • 彼は怒っています/攻撃的です。(したがって、彼は理由目標に腹を立てる必要があります。)
  • 彼が腹を立てているとき、彼はより危険になります(また、彼がもう腹を立てていなければ、彼は通常に戻ります)。

トリガー-彼が凶暴になる理由

  • 彼は侮辱される
  • 彼は怪我をします(またはもっと興味深いことに、彼は特定の臨界量を傷つけます)

効果

  • 彼は強くなります
  • 彼は速くなります
  • 彼はより健康になります
  • 彼は侮辱を叫び始めます
  • 彼はダメージを与えた人を追跡し始めます

プレーヤーディフェンス

  • プレイヤーは凶暴に殺すことができます
  • 環境破壊は凶暴者を殺します(彼を罠に導きます)
  • プレイヤーは凶暴化を遅らせることができます
  • 他のNPC /プレイヤー/敵が凶暴なクリティカルを傷つける->ベルセルクは今新しいターゲットに従う
  • 時間が経つと凶暴な人は落ち着きます(彼が再び殴られない場合)

これはどうやって遊ぶのか

プレイヤーは敵に会います。a)プレイヤーは複数回小さなダメージを与えます(敵は反撃しますが、凶暴にはなりません)、b)プレイヤーは大きなダメージを与えます。敵は多くの体力を失いますが、凶暴になります。プレイヤーは今逃げる必要があります。逃げる間、彼はa)さらにダメージを与える、b)暴走を遅くすることができる もし敵の滞在の凶暴またはダイス。場合)B敵は彼を減速(落ち着き、)重大なダメージを与えることはありません。彼が落ち着いたら、もう一度批判的に攻撃できます。多分彼は今死にます:-)

注:暴走は彼を傷つけるターゲットを攻撃するという私の声明に同意しない場合は、暴走が最も近いキャラクターを攻撃するように変更できます。もし彼が遠くから攻撃されたなら、これは興味深いでしょう。(剣士の場合も同じです。)


4
さらに考えられるアイデア:1.バーサーカーにターゲットと彼とターゲットの間の誰かを攻撃させます。他の敵にこれに気づかせて邪魔にならないようにすればさらに良いでしょう。2.逃した攻撃、または彼の側で他の人が殺されるのを見ることも、トリガーとして役立つかもしれません。つまり、2人の野蛮人があなたを攻撃します。あなたは1人を殺し、もう1人は凶暴にします。3.トイレ口を失う。ベルセルクモードがトリガーされたときの1つの叫びはおそらくOKですが、その後彼はあまりにも攻撃に集中しすぎて話を邪魔することはないと思います。多分、彼が近接距離に到達したとき、単純な攻撃の叫び声(例えば、「死ぬ!」)を追加します。
Ilmari Karonen、2012

@IlmariKaronen私はこれらのメモが好きです。特に#1。それは、大きなグループの誰かががらくたを失い、皆がカバーを求めて走るようにとても感じます。その悲鳴は私に凶暴になる。ここでの答え自体は非常に良い出発点ですが、それ自体が凶暴であると感じているかどうかはわかりません。移行する他の州についていくつかのメモを参照してください。生きていると感じられる優れたAIの多くは、エンティティがどのように移行し、何をするかです。通常のように、動揺から戦闘まで横ばいになるのは少し耳障りです。
DampeS8N 2012

最も重要なことは、キャラクターの凶暴状態をサポートするアニメーションが必要だと思います(彼は赤い頭を得る、大きくなるなど)。キャラクターの感情的な状態を伝えるには、視覚的なフィードバックがAIの動作よりもはるかに重要です。
Fabian、

AIの状態は次のようになります。カーム- > GettingAngry(アニメーションは&&、すべての近くのオブジェクトにいくつかのダメージを与える) - >アタック/チェイス- > BeingExhausted(彼は特に脆弱だ) - >カーム
ファビアン

@Fabianそれはローグライクの視覚的な完全性に依存します。この場合は、テキストグリフのことです。だから私ができる最高のことは、赤い/点滅するキャラクターです。私が実際に何が起こっているのかをプレイヤーに理解させるための行動以外には何もないので、この問題は難しいです。検査時にそれらを凶暴なものとしてラベル付けできますが、それはどのような意味をもたらしますか?アクションは大声で話します。
DampeS8N

7

答えはあなたが「バーサーカー」と思っているものだけに依存すると思います。

歴史的なバーサーカーは、自分の安全や他の側の安全を含め、他のことをほとんど考慮せずに敵に従事し殺害することに注意を向けたショック部隊でした。さまざまな情報源は、殺害の際にどれだけ無差別であったかについて意見が分かれています。中には、周囲の誰かや全員を故意に殺害したと説明している人もいれば、恐れを知らない戦士として説明している人もいます。以下は、ウィングペディアを介したイングリガサガからのかなり中道の引用です。

「彼(オーディンの)の男性は鎧なしで急いで前進し、犬や狼のように怒り、盾を噛み、クマや野生の牛のように強く、一撃で人々を殺しましたが、火も鉄も彼らに告げませんでした。バーサーカーガングと呼ばれる。」

だから、バーサーカーの私の概念は次のようなものになるでしょう:

  • 完全に大胆不敵、おそらく痛みに気づかない。どんなレベルの敵にも積極的に関与します。
  • 彼らの周りで起こっている他のものを除外して、戦いに非常に焦点を当てました。
  • 殺害において完全に無差別ではありませんが、おそらく彼らが邪魔をした場合、友好的兵士(おそらく気づくことさえない)を攻撃することをいとわないでしょう。周りに敵がいない場合も友軍を攻撃する可能性がありますが、敵がいる場合でも敵のターゲットを優先する必要があります。
  • 軽微または慎重な戦術を軽蔑する:突撃し、それらをビットにハックすることが、ここでのゲームの名前です。mêlée戦闘を優先しますが、可能であれば、十分に強力な遠隔武器(銃など、できればフルオートで敵に向かって走っているときに発砲)を使用する可能性があります。
  • 不自然に強いタフ -そうでないかもしれないタフなスーパーマンレベルが、彼らは間違いなく取得する必要がありますいくつかの攻撃と防御ボーナス、そしておそらくわずかな速度向上を。

では、これらの特性をどのようにゲームAIの動作に変換するのでしょうか。さて、ここにいくつかのアイデアがあります:

  • これは非常に簡単なことですが、バーサーカー 1つのヒットポイントに到達して出血している場合でも、逃げることはありません。そのコードをオフにしてください。他の「防御」戦術のための同上。

  • 次の順序で戦術オプションを優先します。1.攻撃。2.ターゲットに向かって移動します。3.その他すべて。特に、バーサーカーは、たとえアイテムが現在持っている武器よりも優れていたとしても、敵が見えたらアイテムを拾うのを止めるべきではありません。(ただし、素手から既に保持されているmêlée武器への切り替えは、攻撃よりもかなり優先される可能性あります。)

  • ターゲットの後の攻撃追跡の両方が同時に有効な戦術オプションになる可能性がある場合、クリーチャーが通常は実行できない場合でも、バーサーカーに同時に両方を実行する能力を与えることを検討してください(「通過中」の攻撃)それ(場合によっては、補正の精度が低下します)。このようにして、あなたのバーサーカーは機会の攻撃を受けるために彼らの料金を遅くする必要はありません。

  • ターゲットの選択:少なくとも別の敵が大幅に近づかない限り(たとえば、現在のターゲットまでの距離の半分)、最も近い可視の敵(レベルに関係なく)を選択してバーサーカーに追跡させることをお勧めします。ターゲットが遠すぎない限り、一時的に視線を失ってもターゲットを追跡し続けます。これは、ひたむきな気持ちになります。ターゲットがmêléeの範囲内になったら、攻撃します。

  • パスファインディング:バーサーカーとターゲットの間に友好関係がある場合は、バーサーカーを攻撃し、ハックすることを検討してください。あなたが彼を作るかどうかはあなた次第です-少なくともターゲットへの他のパスがない場合は彼はそれを行うべきですが、パスファインディングで彼に友情を完全に無視させることも考えられるかもしれません。

  • (非バーサーカー)フレンドリーがバーサーカーが次に移動する正方形(そしておそらく彼のパスの次の1つまたは2つ)からも逃げるようにしようとすると、上記はおそらく最もうまく機能します。もちろん、混雑が多すぎると、間に合うように逃げることができないかもしれません...

  • 周辺に敵のターゲットがいない場合は、代わりにバーサーカーを近くの(隣接する、または1つか2つの正方形離れた)友軍に攻撃させることを検討してください。もちろん、友軍は逃げようとするべきだと述べた。バーサーカーが敵のターゲットを持たず、攻撃を行わない任意のターンで、ランダムに動き回らせ、ターンごとにランダムに落ち着いて通常の状態に戻るチャンスを与えます。

  • 武器の選択:上で述べたように、本当のバーサーカーはマレー戦闘で大勢でした。ゲームで特に一般的で強力な場合を除いて、遠隔武器は使用しないでください(たとえば、現代的な設定の銃など)。バーサーカーが遠距離武器またはエリア効果武器を使用できるようにする場合、ターゲット追跡しながらそれらを発砲させます(上記の「通過中」の攻撃を参照)。当然のことながら、副次的なダメージは無視する必要があります(バーサーカーは、他の敵があなたとバーサーカーとの間の線から外れるようにスクランブルをかけることは非常にいい感じです)。

  • そしてもちろん、バーサーカーは適切な攻撃、防御、スピードバフを持っている必要があります。また、疲労や恐怖の影響も受けないようにする必要があります。盲目になったり混乱したりした場合は、何かを打つことを期待してランダム攻撃をさせてください。

あなたはあなたが凶暴に通常の敵がそれに入る傾向がある状態になることを望んでいると述べました(それに傾向がある)。したがって、それをトリガーするものを決定する必要があります。IRL、伝統的に説明されているトリガーには、戦闘、激しい労作、ストレスが含まれます。ゲームの潜在的なトリガーには次のものがあります。

  • 敵を見て、
  • 攻撃、
  • 攻撃されている
  • 重傷を負い、
  • 戦闘で他の人を見て、
  • 他の人が殺されるのを見たり、
  • 戦闘の痕跡(血痕、死体)を見る。

それらのどれもおそらくIMOが自動トリガーであるべきではありません。むしろ、そのような各イベントがランダムに偶発的に凶暴状態を引き起こす可能性があり、確率はおそらく個人の傾向とイベントの重大度に基づいて変化します。また、いくつかのトリガーの組み合わせにより、バーサーキングが発生する可能性が高くなります。たとえば、目に見える敵が存在することで他のイベントがバーサーキングをトリガーするための前提条件となり、ヒットポイントが低いと他のトリガーのオッズが増える可能性があります。

また、単純なオン/オフの凶暴な状態の代わりに「怒りのメーター」を導入することを検討するかもしれません。たとえば、新たにトリガーされた凶暴化は、たとえば怒り= 1で始まり、攻撃と攻撃を受けてメーターが増加し、敵がメーターを減少させないようにします。怒りが少ない場合、凶暴は単に大胆不敵でバフになりますが、一般的に友軍への攻撃を回避しますが、怒りが増えるとバフが増えますが、バーサーカーの攻撃はますます差別されなくなります。怒りのメーターがゼロになると、バーサーカーは落ち着いて通常に戻ります。

わいせつな叫びについては、私はほとんどそれらを取り除きます:私は狂信者が攻撃に集中しすぎて、愚かな挑発に悩まされるのを見ています。凶暴状態が引き起こされたときに彼に何かを叫ばせることができ、恐らくmêléeの範囲に近づくと、大声で叫んだり、単純な戦争を起こしたりするかもしれませんが、それで十分だと思います。


編集:私が上で書いたものをもう一度読んだ後、私が言おうとしていることの本当の要点はこれだと思います:バーサーカーAI自体にあまり集中しないでください。結局のところ、通常の敵AIよりもかなり単純な、おそらくはるかに単純なものになるでしょう。代わりに、近くのバーサーカーを見たときに他の敵がどのように振る舞うか焦点を当てます—ここで本当に興味深いダイナミクスが発生します。


1
ターゲットの選択をやり直します。彼が誰かを追い始めると、彼は非常に狭い視野を持つことができたので、他の敵を見ることなく追い越しました。
Peter Taylor
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.