2010-08-20 41 views
2

我在本學期有一門課程,在這門課中我需要做一個應用AI的項目。我決定在遊戲AI上做到這一點。我有兩個基本的想法:實施FPS機器人或實施足球AI。我已經實現了基本的尋路算法(A *等),並研究了有限狀態機,一些一階邏輯,基本神經網絡的東西(反向傳播ALgo) ,目前我正在做一門關於遺傳算法的課程。需要應用人工智能項目的建議

我們現在主要關注的是機器人。我們的計劃包括:

  • 每個「殭屍」將使用一個有限狀態機(FSM),其中將包括可能的狀態的機器人可能有執行;以及接收輸入時將發生的操作/狀態更改的規則。
  • 在機器人小組動作中,每個機器人都會決定是否打擊,如何打擊;基於範圍,機器人的數量,使用神經網絡的現有戰鬥。
  • 通過使用遺傳算法,對手的下一步移動可以基於重複的移動來預測。

雖然我已經在我的空閒時間編程的一些2D遊戲到現在(像吃豆子,俄羅斯方塊等),我從來沒有真正進入了3D區域。我們很可能會使用3d引擎。

我們希望將大部分精力集中在AI部分。我們不想被關於動畫/ 3D模型等不必要的細節所困擾。例如,如果我們可以找到一個具有像Moveright()這樣的功能的框架,它只是將機器人移動到右側,那將非常棒。

我的基本問題是:考慮到項目的持續時間超過3個月,我們按照計劃的方式是否過於雄心勃勃?我們應該去3D並使用3D遊戲引擎嗎?如果你以前沒有經驗,很容易使用這種引擎嗎?如果是的話,什麼樣的引擎適合我們的項目?

我遇到了另一個想法,在書中給出了AI遊戲編程的例子,玩家可以從上方看到機器人。那樣更合適嗎?

謝謝..對不起,關於問題的長度..這只是我的問題有點太具體。

回答

2

我的基本問題是:它過於雄心勃勃 去它在我們 有計劃的方式,考慮到時間的項目 是華南簡介3個月?

是 - 但是這並不一定是壞事:)

我們應該去3d和使用一個3D遊戲引擎 ?

No.主要是因爲你說過:

我們想把大部分 能量集中在AI部分。

這裏就是我想要做的,根據我的經驗(和知道,作爲一名學生,我經常咬下方式比我能咀嚼,太):

無論讓你的模擬功能一個圖形組件。讓它向另一層發佈「更新」,其中包括玩家和球向量。通過這樣做,您可以將AI任務與其他任何事物分開,這意味着您可以減少需要擔心的錯誤,還可以更輕鬆地單元測試您的基礎模擬。

採取那些「更新」並創建您的第一個「可視化」層 - 使其成爲可能的最簡單的2D表示。它可能只是一連串的文本行:「球員1在(30,40)速度爲20kph時有球/球員1踢球」。由於您將會弄清楚如何獲取模擬發佈的數據並對其進行處理,這對於您的第一次傳遞來說已經足夠困難。

您的下一個可視化文件可能會添加一個ANSI圖形的2D網格(認爲流氓樣),以實際顯示玩家和球的移動。之後你的下一個可能是精靈。等等。請注意,如何逐步增加可視化的複雜性......不要讓您的第一步轉向使用以前從未使用過的技術(3D圖形引擎)。 (在這種情況下,你永遠都不會完成你的項目。)

至於你的問題,有哪些路線可以採用 - FSM,NN,GAs,自上而下的設計 - 你應該把你的興趣從大多數至少(和你的小組的其他成員一起),然後依次處理它們。你可能會考慮爲一個團隊做一種風格,爲另一個團隊做一個不同的設計。你可能想讓你的密克羅尼西亞隊與一支已經做了額外調整的密克羅尼西亞隊進行比賽,以便比較和對比如果你認爲你的變化實際上是有益的(你可能會感到驚訝並發現他們會讓球隊變得更糟)。事實上,單元測試和可視化中的模擬分裂非常非常方便 - 您應該能夠「模擬」儘可能多的遊戲以獲得實驗結果而不用擔心圖形。你甚至可以通過腳本在一夜之間分批進行。

總的來說,我對你的建議是:將你的項目分解成你能夠做到的最小的部分,然後一次一個地解決它們,所以無論你在什麼時候用完,你都會有炫耀一些有趣的東西。

+0

好了,我想我應該用自上而下的方法去嗎?即玩家從頂視角看什麼?我真的不想用文字方法去做...... – Karan 2010-08-22 20:33:19

+0

「文字方法」只是沿着無限可視化複雜程度的第一步。不要直接進入圖形,你可以先通過「文本方法」來解決「模擬圖層」和「可視化圖層」之間的所有依賴關係......這對你來說已經夠難了,請相信我。 – 2010-08-23 06:32:40

1

你可以看看guntactyx,這就是我在uni做AI單元時必須使用的東西。

它負責所有的顯示,物理,聲音等......對於你來說,你所要做的就是編程你的機器人小組。 該API包括使機器人向左或向右移動,拍攝,聽到聲音(如槍聲)等功能,並附帶一些示例機器人,因此您不必從頭開始。

此外,它很有趣,看你的機器人作戰你的朋友機器人:)