以下為AI For Games書中內容的歸納總結
? 游戲開發中設計的AI和AI學者研究的AI是有區別,游戲的AI包括部分借鑒技術(特定的解決方案和使游戲更加簡練的效果)、啟發式方法(僅適用于大多數情況但不是全部情況的經驗法則)和演算法(對游戲來說“適當”的東西),
借鑒技術
? 有一種說法是“如果它看起來像一條魚,并且聞起來也像一條魚,那么它可能就是一條魚”,對于游戲AI來說,行為主義是一條可以借鑒的道路,游戲AI的開發人員可能對現實事物的本質不那么感興趣,他們想要的只是看起來正確的角色,
? 游戲AI常體現為對現實事物的借鑒模仿,這顯然沒有資格成為AI學者認可的AI技術,這里有一個例子,《吃豆人》怪物的AI,它實際上是應用即巧妙又簡單的亂數生成器,生成亂數本身當然算不上什么AI技術,大多數編程語言都有內置地函式獲取亂數,所以為它提供演算法毫無意義!
? 在游戲AI中適當的使用視覺性的東西或許有令人驚喜的效果,《模擬人生》中很多角色的行為都是影片交流的,如果洗掉角色影片,那么這個AI的效果將乏善可陳,《星球大戰前傳1》中,那些令玩家煩惱的角色也會給其他角色帶來一些副作用,《雷神之錘2》中具有“手勢”命令,角色可以通過它將敵人擊退,所有這些都不需要重要的Ai基礎架構,它們不需要復雜的認知模型、學習或遺傳演算法,它們只需要一小段代碼即可在正確的時間執行影片,
啟發式方法
? 啟發式方法是一種經驗法則它是一種可能在許多情況下有效但并不是對所有情況都有效的近似解決方案,對于AI程式眼來說,啟發式方法通常會讓人聯想到路徑發現或以目標為導向的行為,在實際運用的技術中可能并不總是很明確的啟發式方法,在諸如決策、移動和戰術思維等領域,都需要在速度和準確性之間進行權衡,當準確性被犧牲時,通常可以選擇啟發式方法來代替搜索正確答案,
? 廣泛的啟發式方法可以應用于不需要特定演算法的一般性AI問題,以《吃豆人》為例,怪物尋找玩家的方式是,在交叉路口選擇朝向玩家所在位置的方向,這種方式不一定能正確“尋路”玩家,但基于經驗法則,玩家依然會相信怪物真的是在追殺他,
? 在許多戰略游戲中,包括棋盤游戲,不同的單位或棋子都有一個數字值來表示它們的價值或在局面評估中“優秀”的程度,例如,在中國象棋中,一個小兵的價值是1分,車的價值是10分;小兵過河變成2分,進入敵方九宮則價值變成3分或更高,這顯然是一種啟發式方法,它用一個數字取代了關于單位能力的復雜運算,在即時戰略游戲中,可以通過數量與成本計算比較來找到具備最佳建造價值的攻擊單位,
? 這些啟發式方法沒有應用高深的演算法或技術,也不會在已發表的AI研究論文中找到它,但它確實是AI程式開發人員作業的基礎,
1.最大約束
? 給定世界的當前狀態,需要選擇一個集合中的某個專案,被選定的專案應該是少數幾個狀態中最合適的選項,
2.先難后易
? 最困難的事情往往會影響到很多其他的行為,所以最好先做最困難的事情,而不是讓簡單的事情進展順利,但最終卻發現浪費時間,
3.首先嘗試最有前景的事情
? 如果AI有許多選項可供選擇,通常可以給每個選項一個大致的分數,即使這個分數明顯不夠準確,但嘗試遞減分數順序的選項將比純粹隨機獲得更好的性能表現,
演算法
? 借鑒技術和啟發式方法可以為開發人員提供一條很長的道路,但單純依靠它們則意味著開發人員必須不斷地做重復運動,如果某個復雜演算法被視為完成任務的最佳方法,那么對于每種這樣的情形,可能至少有5個更簡單的借鑒技識訓啟發式方法可以完成同樣的作業,
? 之后的博客會重點發布一些游戲AI演算法的內容,盡情期待,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/509428.html
標籤:其他
