4

まず、これはゴーストではなくパックマンの AI です

アイコンの周りでパックマンを再生する Android ライブ壁紙を作成しています。画面タッチによるユーザーの提案をサポートしていますが、ゲームの大部分は AI によってプレイされます。ゲームのプログラミングはすべて 99% 完了しましたが、パックマン自身の AI はまだ非常に弱いです。パックマンの次の移動方向を判断するための優れた AI の開発について、助けを求めています。

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

  1. 各方向のスコア カウンターをゼロの値で初期化します。
  2. 現在の位置から開始し、BFS を使用して、可能な最初の 4 つの方向をキューに追加することで外側にトラバースします。
  3. 要素をキューからポップし、まだ「見られていない」ことを確認し、それが有効なボード位置であることを確認し、対応する初期方向スコアに現在のセルの値を以下に基づいて追加します。

    1. ドットあり: プラス 10
    2. パワーアップあり:プラス50
    3. 果物がある: プラス果物の値 (レベルによって異なります)
    4. ゴーストがパックマンに向かって移動している: 200 を引く
    5. ゴーストがパックマンから離れていく: 何もしない
    6. ゴーストが垂直に移動している: 50 を引く
    7. セルまでのステップ数に基づくパーセンテージをセルの値に掛けます。最初の方向からのステップが多いほど、セルの値はゼロに近づきます。

    現在のセルから可能な 3 つの方向をキューに入れます。

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

紙の上ではいいように聞こえましたが、幽霊はパックマンを非常に急速に取り囲み、パックマンは同じ2つまたは3つのセルで前後にぴくぴく動き、1つが到達するまで. ゴーストの存在の値を調整しても役に立ちません。私の最も近いドット BFS は、ゲームが終了する前に、少なくともレベル 2 または 3 に到達できます。

適切な AI を開発するためのコード、考え、および/またはリソースへのリンクを探しています。できれば前者の 2 つです。今週末には市場に出したいので少し急いでいます。どんな助けでも大歓迎です。


参考までに、これは手動でGameDev.StackExchangeにクロスポストされました。

4

6 に答える 6

1

パックマンが所定の位置で動けなくなり、前後にぴくぴく動くようになった場合は、メトリクスを実行した後、彼に開かれたさまざまな動きのスコアが非常に似ていることを示唆しています。次に、ゴーストによる位置の小さな変化により、最良の動きが前後に反転します。これを防ぐために、ヒステリシスを追加することを検討することをお勧めします。

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

各ステップについて:

  1. 利用可能な移動に対してスコアリング関数を実行します。
  2. 最高スコアが記録スコアより x% 大きい場合は、記録スコアを上書きして、これで移動します。
  3. 移動を適用します。

これにより、PacMan が各ステップで「最適な」動きを選択しなくなりますが、貪欲なローカル検索が最適であるようには思えません。これにより、パックマンがより安定し、けいれんが止まります。

于 2010-07-30T22:43:24.363 に答える
0

アリコロニー最適化手法を使用して、多くのアイコンを食べたり、多くのスコアを取得したりするための最短の可視パスを見つけることができます。

于 2010-07-29T22:11:19.570 に答える
0

迷路を横断するためにパックマンの幽霊が使用するテクニックであるAntiobjectsのこの説明を確認してください。特に、次の点に注意してください。

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

したがって、パックマンを制御するための同様の香りベースの手法を検討します。おそらく、パックマンは香りの少ないパスを横断することを好みました。これにより、彼が古い立場を超えてしまう可能性が減ります。

于 2010-08-11T14:13:46.983 に答える
0

ボットがどのように「推論」するかを知ることは有益かもしれません (この優れた文書で説明されています)。たとえば、ゴーストの追跡/分散パターンを知ることで、「危険な」場所にドットを配置することができます。

あなたが探していた最良の解決策ではないことを知って、この回答を追加します(来週配信したかったので..)が、将来これを読んでいる人に役立つかもしれません。一種のタイムカプセル:)

于 2010-08-11T09:31:23.240 に答える
0

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

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

パックマンがパワーアップを食べたら、近くのゴーストを食べる道を作りましょう。終了状況は、パス上にゴーストがない場合です。パスを再計算します。または、近くにゴーストがいない場合は、モードを完全に終了します。

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

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

于 2010-07-29T20:35:42.617 に答える
0

私は AI や特定のアルゴリズムについてはよく知りませんが、政府の仕事に十分近づくことができるかもしれないいくつかのことを試してみてください :)

ゴーストがすぐに彼を取り囲む問題については、ゴースト AI が強すぎるのではないでしょうか? 古典的なパックマンの各ゴーストにはおそらく特定の動作があることを知っているので、それを組み込んでいない場合は、組み込みたいと思うかもしれません.

バックトラッキングをなくすために、最近通過したノードに重みペナルティを作成して、以前のパスに戻る傾向が少なくなるようにすることができます。それが彼を一方向または別の方向に蹴るのに十分でない場合は、対数的に魅力ペナルティを増やすことができるので、一方の経路が他方よりも非常に急速に魅力的になります.

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

于 2010-07-31T06:36:56.640 に答える