2012-05-07 9 views
0

私は前にゲームをやったことがないC#のベテランです。私の視野を広げようと試みる中で、いくつかの典型的な敵の射撃を伴う単純な2D迷路タイプのゲームを作る試みで、基本的なXNAのものを教え始めました。私の質問には、複数の敵のための経路探索が含まれます。ゲーム内でのAIパスファインディングのランダム化

典型的な例を考えてみましょう:Pacman。

Pacmanでラウンドを開始すると、幽霊は箱から出て、一見例外的に、ランダムなパスをとることがあります - プレーヤーの現在の位置を見つけるために重み付けされています。私は、敵が同じような効果を出すたびに、各敵のパスを再計算できると思っていましたが、敵がパスをあまり重複させたくないので、計算されたパスをランダムに歪ませて、敵。これには標準的なアプローチがありますか?

私はそれを見ることができると思います。それぞれの敵自体が障害であるため、敵の経路には他の敵と衝突する経路は含まれません。プレイヤーにフリーランを与える新しいパスがない場合は、実行可能なパスが見つかるか、衝突によって現在のパスが変更されるまで、既存のパス上で敵を継続させます。これで十分かもしれませんが、私はそれをあまりにも単純化していますか?

答えて

0

興味深い考えですが、単純なPackmanの例では、いくつかの敵がパスを見つけることができない場合があります。例えば、packmanが右下隅にある場合、彼は北または西に行くことができます。それらの道のそれぞれに敵がいる場合、他の敵は彼への道を見つけることができず、敵を凍結またはさまようことになりません。

おそらく、敵にゲームの実際の障害よりも低い「重量」を与えると、パンクマンがパワーペレットを食べていくつかの幽霊が存在するときに、邪魔になる行。たぶん

+0

ええ、私は投稿した後、それについて考えました。私は最適な経路がない場合、候補リストからランダムに1つ選ぶ必要があると思います。敵の衝突は、それが起こった場合には、いかなる方法でも経路の変更につながります。 – Chris

1

あなたは潜在的なフィールドが近づいて便利...あなたがマップを埋める場合

http://aigamedev.com/open/tutorials/potential-fields/

各敵は正のポテンシャル場を持っており、プレイヤーは負のポテンシャル場を持って、あなたが得ることができます敵は同じ署名料のためにあまりにも重複しない...もちろんアルゴリズムは問題です...しかし、おそらくあなたを助けることができます。

enter image description here

0

私はたぶん..確率で方法Aは、20個のステップを取り、方法bが30個のステップを取る場合、モンスターは時間の60%に道のAを行くようなものを

をそれに近づくだろうBは40%である。次に、ルートが他のルートよりも20%以上確率が高い場合、モンスターが常に特定のルートをとるようにするルールを追加します。

これは、モンスターが常に最も近い方法もし彼らが十分に近いなら、オープンエリアでは違ったやり方を取って、長い範囲で長い時間がかかるさまざまな方法を取る...

次に、最も奇妙な行動を取り除くために何か方法を追加する必要があります理由がなく方向を変えて、実際の数を数式に設定してください:)(btwこれは推測だけではテストされません)

関連する問題