2013-06-23 81 views
2

我在尋找關於從哪裏開始爲比賽3比賽創建電腦AI對手的指導/建議。這個問題一直困擾着我多年(從字面上看),因爲我還沒有弄明白。我已經用盡谷歌找到這個答案。Unity 2D/3D - 製作電腦對手(AI)進行比賽3遊戲

具有計算機對手的示例匹配-3遊戲包括:Puzzle QuestCrystal Battle

在創建這樣的AI對手時使用了哪些編程方法,以及如何將其應用於Unity 2D腳本?我在哪裏/如何開始?我主要是在尋找一個教程,或者讓我開始朝着正確的方向發展。我意識到這不是一件容易的事情,但我想逐步嘗試,這樣我可以更好地理解事情。

在此先感謝!

+0

問題可能更適合[http://gamedev.stackexchange.com/](http://gamedev.stackexchange.com/) – Jerdak

+0

謝謝!我沒有意識到這樣的地方存在。 – Knuxchan

回答

1

有兩個問題在這裏:

  • 生成可能的行動
  • 選擇最佳的移動

如果您的主板是相當小的,你可以簡單粗暴,強迫他們兩個。對於網格中的所有位置,檢查是否可以向上,向下,向左或向右移動它,並且您有移動生成器。 (您應該檢查已經爲單人遊戲版本執行的有效移動)。

選擇最佳移動將會有點棘手,因爲您必須評估每個移動。常用的方法是MiniMax方法。總的想法是,你在接下來的幾輪建立一個所有可能的移動樹,併爲每片葉子分配一個分數。然後,如果玩家移動,則減少該樹,以便父節點變成最大(離開);如果玩家移動,則最小(離開)。你最終得到你的根源分數。基本人工智能編程的優秀資源是Chess Programming Wiki(您不需要這裏描述的90%,以MiniMax和AlphaBeta算法開始)。

另一方面,對於最簡單可能的AI,您可以隨機挑選一個動作,在規劃動作時,match-3遊戲並不是最苛刻的動作。

編輯:作爲一種事後,下面似乎是一個合理的AI策略匹配,3個遊戲:

假設所有添加的隨機寶石後,每個動作不能以任何方式匹配:

  1. 選擇一個讓對手無法移動的動作(沒有子節點)。
  2. 如果1.不可能,選擇任何可以保證我再次移動的移動,無論我的對手選擇哪種移動(沒有子節點是葉子)。
  3. 如果2.不可能,請選擇隨機移動。