4


1

最適な次の方向へのPacManキャラクターAIの提案

まず、これは* PacManのAIであり、ゴーストではありません*。

あなたのアイコンの周りでPacManを演じるAndroidライブ壁紙を書いています。 画面タッチによるユーザー提案をサポートしますが、ゲームの大部分はAIによってプレイされます。 私はゲームのすべてのプログラミングを99%完了していますが、PacMan自身のAIはまだ非常に弱いです。 PacManの次の旅行の方向を決定するための優れたAIを開発するための支援を探しています。

私の最初の計画はこれでした:

  1. ゼロの値で各方向のスコアカウンターを初期化します。

  2. 現在の位置から開始し、BFSを使用して、 キューに追加することにより、4つの可能な初期方向。

  3. キューから要素をポップし、まだ「見られていない」ことを確認し、 有効なボード位置であることを確認し、対応する初期方向スコアに以下に基づいて現在のセルの値を追加します。

  4. ドットあり:プラス10

  5. パワーアップ:プラス50

  6. 果物がある:プラス果物の価値(レベルによって異なる)

  7. ゴーストがパックマンに向かっている:200を引く

  8. PacManから遠ざかるゴーストがいる:何もしない

  9. ゴーストが垂直に移動している:50を引く

  10. セルの値に割合に基づいて割合を掛けます セルへのステップ、初期方向からのステップが多いほど、セルの値はゼロに近くなります。 +および現在のセルから3つの可能な方向をキューに入れます。

  11. キューが空になったら、4つのそれぞれの最高スコアを見つけます 可能な最初の指示とそれを選択します。

紙の上では私には良さそうに聞こえましたが、幽霊は非常に急速にPacManを囲み、1つが彼に届くまで同じ2つまたは3つのセルで前後にひきつりました。 ゴーストの存在の値を調整しても効果はありません。 私の最も近いドットBFSは、ゲームが終了する前に少なくともレベル2または3に達することができます。

適切なAI(できれば前者の2つ)を開発するためのコード、思考、および/またはリソースへのリンクを探しています。 今週の週末にマーケットでこれをリリースしたいので、少し急いでいます。 任意の助けは大歓迎です。

'' '' '

_FYI、これはhttps://gamedev.stackexchange.com/questions/1861/pacman-character-ai-suggestions-for-optimal-next-direction[GameDev.StackExchange]_に手動でクロスポストされました

6 回答


1


PacManが特定の位置で動けなくなって前後に動揺し始めた場合、メトリックを実行した後、PacManが開いているさまざまな動きのスコアが非常に似ていることが示唆されます。 次に、ゴーストによる位置のわずかな変化により、最適な動きが前後に反転します。 このような事態を防ぐために、http://en.wikipedia.org/wiki/Hysteresis [hysteresis]を追加することを検討してください。

セットアップ:ランダムな動きを選択し、スコア0で記録します。

各ステップについて:

  1. 利用可能な動きに対してスコアリング機能を実行します。

  2. 最高スコアが記録スコアよりx%大きい場合、 レコードスコアを上書きして、このスコアと共に移動します。

  3. 移動を適用します。

これは、PacManが各ステップで「最良」の動きを選択しなくなるという効果がありますが、貪欲なローカル検索がとにかく最適であるとは思えません。 これにより、PacManの一貫性が高まり、痙攣が止まります。


0


PacManを「パスフォロー」モードに変更する方法があります。 計画では、特定の状況を検出し、PacManが従う事前描画パスを計算し、そのパスの早期終了条件を算出します。 これはいくつかの状況で使用できます。

PacManが特定の距離内の4つの方向のうち3つでゴーストに囲まれている場合、PacManをゴーストから遠ざけるかパワーアップに導く出口パスを作成します。 出口の状況は、彼がパワーアップを食べたとき、または囲まれなくなったときです。

PacManがパワーアップしたら、近くのゴーストを食べるパスを作成します。 出口の状況は、パスにゴーストがない場合で、パスを再計算します。 または、近くにゴーストがいない場合は、モードを完全に終了します。

残っているドットが半分以下の場合、または近くにドットがない場合、パスを入力していくつかのドットを食べに行き、ゴーストを避けます。 ゴーストが近くに来たときにパスを再計算するか、いくつかのゴーストが近くにある場合は完全に終了します。

パスを保証する状況がない場合は、以前にプログラムしたデフォルトのAIに戻すことができます。


0


*Ant Colony Optimisation *テクニックを使用して、多くのアイコンを食べたり、多くのスコアを獲得したりできる最短の可視経路を見つけることができます。


0


AIや特定のアルゴリズムについてはあまり知りませんが、政府の仕事に十分に近づけるために試すことができるいくつかのことを以下に示します。

すぐに彼を取り巻く幽霊の問題のために、恐らく幽霊AIはあまりにも強力ですか? 古典的なパックマンの各ゴーストにはおそらく特定の動作があることを知っているので、それを組み込んでいない場合は、そうすることをお勧めします。

バックトラッキングを排除するために、最近通過したノードに重みのペナルティを作成できます。そのため、彼は以前のパスに戻る傾向が少なくなります。 それが彼をある方向または別の方向に蹴るのに十分ではない場合、あなたは対数的に引き力のペナルティを増やすことができます。

彼がゴーストに捕まるという問題については、ゴーストが危険なノードの近接に到達すると、一般的な目標ベースのアルゴリズムから回避アルゴリズムに変更できる場合があります。


0


ボットがどのように「理由」になるかを知ることは有益です(この優れたhttps://stackoverflow.com/questions/3366648/pacman-character-ai-suggestions-for-optimal-next-direction[dossier]で説明されています)。 たとえば、ゴーストの追跡/散布パターンを知ることで、「危険な」場所などにドットを取得できます。

私はあなたが探していた最良の解決策ではないことを知ってこの回答を追加しています(来週配信したかったからです)。 タイムカプセルのソート:)


0


Antiobjectsの説明をご覧ください。これは、パックマンの幽霊が迷路を横断するために使用する手法です。 特に、次のことに注意してください。

_ これらのアンチオブジェクトまたはエージェントにはそれぞれ、ゲームのすべてのターンで実行される同一のシンプルなアルゴリズムがあります。 迷路の周りの「最短経路」問題を解決するのに十分なほどゴーストをスマートにする代わりに、代わりに「パックマンの香り」の概念が作成され、各タイルはそのパックにパックマンの香りがどれだけあるかを示します。 _

そのため、パックマンを制御するための同様の香りベースのテクニックを検討します。おそらく、パックマンはより少ない香りのパスを通過することを好みました。これにより、彼が古い土地を越える可能性が低くなります。