4

首先,這是AI爲PacMan而不是鬼PacMan個性AI建議爲最佳下一個方向

我正在寫一個Android動態壁紙,在您的圖標周圍播放PacMan。雖然它通過屏幕接觸支持用戶建議,但大部分遊戲都將通過AI進行播放。我99%完成了所有的遊戲編程,但PacMan本人的AI仍然非常弱。我正在尋找幫助來開發一個好的AI來確定PacMan的下一個旅行方向。

我的最初的計劃是這樣的:

  1. 初始化用於與零值的每個方向上的分數計數器。
  2. 從當前位置開始,使用BFS在四個可能的初始方向上向外遍歷,方法是將它們添加到隊列中。
  3. 從隊列中彈出一個元素,確保它沒有被「看到」,確保它是一個有效的棋盤位置,並添加到相應的初始方向,爲當前單元格分值:

    1. 具有點:加10
    2. 具有功率高達:加50
    3. 擁有果:加果值(由電平變化)
    4. 擁有鬼朝向吃豆行進:減去200
    5. 有一個幽靈旅行y從PacMan:什麼都不做
    6. 有一個正在垂直移動的影子:減去50
    7. 根據單元格的步數乘以單元格的值乘以百分比,初始方向的步數越多,該單元變爲零。

    並從當前單元排列三個可能的方向。

  4. 一旦隊列爲空,爲四個可能的初始方向中的每一個找到最高分並選擇它。

它在紙上聽起來很不錯,但鬼怪圍繞着PacMan非常迅速,他在相同的兩個或三個細胞中來回抽動,直到到達他爲止。調整鬼魂存在的值也沒有幫助。在比賽結束之前,我最近的點BFS至少可以達到2或3級。

我正在尋找代碼,想法和/或資源的鏈接來開發一個合適的AI - 最好是前兩個。我想在這個週末的某個時候在Market上發佈這個,所以我有點匆忙。任何幫助是極大的讚賞。


僅供參考,這是手動橫貼在GameDev.StackExchange

+4

這將是更好的http://gamedev.stackexchange.com – ManiacZX 2010-07-29 20:34:13

+0

@ManiacZX感謝您的領導。我不知道該網站存在。我會記住這個問題以備將來發布,或者稍後重新發布此問題。 – 2010-07-29 20:41:34

+0

我不記得有關Pacman是否需要不斷移動的確切Pacman規則。如果你不關心遵循原始的Pacman 100%,我還會爲Pacman的可能操作列表添加一個「停留」。 http://www-inst.eecs.berkeley.edu/~cs188/archives.html有一些有趣的資源,你可以看看 – nevets1219 2010-07-29 20:46:37

回答

0

有辦法來改變吃豆成「路徑跟蹤」模式。該計劃是,您檢測到某些情況,計算PacMan遵循的預先繪製的路徑,然後計算出該路徑的早期退出條件。你可以在幾種情況下使用它。

當吃豆由鬼在三個四個方向的一定距離內包圍,然後創建出口路徑,要麼導致吃豆遠離鬼或朝向電。退出的情況是當他吃掉電源或不再被包圍時。

當PacMan吃電時,創建一個路徑來吃一些附近的鬼魂。退出的情況是當道路上沒有鬼魂時重新計算路徑。或者如果附近沒有鬼魂,請完全退出該模式。

當附近有不到一半離開了點,或沒有點,進入的路徑去吃一些點,轉向清晰的鬼。鬼附近時重新計算路徑,如果附近有幾個鬼,則重新計算路徑。

當沒有保證路徑的情況時,您可以恢復到之前編程的默認AI。

0

您可以使用Ant Colony Optimisation技術來發現,導致許多圖標吃或可以得到很多的分數最短路徑可見。

1

如果吃豆陷在一個位置,並開始抽搐來回然後它表明,開給他的不同的動作有非常相似的分數您運行指標之後。然後由鬼魂進行小幅度的位置變化會導致最佳的移動來回翻轉。您可能需要考慮添加一些hysteresis來阻止這種情況的發生。

設置:選擇一個隨機移動和得分0

每個步驟記錄下來:

  1. 在可用的移動運行打分函數。
  2. 如果最高分數比記錄分數大x%,則覆蓋記錄分數並與此一同移動。
  3. 應用此舉。

這樣做的結果是,PacMan將不再在每一步中選擇「最佳」移動,但它似乎並不像貪婪的本地搜索一樣是最優的。這將使PacMan更加一致並停止抽動。

0

我不知道了很多關於人工智能或特定的算法,但這裏有一些東西,你可以嘗試,可能只是讓你足夠接近政府工作:)

對於問題迅速圍繞着他的鬼,也許鬼AI太強大了?我知道在經典的吃豆人中,每個幽靈都有特定的行爲,所以如果你還沒有納入那個,你可能會想。

爲了消除回溯,您可以爲最近遍歷的節點創建加權懲罰,因此他不太願意回到以前的路徑。如果這還不足以將他踢向某個方向或另一個方向,那麼你可以以對數方式增加吸引力懲罰,所以一條路徑將以非常快的速度變得比另一條更有吸引力。

對於他的問題越來越被鬼抓,一旦鬼已經達到了危險的節點接近你也許可以從一般的基於目標的算法改變了迴避算法。

0

您可能受益知道如何的機器人「理由」(如本優秀dossier解釋)。例如,瞭解鬼魂的追逐/分散模式可以讓你在「危險」的位置得到點,等等。

我在添加這個答案,因爲知道它不是您尋找的最佳解決方案(因爲您希望下週發佈..),但也許會對將來有人閱讀此內容有所幫助。排序時間膠囊:)

0

你應該看看這個描述Antiobjects,這是Pacman幽靈用來遍歷迷宮的技術。特別要注意:

每個antiobjects或代理人 的具有相同的簡單算法 它運行在 遊戲動不動。而不是讓鬼魂智能 足以解決迷宮周圍的「最短路徑」 問題, 「Pac-Man氣味」的概念被創建而不是 每個瓦片負責說 多少吃豆人氣味是在其上瓦。

所以你考慮一種類似的基於氣味的技術來控制Pacman,也許在那裏Pacman更喜歡穿過一條氣味較小的路徑;這會減少他過舊的機會。

相關問題