3

ゲーム内のキャラクターに、部分的にランダムなアクションを実行させたいのですが、好みの影響も受けます。たとえば、キャラクターが怒っている場合、冗談を言うよりも怒鳴る可能性が高くなります。そこで、キャラクターがとる行動をどのように決定するかを考えています。これが私に思いついたアイデアです。

解決策 #1 : 考えられるすべてのアクションを繰り返します。アクションごとにランダムロールを行い、その乱数に優先値を追加します。最も高い値を持つアクションが、キャラクターがとるアクションです。

解決策 #2 : アクションに数値の範囲を割り当て、アクションの可能性が高いほど範囲が広くなります。したがって、ランダム ロールが 1 ~ 5 のいずれかに戻ると、キャラクターは冗談を言います。6-75 を返すと、彼らは叫びます。等々。

解決策 #3 : すべてのアクションをグループ化し、分岐ツリーを作成します。彼らは友好的な行動をとるでしょうか、それとも敵対的な行動をとるでしょうか? ランダム ロール (好みの値が追加された) は、敵対的であると言います。彼らは物理的な攻撃や口頭で攻撃しますか? ランダムロールは口頭で言います。アクションに到達するまで、ラインを下っていきます。

解決策 1 は最も単純ですが、ほとんど効率的ではありません。解決策 #3 はもう少し複雑だと思いますが、より効率的ではありませんか?

この特定の問題について、これ以上の洞察を持っている人はいますか? #3は最善の解決策ですか?より良い解決策はありますか?

4

3 に答える 3

5

#1 と #2 は単純ですが、より複雑な動作にはうまく対応できないでしょう。ビヘイビア ツリー (#3) は、最近の多くのゲームで好まれているシステムのようです。AiGameDev.com でいくつかのプレゼンテーションとメモを見つけることができます。 #session2 (Crytek の最初のセッションは非常に優れています)

ここでは、CPU 使用率の意味での「効率」について心配する必要はおそらくありません。これがゲームの主要なボトルネックになる可能性はほとんどないからです。動作を微調整するために必要なプログラマー/デザイナーの時間を削減することは、はるかに重要です。

于 2010-05-13T05:46:57.213 に答える
1

オプション 1 または 2 を使用する場合は、ランダムな結果のバケツを調べます。置換なしのランダム性を参照してください。ツリー アクションを使用する場合でも、同じ概念のいくつかを使用して、ツリーのどのブランチを下に移動するかを決定できます。ただし、ツリーをたどるにつれてオプションが制限されるため、もう少し決定論が組み込まれています。

私の記憶が正しければ、NPC 用のかなり優れたスクリプト エンジンを備えた Neverwinter Nights では、NPC が特定の状態で実行するアクションの一部をランダムな確率を使用して決定していましたが、状態自体はそのスクリプトによってより駆動されていました。 NPC (ツリーというよりはステート マシンですが、概念は似ています)。たとえば、NPC が歩いている場合、立ち止まったり、笑ったりする可能性がありましたが、攻撃された場合は、戦闘に切り替えてそこに留まります。

言い換えれば、それはすべて、あなたの行動と、キャラクターにどのように振る舞わせたいかによって異なります.

于 2010-05-13T02:58:04.350 に答える
1

実際のユーザーの行動に影響されるマルコフ連鎖。

ウィキペディアから:

マルコフ連鎖は、次の状態が現在の状態のみに依存するというプロパティを持つ離散ランダム プロセスです。

于 2010-05-13T03:00:32.187 に答える