「非完璧な」AI戦闘員を作るには、どのような行動が必要ですか?


19

NPC 戦闘員を作成する場合、戦闘の戦術、タイミング、および攻撃の種類を最適化することでロボットデスマシンを取得するために何をすべきかが簡単に わかりますが、特異で予測不可能な敵を取得するのは難しく(そして戦闘ではより興味深い)。より有機的で型破りな敵を作成するのに役立つ行動(アルゴリズム?)

編集:私の特定のユースケースは、MMOのような敵、たとえばWorld of Warcraftの場合ですが、グラフィックスは少なくなります。それは人間と非人間の両方の敵(動物、モンスターなど)を意味することに注意してください

回答:


14

Gamasutraの問題に関する非常に興味深い記事があります。インテリジェントミス:愚かさをAIコードに組み込む方法(ミックウエスト)。

この記事では、プールゲームAIについて説明します。このようなAIを実装する場合、各撮影でボールをポットにするのは非常に簡単です。AIを「スマート」にしない単純な方法は、他の答えで提案されているように、ランダムな要素を計算に追加して、AIをよりミスにします。

しかし、このようなアプローチには2つの大きな欠陥があります。まず、予測不可能です。「イージー」モードでプレイしているプレイヤーの場合、AIが「ラッキー」になることは受け入れられません。あなたのランダムな要因がAIにさらに良いショットをさせたり、より価値のあるボールを打ったり、コンボをさせたりしたらどうでしょうか?何が起こるかわからないので、ラッキーであることは、イージーモードのAIの選択肢ではありません。

もう1つの欠点は、プレーヤーがAIの動作のパターンを識別しようとすることです。そして、単純なランダム係数では、パターンはありません。しかし、それはプレーヤーが実際にはパターンをまったく見ないということではなく、まったく逆です。AIが幸運になるとすぐに、プレイヤーはその行動に戦略を見るでしょう。この記事では、プレーヤーはAIがポジション戦略をプレイしていることに不満を言っています。角度精度にランダムな要因がある場合

私の観点からは、この目を見張るような記事を読んだ後、不完全なAIは単純化の要素としてランダム化を使用すべきではありません。それはまったく逆です。より簡単なAIはより賢くなければなりませんが、プレーヤーを助けようとします。

プールゲームの例の記事で、「イージーモード」AIを実装するための最良のオプションは、実際にはすべてのランダム要素を削除し、ポジショニング戦略を追加することでした。AIはプレーヤーに簡単で素晴らしいショットを準備するためにボールを打とうとします。

このようにして、プレーヤーは自分が幸運なったと思うでしょう。そして、それはあなたがそれを簡単にプレイするときにゲームに期待していることです。


1
また、AIがプレーヤーが何を利用できるかを覚えておくと便利です。開発者は、彼が「簡単なポット」を持っていると思うかもしれませんが、彼がそれをポットに入れることができないなら、ケース戦術はAIによってあまり使われるべきではありません。また、プレーヤーを訓練し、彼ができないことを覚えて、できる限り頻繁にこれを故意に悪用することができるので、有益です。
ジョナサンコネル

私はランダム化を使用しないことに同意しますが、「プレーヤーを助ける」ことに同意しません。それは不正行為のようなものであり、プレーヤーについているためにさらに悪いことです。
o0 '。

@ Lo'oris:まあ、私はそれを嘘だとは思わない。プレイヤーがゲームに彼に簡単に行くように言うとき、彼はゲームが穏やかであることを期待しています。あなたがゲームをプレイしているとき、あなたはそれを発見したばかりの友人と本当に上手です。それは誰にとってもゲームをより楽しくします。
ティン

1
Shawn Hargreavesによるランダム化に関する優れたブログ投稿と、人間がランダム性のパターンを発見する能力があります。これは、この場合、プレイヤーがAIプレイヤーの戦術を誤って判断することを意味します。
ジョナサンコネル

1
実際、精度のランダム化は良い方法だと思います。、時々彼は偉大なミスを犯すし、より良いボールをヒットすることはなく、リアルプレーヤー付き。
AttackingHobo

10

重要な概念は、NPCに「完全な知識」を与えないようにすることです。

  • 計算を伴う決定またはアクションに関するランダム化された誤差範囲。照準を合わせている明らかな例(ストームトルーパースナイパー)。彼らが常にあなたに当たらない場合、それはより現実的です。
  • 視線...彼らがあなたを見ることができない場合、それは猫とマウスの面白いゲームを作ることができます。
  • チームの戦術は、ゲームのタイプに応じて、状況に適応する敵の方がはるかに興味深い場合があります。たとえば、あなたが撃たれた場合、あなたは盲目的に突撃することはありません、あなたは入ってくる火が収まるまで隠蔽します。あるいは、近くにチームメイトがいる場合は、急いで駆け込んだ方が安心でしょう...これらの動作をシミュレートして、NPCが生きているかのように動作させることができます。

もっとたくさんの例が提供されると確信しています。おそらくあなたのゲームについて教えていただければ、より具体的になるでしょう:-)


4

完璧なAIを戦闘可能にする簡単な方法の1つは、入力または出力のいずれかに「ノイズ」を追加して、不完全な決定を下すことです。ノイズとは、ランダムな要素を意味します。

出力の小さな例を次に示します。

  • 完全アルゴリズムは、スコアでランク付けされた3つの可能なアクションを生成します。
  • 各スコアにランダムな値を追加します。
  • 最高のスコアを選択してください。

入力に関するいくつかのアイデアを次に示します。

  • アクションが対戦相手の健康状態に基づいている場合、ランダム要素(0〜100の健康状態バーの場合は+/- 10)をAIが知覚する状態に追加します。
  • アクションの評価についても同じです。AIが他の攻撃よりも強い攻撃を知っている場合、そこにいくつかの値をランダムに加算/減算します。

考慮すべき明らかなことの1つは、AIの速度です。ほとんどのゲームでは、AIが反応することができMUCH(RTSゲームでは非常に目に見える)(特に戦闘で)速く、人間よりも、見掛けマルチタスクを実行します。そのため、AIを少し遅くして(おそらく適応的に)AIを実行し、決められた時間内に実行できることの量を制限する(つまり、0.5秒ごとに1アクション)必要があります。

これがお役に立てば幸いです!


3

あなたが何をしようとしているかを正確に知らずに、直接役に立つ答えを出すことは困難です。

私はあなたを助けるかもしれない主題について言いたいことが2つあります。

最初に(そしてこれが最も重要なものです)、敵をより面白く人間的に感じさせようとする場合、戦闘戦術は無関係です。プレイヤーを敵が生きていると「信じさせる」ための秘Theは、アニメーション、サウンド、および細部を使用して人間の行動を暗示することです。完璧なAIは、角を曲がって歩き、プレーヤーを見て、撃つかもしれません。人間のAIは、角を曲がって歩き、プレーヤーを見て、驚いた顔をして警戒して叫び、撃ちます。最初のものはロボットのようです。2番目は人間のようです。どちらも、撮影の直前にアニメーションを挿入することを除いて、すべての方法で同一のAIを使用しています(または、撮影中に戦術的な振る舞いを同じに保つため)。

第二に、ランダム化を避けます。プレイヤーは、デザイナーが彼らがそうするだろうと思っているほど感謝しません。プレイヤーは「コンピューターが100のうち1つを生成し、その後に5、3、および4が生成されたため、最後の4ショットのエラー係数は1%、5%、3%、および4%でした。なぜこのラウンドで0.5秒で死んだのか」プレイヤーは、見逃すことのない敵を時々見逃したり、認識できない理由で繰り返し釘を刺したりします。優れたゲームデザインは、主に人間のプレイヤーができるパターンを構築することですプレイヤーが幸運に恵まれたかどうかを判断するのではなく、彼自身の判断とスキルと直感に基づいて、プレイヤーの成功を観察し、学び、打ち負かします。ランダム化の衝動は、卓上ゲームやギャンブルゲームの経験から生じます。どちらもビデオゲームとは信じられないほど異なる媒体です(また、ある媒体で機能するものは別の媒体では意味をなさないことがよくあります)。


1

大学のAIコースで、AIをより「人間的」で完璧ではないものにするというトピックがあったことを覚えています。それは何年も前のことだったので、頭の中でいくつかの箇条書きを思い出しただけです。

  • 「移動のライブラリ」を使用します。オークと戦っているなら、時々繰り返す3つの戦闘ルーチンを彼に言ってください。これにより、予測しやすくなるため、戦闘が容易になります。これは、あなたが望むものの反対に思えますが、AIの「完璧なマシン」を減らし、「同じ動きを何度も繰り返す」ようにします。
  • 可能であれば、サブ最適化してください。あなたが言うように、AIが最適な動きの計算に基づいている場合、この計算に人為的な制限を設けます。検索を浅くするか、ステップ数を制限します。これまでで最高の動きの代わりに、AIは単に良い動きを選択します。これにより、最高の動きよりも多くの良い動きがあるので、敵の行動に多くの多様性を加えることができます。
  • 故意にミスを犯してください。最高の動きの代わりに、2番目または3番目の最高を選択します。または、有用性の低い移動を選択します。これにより、「予測不可能性」のポイントに対処できます。

もちろん、これらは各ケースで調査およびプレイテストする必要がある単なる一般的なアドバイスであり、実際にAIが意図したものよりもさらに人工的に見える場合があります。しかし、それらは良い出発点だと思います。


0

このポップアップが表示され、過去に使用したアイデアを共有したいと思いました。

キャラクターに3つの動きがあり、それぞれにスコアが付けられているとしましょう。スコアが高いほど動きが良くなります。(他の回答では、このスコアの作成にノイズを追加することについて説明しています。)

  • 剣で攻撃する(30ポイント)
  • 火の呪文(50ポイント)
  • 氷の呪文(20ポイント)

合計ポイントを合計する(100)

キャラクターの知性の統計値を、この統計情報の最大可能値(100のうち60としましょう)から取り出します。

0(または他のフロア)とインテリジェンス比(0.6)の間の乱数を生成し、合計ポイント(100)を掛けます。この例では、結果が45であるとしましょう。

ここで、ゼロに達するまで、この値から悪い動きの減算を開始します。(順番に減算します。)

最初に、20を獲得したIceスペルを検討します。45-20 =25。これはゼロを超えているため、Iceスペルをスローします。

第二に、30ポイントの価値がある剣で攻撃を見てください。25-30 = -5。しきい値に達したので、剣による攻撃を選択します。

このシステムでは、知能の低いキャラクターは最高の動きを選択しません。そして、知能の高いキャラクターは、しばしば最高の動きを選びます。(この例では、完全なインテリジェンスを持つキャラクターが50%の時間で最高の動きを選択します。)

フロアメカニズムを乱数に追加すると、より良い動きが選択される可能性が高くなります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.