
之前我們談過了狀態機為何,它是一個非常緊密的AI架構,藉由環境變化來進入其他狀態,並去執行該狀態下的行為。什麼狀態下要做什麼都訂得死死的,所以當一款遊戲複雜的時候一個AI可能擁有好幾十種狀態供切換。
然而,戰慄突擊中雖然也運用到了狀態機,不過你以為它會很複雜嗎? 但其實它就只有長這樣:
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
這她媽是三小? 就這三個狀態也能叫狀態機? 是在開玩笑逆?
並沒有,它真的就這麼簡單。驚不驚喜? 意不意外? 我第一眼看到也是挺訝異的,不過且聽我娓娓道來
這狀態機之所以這麼簡單,就要談到遊戲AI的核心目的是啥了。
其實不論什麼遊戲的AI,目標都只是在特定狀況下播特定的動畫,如:移動時播移動動畫、攻擊時播攻擊動畫等等......而當這些動畫在對的時機、對的地點播出時,你就會覺得這個AI好像有點東西。
▲AI的最終的目的就是讓NPC在對的時機、對的地點播對的動畫(相反的,播錯就很智障)。
而戰慄突擊的這三個狀態,最終的目標就是:播動畫罷了。
移動狀態:是用來播走路、跑步、跳躍等.......的移動型動畫,同時讓AI位移至指定地點。
純動畫狀態:則是很簡單的,就是原地播一個動畫,例如換子彈、驚嚇或是單純的待機。
互動狀態:當然就是跟物件互動,像打開開關、坐椅子、踢桌子,或是先前就提到過的:開門。
這點就跟典型狀態機不同,比起每個行為都要一個狀態的狀態機,戰慄突擊把這些通通都扔給資料庫去處理,處理完後,再把行為和要播的動畫替換到僅有的三個狀態內就好了。而這些動畫只要播對時機點,碰!看起來聰明的AI就誕生了。
那AI要怎麼知道自己要去哪個狀態和要播什麼動畫呢? 這時就要用到之前提到的目標導向系統了。
------戰慄突擊的AI
在戰慄突擊中,任何NPC都是用同一套架構。也就是說,不論哪種型態的敵人、友軍,甚至是路邊的老鼠,也都是用目標導向系統在做事的。甚至裡面常伴主角的紅衣小妹妹也不例外,只是行為經過設計師特別設計罷了。
在這套系統下,若沒有給AI設定目標,那AI就什麼都不會做,我是說,真的,啥事都不幹,廢人一個。所以必須給予AI一個目標,這樣目標導向系統才會發揮作用,讓AI去思考現在該幹什麼,並且如何達成。
設計師設計了約70個目標能去達成,例如:巡邏、攻擊、找掩護、埋伏等等......每個目標可以被啟動、更新、移除,而且更重要的是,讓AI去評估現在要處理哪個目標。
換句話說,AI可以被給予多個目標,讓AI自己去判斷哪個比較可行,並去處理它。例如AI有"巡邏"和"殺死玩家"兩個目標,但目前沒看到玩家阿! 總不能亂槍打鳥吧? 所以既然沒看到玩家,那它就去巡邏。不過一旦看到玩家後,AI評估殺死玩家比較重要,就會以殺死玩家為主要目標。
▲遊戲中全部的AI都是使用目標導向系統,就連紅衣小妹妹都不例外。
▲AI可以一次給予多個目標,然後由AI自行判斷當前要先處理哪個。若沒發現玩家,則會處理"巡邏",一旦發現玩家,則會處理"攻擊玩家"
好啦~ 現在AI有目標了,那AI就會開始想辦法達成它。那為了達成目標,就需要一些行動提供給AI取用。遊戲中大約有120個行動可以給AI使用,讓AI根據當前狀況來安排自己要做什麼。如:換子彈、射擊、奔跑、蹲下、或甚至發呆等等...…
不過當然,並不是全部的AI都可以使用120個行動的,根據種類的不同,可以選擇的行動是不一樣的。像刺客可能會攀牆,但一般的步兵就辦不到。
最後,還要做一項保護措施,概念有點像是行為樹中斷功能,用來確保自己的計劃是否被其他AI打斷或解決,如果有,那它就要重新規劃。例如:我原本想開門的,但另一個混帳傢伙把門開了(那是我要做的欸),那麼我就要中斷開門的想法,並開始重新規劃,甚至,請求新的目標。
再訂好目標、選擇好行動,並且規劃沒有被其他渾蛋中斷的情況下,那AI就可以放心地從資料庫中提取需要的行動資料,然後扔回一開始的狀態機內,接下來,玩家就看到了劃時代的酷炫聰明AI啦~
▲每個種類的敵人可用的行動不同,所以刺客可以攀牆,但普通的士兵就無法這麼做。
▲AI把選擇好的行動以及對應的動畫扔進狀態機內,讓狀態機去處理接下來的事,看起來炫酷屌爆的聰明AI就完成了。
戰慄突擊的目標導向系統對遊戲產業來說是一個非常巨大的貢獻。尤其是當年才2005年,大家都還在有限狀態機的AI架構下做事,對於讓AI變聰明這一點來說是一個麻煩的領域。因為再怎麼說,有限狀態機的行為都是寫死在狀態裡的,熟悉了就不難預測。
而戰慄突擊透過目標導向系統直接讓AI有了自行思考的方法,這樣子的設計可以讓AI自己透過對於當前狀況的感知來決定自己現在幹嘛,並不是死的狀態機架構,而是讓AI自己去尋找"最佳解"。這點就讓AI看起來格外聰明,因為它是真的在尋找對付玩家的最佳處理方式。
另外值得一提的是,戰慄突擊中的AI其實並無法感知其他AI的存在,簡單來說他們並不知道自己有隊友,他們只是在做自己認為最佳的行動而已。但因為給予的目標不同,所以他們不但沒有互扯後腿,反而看起來就像是精彩的互相合作,這點想想其實還蠻猛的。
如今距離戰慄突擊上市已經16個年頭了,這個目標導向的系統依然在遊戲業活躍得不行,很多3A級大作,如:垂死之光、魔多之影、全軍破敵系列等等......依然靠著這個架構來讓自己的AI看起來更加聰明、增加遊戲的挑戰性以及耐玩度。
這次的閒聊其實更像是翻譯,因為這也只是我從網路上找那些外文的GOAP資料,然後把它用淺顯易懂的中文寫出來罷了。畢竟我也不是什麼很厲害的程式大師,只是單純覺得這很值得一提。
若讀者對於恐怖遊戲不排斥的話,個人是非常推薦去玩玩看戰慄突擊的。撇開它對於AI設計的貢獻,它的恐怖氣氛拿捏也是頂尖水準。就算對AI設計不感興趣,但體驗一款優秀的恐怖射擊遊戲不吃虧阿! 對吧?
那這次就先聊到這裡,之後還有一篇跟AI相關的專題,而且還是近代的作品,各位可以猜猜看是個啥XDD(提示:跟外星人有關)。那接下來也請大家多多捧場囉~ 我是靈巧,下次再見。
參考資料:
其他AI相關文章: