游戏中的AI及实用算法逻辑
這篇文章就不加具體的項(xiàng)目代碼了,畢竟“敲代碼是只是在一棟大樓設(shè)計(jì)好后具體的搬磚工作”,程序猿貴在對(duì)這張圖紙的設(shè)計(jì)好壞。再者這個(gè)話題我這車開的還不夠穩(wěn),講多了就翻車了。所以就跟大家分享一些基礎(chǔ)的,拋磚引玉吧。
先來感受一下即將到來的人工智能時(shí)代:
仿生蜻蜓:
?
游戲中的AI仿生蜘蛛:
波士頓動(dòng)力的機(jī)器人從跑步跳躍到后空翻,跟著節(jié)拍跳舞。一次次的給我們以驚艷,一次次的感嘆。《西部世界》中的場(chǎng)景馬上就要成為現(xiàn)實(shí):
波士頓動(dòng)力機(jī)器人的進(jìn)化史:
引自:游戲人工智能讀書筆記
先來用我的理解來解釋一下這個(gè)司空見慣的名詞:AI(Artificial Intelligence)
到底什么是人工智能,什么是游戲中的AI?
什么是人工智能,其實(shí)這個(gè)領(lǐng)域已經(jīng)默默打怪升級(jí)了幾十年。這兩年突然爆發(fā),取得,尤其是現(xiàn)在發(fā)展的神經(jīng)網(wǎng)絡(luò)、深度學(xué)習(xí)都是人工智能的一個(gè)重要的領(lǐng)域,而且取得了重大的突破。尤其是2016年,AlphoGo在圍棋領(lǐng)域打敗李世石后,二手QQ出售平臺(tái)人工智能變的家喻戶曉,隨后的由人工智能在圖像處理上取得的重大突破,現(xiàn)在的人工智能在自動(dòng)駕駛、3D重建等領(lǐng)域都炙手可熱。大街小巷都在學(xué)習(xí)人工智能,游戲領(lǐng)域自然也是一個(gè)非常重要的戰(zhàn)場(chǎng)。
我們這一輩人小時(shí)候玩“紅警”,打“War3”,現(xiàn)在玩“DOTA”或者“王者榮耀”都會(huì)玩人機(jī)對(duì)戰(zhàn)。相信大家都會(huì)發(fā)現(xiàn),電腦的AI都比較死板。但不可否認(rèn),這就是我們游戲領(lǐng)域的人工智能,甚至在未來的很長(zhǎng)一段時(shí)間大部分游戲的AI也不會(huì)變的跟人一樣智能。為什么這么說呢?以前是技術(shù)問題,以后是游戲性要求沒必要那么高的AI(個(gè)人觀點(diǎn),歡迎留言拍磚)。
1997年,IBM的深藍(lán)戰(zhàn)勝了當(dāng)時(shí)的國(guó)際象棋特級(jí)大師Garry Kasparov。深藍(lán)是基于一個(gè)經(jīng)過大量的國(guó)際象棋規(guī)則修正和棋盤評(píng)估修正后的極大極小算法來下棋的,并且是運(yùn)行在一臺(tái)定制的超級(jí)計(jì)算機(jī)上。然后到了2016年,Google的DeepMind開發(fā)的Alphago在5番棋中戰(zhàn)勝了韓國(guó)的李世石,這也標(biāo)記著,圍棋也從代表著人類獨(dú)有的智慧的榮光的神壇上走了下來。之后有報(bào)道稱Google將AlphaGo應(yīng)用到著名RTS游戲《星際爭(zhēng)霸》中。相信在不遠(yuǎn)的將來,電子競(jìng)技中就有出現(xiàn)超過人類玩家的智能機(jī)器人。玩家在大部分游戲中的AI將會(huì)無比強(qiáng)大,具備學(xué)習(xí)能力,能夠更好的和玩家進(jìn)行交流互動(dòng)。以后玩游戲再也不怕遇到“小學(xué)生”那樣的坑隊(duì)友了。
現(xiàn)在游戲中的AI主要做的事情:
?
- AI玩游戲:棋牌類游戲的AI,競(jìng)技類游戲AI,游戲中的NPC行為控制,甚至是創(chuàng)造一個(gè)robot來和人來玩游戲等。
- AI生成游戲內(nèi)容:地圖關(guān)卡的自動(dòng)生成,游戲場(chǎng)景劇情的自動(dòng)生成、推演。
- AI對(duì)玩家建模:對(duì)玩家游戲內(nèi)行為建模。試圖去理解游戲內(nèi)玩家的行為,情感等信息,從而更好的對(duì)玩家進(jìn)行用戶畫像,而這些信息也能夠進(jìn)一步的改善游戲的沉浸感。
講了這一大堆,回歸一下現(xiàn)實(shí),我們大部分游戲開發(fā)主要使用哪些AI相關(guān)的算法邏輯呢?
?
- 尋路:這個(gè)是游戲中很普遍的一種AI,網(wǎng)格地圖(Tiled)、導(dǎo)航圖(NavMesh)等,用到的圖的最短路徑算法:使用最多的應(yīng)該是A星(A-Star)算法。
- 有限狀態(tài)機(jī):這個(gè)是游戲的基礎(chǔ),可以應(yīng)對(duì)大部分的簡(jiǎn)單邏輯流程控制,復(fù)雜的邏輯可能會(huì)擴(kuò)展到分層狀態(tài)機(jī)。
- 行為樹,這個(gè)目前大型游戲中NPC應(yīng)用最多,尤其是一些大型Boss,其行為樹已經(jīng)相當(dāng)復(fù)雜。
- 模糊狀態(tài)機(jī):這個(gè)有點(diǎn)上升到只能的層面,已經(jīng)不再是絕對(duì)的是非,而是存在了一定的權(quán)重和不確定性,不過感覺用的還不多。
- 集群控制:這種在RTS游戲中應(yīng)用很多,多個(gè)單位的集群AI,追隨、分離、規(guī)避等。
對(duì)應(yīng)這些具體的代碼實(shí)現(xiàn),本文就不進(jìn)一步深入展開了。有興趣的同學(xué)可以在網(wǎng)上找到很多的資料。這有一篇很早以前寫的一個(gè)行為樹的應(yīng)用示例文章:基于行為樹的新手引導(dǎo)設(shè)計(jì)。
推薦三本經(jīng)典的游戲開發(fā)書籍,其中我參與制作的第一款RTS類游戲《指上談兵》就是從《游戲人工智能編程》中借鑒了很多。
?
最后來分享一個(gè)經(jīng)典的游戲人工智能bug來結(jié)束本文:
?
早期玩家都知道,印度文明一出現(xiàn)在視野里,必須立刻毫不遲疑地臥薪嘗膽跟其他文明媾合、集中全部力量無論多么遙遠(yuǎn),也要把印度早早摁死。無論怎樣誘人的和平條約,都不要和印度簽署,一定要跟甘地(印度的領(lǐng)袖)死磕到底。
否則,一旦印度發(fā)展出核武器,就會(huì)瘋狂地四處亂炸,把全地球徹底搞當(dāng)。相比之下,鑫十五天簡(jiǎn)直是個(gè)乖寶寶。
原因很簡(jiǎn)單。游戲設(shè)定里甘地是非常和平的,其野蠻度極低。文明發(fā)展,野蠻度越來越低,等到原子彈出現(xiàn)的時(shí)代,就差不多降到零。降到零是小事,一旦降為負(fù)數(shù),程序無法處理負(fù)號(hào),于是變成255,極大值。這是比希特勒還瘋狂好多倍的數(shù)值。于是一個(gè)極端和平的甘地,眨眼成了核彈狂魔。
總結(jié)
以上是生活随笔為你收集整理的游戏中的AI及实用算法逻辑的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《守墓人》主程:如何用像素风做出真实的游
- 下一篇: 利用AI技术自动测试游戏