遊戲AI的設計和實現困難么?有哪些大師級的人物,他們有什麼傳奇,製作了哪些經典遊戲?

我一直覺得開發一款遊戲是非常難的,如同在失控一書中提到的一些遊戲,如SimCity, SimEarth,這類模擬現實生活的遊戲,模擬社會進化。又或者如魔獸,體育競技。很多大型遊戲中,電腦有很高的AI,設計和實現這些的幕後大師有哪些?這些AI有沒有常用的模式(引擎)?


個人對Game Design、Game AI Framework、Navigation、Emergence、Procedural Content Generation這些有所研究,就回答下。

不同類型遊戲的AI實現是不一樣的,而且也在不斷嘗試和探索。根據題主的要求結合自己知識深度,下面主要談談現在流行的AI Framework,或者更準確的說是面向Agent(遊戲內的NPC)的AI Framework。

首先是最核心的一點,現階段的Game AI的其實不是學術AI在Game的實現,而是Game Design。因此,我們先看Game Design的兩種設計思想:

  • Progressive Gameplay:面向流程的遊戲設計,遊戲設計師要強控制遊戲流程。
    • 想想日本遊戲的必須打通某個關底的Boss然後才能前進的流程,或者日式的我稱之為」偽開放世界」的遊戲,都是拿到某個道具、技能之後才能繼續遊戲。從計算機科學的抽象角度看,這都是關於連通圖的設計,某個點過不去,就別想體驗圖的剩下部分,只不過這個連通圖應用在關卡、Boss、技能、道具哪個層級了。
    • 這種設計日本用的最多,個人認為,這個植根在日本的集體主義文化中,因為這種設計的核心是「限制」,集體主義意味著生活的升級中處處受限制,遊戲設計只是文化的一個縮影。
  • Emergent Gameplay:面向湧現的遊戲設計,遊戲設計師在嘗試給玩家更多自由度(吐槽下Emergent這詞在國內各種書里翻譯基本沒對過,大家盡量還是看原版吧)。
    • 在遊戲里常見的做法是設計機制和各種機制之間的交互,最後形成組合爆炸的遊戲空間。
    • 這種設計好玩的地方在於——結果超出了預期,因為設計師和玩家同樣不知道遊戲最後會組合爆炸出什麼好玩的東東,而且,更有趣的是,有時候雖然湧現了一些bug玩法(Dominant StrategyDegenerate strategy),反而變成了開發者和玩家之間的津津樂道的話題。
    • 舉例而言,就拿流行的MOBA來說吧,一個英雄幾個技能,技能可以互相丟,每次玩是個組合過程,最後的玩法組合近乎是無限的,甚至預想不到的技能組合都能湧現出來。再舉例就是Roguelike了,很多人玩遊戲多了最終都會喜歡Roguelike,也是沉迷在了這種精心設計的結構化組合爆炸里。各種子系統交織在一起所湧現出來的複雜系統(Complex System),帶給了玩家了無窮的自由與無盡的驚喜。
    • 這種設計思想就是《失控》中提到的Emergence,這種設計歐美用的較多,個人認為這個和歐美對自然科學的重視和偏個體體驗的個人主義思想有關。自然界就是簡單規則湧現出來的複雜系統(Complex System),探索遊戲的過程和研究自然的過程何其相似;遊戲系統複雜也意味著可以無限探索,無拘無束的自由探索正好是偏體驗的個人主義的極限。這兩個核心點,映射在現實中,就是Roguelike和Open World這兩個遊戲形式近些年的崛起。另外,從這裡同樣能看到遊戲是文化的一個縮影。

然後我們開始談現在的流行AI Framework,其實看完Game Design再看主流AI Framework,理解起來就簡單很多了。下面是主流的兩個AI Framework:

  • Behavior Tree,行為樹,這個是面向控制的框架,設計師控制了所有細節。
    • 設計師定義了整個AI的全部具體細節,AI按照人們規定好的行為在行為樹節點中跳轉運行。
    • 另外,行為樹只是歷史長河大家嘗試用來描述AI的紛繁複雜的框架的一種,之所以在近些年流行是因為好用,不過本身並不是圖靈完備的,所以未來極有可能被更好的框架淘汰。
    • 據我所知,最早應用這個框架的是Halo系列,而現在已經成了Cry Engine和Unreal Engine的標配,大家常玩的LOL中AI也是這個框架。
  • Planner,姑且翻譯成規劃器,這個是面向湧現的框架,設計師在釋放自由度。
    • 最流行的包括HTN(Hierarchical Task Network)與G.O.A.P(Goal Oriented Action Planning)。HTN我沒研究過,主要看GOAP框架,思想是類似的。遊戲AI的所有行為都被分解為State(Graph的Node)和Action(Graph的Edge),設計者填充的是State翻轉時的Action有幾種(Node之間多幾個Edge),運行時根據情況搜索出來一個從當前到目標State的通路。
    • 這個結構的湧現性在於搜索過程里,不同情況下會選擇不同行為(Action、Edge),來從一個狀態到另一個狀態(State、Node),這一點是組合爆炸的。
    • 這個應用的遊戲很多,從最早的FEAR、Stalker(Stalker被很多人譽為迄今最好的Open World Survival Game,GOAP框架功不可沒)到今年在AIAS拿獎拿到手軟的Shadow of Modor(AI方面一個是GOAP框架,還有一部分是純Game Design層面的Nemsis System,一個動態仇恨系統),其實可以發現如果想AI表現聰明點(起碼得多樣化行為湧現),這個系統是當下最好的選擇。

最後再次強調,這些絕對不是Game AI的全部,只是需要Agent(遊戲內的NPC)的遊戲的AI Framework。其他類型的遊戲,譬如爐石里卡牌的AI怎麼實現的,圍棋AI的框架是什麼樣的,還有大量不同的實現。另外不得不說,AI Framework也只是Game AI的上層,並不全面。Game AI底層還有尋路層(Navigation),像你提及的SimCity在Navigation信息構建方面也用了新的機器人領域的演算法。

一些資料推薦,只推薦我見過最好的:

  • AiGameDev.com 我看過的最好的Game AI站點,付費會員幾十刀一季度,但是可以從Game AI這個角度透徹的剖析Game Design,而且Indie、AAA一應俱全與時俱進,網站主管也是遊戲開發者,Email很好溝通。

  • GDC Vault 遊戲開發者的資料聖地GDC Vault,最新的資料要付費瀏覽,比較舊的會慢慢公開,遊戲開發相關各種演講和課程,設計、技術、美術都有,不過單獨就AI領域而言,沒有AIGameDev全面和深入,時效性也不是太夠,而且偏向AAA。話雖如此,也已經是很棒的資料庫了。

  • 最近Game AI越來越明顯的一個趨勢是:底層越來越多的引入機器人領域知識,上層越來越多引入人工智慧領域知識,有興趣可以深入鑽研這兩個領域,在遊戲內形成新的突破!


首先,需要明確的是,遊戲內AI的目的是讓具有AI的角色看起來智能,在這個基礎上,遊戲里AI相關編碼主要控制的是對象的行為,基本不會涉及環境感知(例如機器人圖像識別之類的),因為遊戲內部數據傳遞非常容易,而碰撞檢測和尋路其實都可以看作是獨立的功能。

作為行為控制,基本上AI的設計,有兩個方向:設定規則和枚舉行為。

設定規則:就是明確一系列規則,然後給相關的對象進行對應的賦值,然後整個系統就按照規則運行,比如什麼仇恨系統,友好度系統之類的。這方式的好處是,一旦規則設定好了,就很容易鋪開,而且會有很多有趣的「智能」表現。問題在於,一個能描述「智能」行為的規則設立起來非常難,而且在很多條件邊界情況規則系統會有很多奇怪的反應。

枚舉行為:這個說起來很簡單,就是把對應對象所有可能行為都設想到,然後人工確定好,典型的就是決策樹系統和單一狀態機。此方法的好處是對象的行為可以看起來「很智能」,因為反應都是人先想好的,問題在於,一個是工作量大,因為你需要考慮周全,另外一個就是往往給遊戲對象相同的刺激,行為是一樣的,重複幾次就被玩家發現是固定行為了。

實際遊戲設計中,往往是以上兩種方法結合起來使用,從而達到更好的效果,比如在一定規則下進行行為枚舉,或者進行枚舉行為的時候加一些隨機變數之類的。總之,這些的主要目的都是讓遊戲對象在遊戲環境下「看起來很智能」。


那只是看起來很智能,各種數值與buff決定好了ai的行動,ai的各種行為都不是「思考」出來的,製作者用數據與特性來給一個npc賦予性格。

比如說模擬人生4,在進入「好動」情緒後,小人會自主去做俯卧撐,這是強制性的命令,除非特性或者屬性去遮蓋掉優先順序。

競技類的ai也都是寫好的,會進行一些運算,看上去很智能,很多套路,實際上是根據無數種情況來決定下一步的。

對面是否防空力量充足?

是—減少空軍投入

否—以空軍為主力

就這樣的是非運算來決定下一步,一些rts甚至只會一個套路,製作者為了讓玩家對不同的ai明顯感覺到難度差異,選擇的方法不是寫ai,而是改數據。

簡單ai製造時間延長,資源減少,普通ai與玩家一致,困難ai快速製造,雙倍資源。

講真,高度智能的ai應該不會出現在遊戲里,因為比起一串串數據判斷,一個自主思考的ai實在是太過體積龐大了,其運算量也不是一台家用pc可以滿足的。


————補充 @算不得讀書人的問題——————

《忍者龍劍傳:西格瑪2》沒有ps3一直沒玩成,所以就不針對忍龍細說了。不過,理論上AI處理,跟戰神應該是差不多的,差別在參數調整上。我說一些這類ACT遊戲在AI設計的思路,你可以參考一下,應該有幫忙。

1、戰鬥AI,本質上,是讓玩家「感覺自己很聰明」

在戰鬥設計上,ACT遊戲BOSS一般放技能,會有較大的前搖動作。這個設計,就是讓玩家能夠通過觀察預判來走位,以此讓玩家獲得成就感。類似還有怪物較慢的攻擊頻率、緩慢的走位等,都是同樣的目的。

2、通過挑戰而獲得的成就感,更讓玩家興奮(有對比才有更深切的感受)。

比如很多玩家並不喜歡用作弊器。同樣,把此設計放在AI上,就是要達到讓用戶即有壓力,又要有挑戰成功的空間。

而壓力要多大,空間要有多大,這就是不同作品不同設計師自己的見解了。而有些遊戲則更是通過標榜難度高挑戰,來吸引用戶。但不是多難的AI、關卡也好,都必須確保能夠讓用戶完成,並以此達到愉悅的目的。

3、遊戲中的AI的目的

在刺客信條中,會了讓玩家對這個虛擬的世界,更有代入感。設計了複雜的AI機制,NPC會有自己作息時間行為庫、對話庫、基礎職業庫等等。

但它們的存在都是有目的的,為了玩家而服務的,是為了戰鬥、跑酷、任務這些玩法而服務的。仔細去與基礎NPC他們互動,你會發現,這些NPC,他們只有有一些與其設定特性相符的對話、動作,再加上出現時間,隨機的幾條行走路線等,僅此而已。

即然我們可以設計一個很複雜的BOSS、特殊NPC,為什麼不是所有NPC都這麼複雜?

因為,為了愉悅玩家,這些就足夠了。而大多數玩家,也並不需要一個真正的智能NPC。

最後證明自己比一個NPC還笨,這種體驗並不友好。

所以,針對你的問題:

1、忍龍與戰神的主要差別,在於攻擊頻率更短、移動更快、前搖動作更小更短、怪物連續攻擊增多(連擊)、受創硬直懲罰更大、傷害更高、兵種搭配種類更多。就AI設計本身來說,兩者差異並不大。

2、基於上面所說的,AI是為了愉悅玩家而存在的,所以,遊戲中完全不可控的AI,是不需要的。而可學習的AI這個需求,即使有遊戲這樣做了,也是有限的、是預設好的、是可控的可預估的。

比如小兵剛開始只會站著不動,通過條件,他概率學會移動這個AI,再過一段時間概率學會攻擊這個AI。但移動、攻擊都是我們預先設計好的,條件也是我們預先提供的。

所以,這與人工智慧是完全不同的。

當然如果有人真的去做了一個人工智慧AI的遊戲,那麼,他做的就已經不僅僅是個遊戲了。

————原文——————————

贊最多的那個,是程序的事吧?抱歉,我真的沒看懂,只是一堆英文,不明覺厲,網站不錯。就個人經驗,這裡說點直白的吧。遊戲的Ai,作為遊戲的一個組成部分。首要的,是滿足遊戲的設計需求。不同遊戲的ai,其需求差異極大。

做過act、傳奇式ARPG、WOW式arpg的ai,大致說一下舉例:

1,傳奇的怪物,核心只有找到目標並攻擊。

2,wow的核心,是仇恨機制

3,戰神這種act的核心,是圍觀和動作幾率,以及 boss的分段QTE

4,刺客信條這種沒做過,不過可以分析一下。

除劇情外,普通的NPC可以通過基礎AI加互動AI和職業AI來處理。

基礎AI,通過大量的隨機事件來處理,主要就是各種動作的觸發。

然後就是巡邏機制和區域巡邏,可以方便的在地編中處理是必須的,且可以設置多個區域和巡邏路徑。

條件上支持隨機、任務事件完成、遊戲時間、天氣。

注意,小範圍的純隨機移動事件,這個應該是加入到基礎事件庫的。而不是巡邏里。

另外,需要處理得是,移動範圍,應該是要做地形和物件的碰撞檢測的。不然,老是NPC自己卡死還玩球。

之後做的,就是互動基礎AI 的設計了。比如於玩家的碰撞,馬的碰撞,偷錢等常見互動的反饋設計。

然後就是職業AI的處理,注意,這裡指的不是鐵匠、商人等職業。而是指小孩、女人、老大爺、大鬍子男子、小鬍子男子等之類的,外貌、性格、身份等分類的反饋AI的處理。

每個職業有N多個反饋庫,主要是語音、文字的處理。動作方面,受限於美術成本,一般只分大的職業類,不會分到大鬍子這麼細。

基礎AI估計是這麼些,其主要工作量不在程序,甚至美術身上,而在策劃身上。

通過三種基礎AI,組合的NPC,就是大概想要的結果吧?或許,這只是我個人的思路。

當然,刺客信條牛逼的也不是基礎AI,而是讓他們形成了一個令人信服的世界。

剩下的,商人是獨立AI,boss,戰鬥等高級AI就不說了。要展開要說的就太多了。

另外,我說高級AI,不是真的就高級了或是難度大,而是指通用性較低,但還不到獨立AI的程度的意思。

太晚了,手機打字,比較亂,想到一些就寫了一些。

隨便看看吧。

有空想寫個act的基礎AI心得,可惜知乎不開專欄。也沒地兒申請,沒辦法在這寫了。

如果不到人工智慧級別,或是FIFA等遊戲的話,AI的設計和實現並不難,對吧。

有空可能會到gameres上寫,就這樣吧


AI一般使用腳本語言實現,部分遊戲使用編寫遊戲的代碼直接實現,如:c++,其實AI的好壞和引擎沒什麼關係,主要是看設計AI行為的時候是否分的足夠細緻,一般會先根據遊戲類型和需要分幾種AI類型,比如強攻型,防守型,和一般型,在針對類型設計行為,以及在不同行為下可轉換的行為。這個地方設計的越細,AI表現出的智能越高,一般也會給行為設上權重,當有多個行為可以轉換的時候,就按照權重進行隨機,這裡就出現了同一行為下,每次結果都不同,感覺很智能的感覺。

如果學過面向對象編程語言,其實就可以很好的理解AI,其實就是在不同狀態基下的狀態轉換而已,好的AI設計和實現,不比實現一款遊戲簡單,這也導致其實很多家用機的單人模式就是在玩AI,玩數值。

對於比較NB的AI設計,個人推薦光環系列的AI設計,雖然前幾作被人罵的很傻逼,但是基於一個完整的可拓展的AI系統,光環能很好的拓展AI行為,所以就有了越來越好的感覺,這裡不得不佩服光環的AI設計師的模塊化思想足夠紮實和精巧。


遊戲 AI偽智能 其實是一個收集信息,然後做決策的系統.有很多基本的方法去實現.大體歸納成幾種.

1.決策樹,數狀的 Node 介面,觸發不同的預設事件.

2.模糊邏輯,基於一些隨機策略或者根據權重結果執行具體邏輯.

3.神經演算法.這個比較高級,一個大廠家都有研究.比如EA,暴雪,對這個用得比較多.

4.訓練庫,有自學能力.


現在所有的已存在的(人工智慧)沒有任何一點計算機智能的成份在裡面。

大量的以此為生的理論帝和碼農主要出於博名博利的動機,亂起高大上、玄乎無比的嚎頭。他們嘴裡的(人工智慧)只是一些普通的不能再普通的程序,是(人)智加上(機)算而已。

這些人工智慧挺傻老帽的。弱智都稱不上。

我們人類眼界要高一點,類比生物,只有等到計算機個體像生物那樣具有自我意識,會出於自我保護、改進的目的,偷偷生產、改進新的計算機品種,那樣的才能稱之為智能。(到時人類必成小白鼠)

其實地球上每個生物就是一個有機計算機,除了計算速度比不上電子計算機外,別的都還算勉強過的去。關鍵生物的生存繁衍進化機制能行的通,雖然進化緩慢,但是繁衍機制廉價,能源來源(太陽)穩定。而地球上的電子計算機在這種機制發展方向上八字還沒一撇。

我們人類眼界要再高一點,必有一些外星文明應該已經發展成計算機文明了。所有生物都被奴役中。我們地球必是其中某一個計算機文明的豬圈。不毀滅地球只是為了完成它們的某一個論文而已。論文題目估計是《生物進化的機工干預》。人類的出現其實是它們主動干預下的一次生物品種突變實驗。

創建於 2017-04-16

著作權歸作者所有


遊戲的ai設計並不複雜,先說下車槍球類,如果開發者真的較真,三分球可能投一個進一個,那人就不用玩了。

rts類的魔獸,電腦的ai還可以,並且電腦經常做出無敵躲nova, 無敵躲跳劈讓人無語的動作,另外魔獸有個擴展功能可以寫腳本,愛好者就將n 多戰術實現出來了,例如sky流,比默認的ai厲害很多,既然愛好者都能做的,所以...

遊戲ai不是越高越好,可玩性最重要


推薦閱讀:

電子競技職業選手的生存狀態如何?年輕人去打職業,是個好選擇嗎?
應該把做遊戲當愛好,還是真正當作事業來做?
如何評價 Dota 2015 年 12 月 16 日的 6.86 更新?
網吧如何實現和家用電腦一樣用戶登陸自己steam賬號進行遊戲?
60美元的3A大作賺錢嗎?

TAG:遊戲 | 人工智慧 | 遊戲設計 | 遊戲設計師 |