引言
關於遊戲AI玩家們一定再熟悉不過,現在不論是網路遊戲還是單人遊戲,幾乎都會有遊戲AI的存在。遊戲設計師通過預先設計好的一些程序,就讓遊戲中一些非玩家操控的角色也就是NPC表現得如同真實玩家一般,當然有時候這個操縱的「人」似乎有點心不在焉,不是把角色移動到了奇怪的位置,就是莫名其妙地來攻擊玩家,因此玩家們習慣將其稱之為「人工智障」。
隨著遊戲行業的不斷發展不少玩家也開始發現,如今遊戲AI的智力不都是我們過去所認識的那樣低下,甚至還出現了一些我們人類已經無法理解的行為。在前段時間谷歌的阿法狗在限制APM的情況下成功將星際2目前最頂尖的職業選手Serral擊敗,而它所使用的運營方式和戰術直到現在職業玩家仍然無法模仿和理解。
但是我們目前的不少遊戲AI在玩家們看來智力仍然不夠高,一方面來說的確有遊戲BUG造成的因素,但是也有不少情況卻是遊戲設計師有意而為之。現在的遊戲AI在玩家面前表現得不那麼聰明很大程度可能只是在配合玩家演戲。如果更深入探索,大麥認為遊戲AI發展可以看成是遊戲設計的發展歷程,而今天就要來和大家說說遊戲AI背後所隱藏的遊戲設計之道。
越簡單越不容易出錯
早年間因為技術的限制,遊戲內容都非常簡單,因此對於AI的要求就不會很高,甚至可能都不太能稱得上是AI,因為那些AI其實就只是一段簡單的腳本代碼。例如超級馬裡奧中的慢慢龜就只能在一段距離中來回移動,碰到牆或者道路終止了就返回如此循環往復,其行為模式都是固定的。直到關卡的BOSS庫巴,會根據玩家的坐標來跳躍或者隨機攻擊玩家,這才勉強算是遊戲AI。但這些行為基本上都是固定的,玩家很快就能完全摸透其模式。不過也因為這些固定的AI內容,讓遊戲中不太容易出現因為怪物移動到了某些奇怪的地方導致遊戲出現BUG。
而說到早期的AI,就不得不提到吃豆人這遊戲,作為遊戲的設計者巖谷徹曾經接受採訪時談到過吃豆人中幾個幽靈怪物的行為邏輯。「紅色的幽靈會一直跟著玩家,粉色的以玩家行進路線的下一個路口為目標,藍色的則再進一步,以下一個路口後的路口為目標,最後橙色的完全隨機行動。」而這套設計方式也成為了後來遊戲AI設計的鼻祖,我們後來見到的超級瑪麗、魂鬥羅這類捲軸闖關遊戲的敵人AI設定的根源都來自於吃豆人中那幾個小幽靈。
可以說,早期的AI所能展現出來的內容是非常有限的,但是這時候遊戲設計師卻已經能從這有限的內容中來提高玩家們的遊戲體驗。比如在街霸2中,玩家們肯定都有對抗過AI的經歷,但是AI過於簡單的手段很容易讓玩家們失去樂趣。因此設計師就開始在遊戲中動一些手腳,其中就會刻意地給AI增加一些優勢,卻玩家們卻無法看出來。例如當玩家們連續下段快拳攻擊,當AI用一招較慢的踢擊反擊玩家,玩家出拳卻並沒能打斷AI,相反在對戰普通玩家的時候卻能夠擊中。
這些強化AI的「作弊」手段一定程度上提高了玩家們對抗AI的樂趣,畢竟在街霸2裡面的AI並不會根據玩家所做的動作來做出自己的行為判定,所以設計師就只能動一些手腳,讓AI看來沒那麼弱,也是變相地在提高玩家們的遊戲體驗,這就是早期AI配合著設計師們演的第一出比較拙劣的喜劇。
開始手忙腳亂起來
但到了九十年代末,計算機硬體每年都在發生翻天覆地的變化,而遊戲內容也越來越複雜,為了適應更加複雜的遊戲內容設計師就必須開始製作更聰明的AI,也就是加入了有限狀態機和行為樹,然而從這時候開始遊戲的程序設計師就開始有點手忙腳亂了。比較典型的例子就是遊戲中單位的自動尋路AI,當玩家操控一個角色的時候,點擊一個目的地,AI就會自動計算出最佳的路逕自動前往,如果遇上什麼障礙物之類的也會自動躲避,但就這麼一個簡單的尋路AI可苦了不少程序設計師。
一般來說,在RPG遊戲中玩家基本上只需要操控一個單位進行尋路,這個問題不大。然而在RTS遊戲裡往往玩家一次就需要操作幾十個單位同時前往一個目的地,而這些單位又都有真實的碰撞體積,因此這個尋路算法就出現問題了。當年在星際爭霸1中,就因為這個尋路問題讓設計師無比頭大,往往你在前方和敵人激戰正酣,結果發現自己的單位卻越來越少,回過頭來一看所有的後援部隊全部被卡在一個狹小的路口動彈不得。
解決辦法就只能玩家去一個個操控讓他們有序通過路口,這無形間就增加了玩家們的操作難度,不過這個問題卻也成為了後來星際爭霸中一種玩家與玩家間的操作博弈,玩家的操作水平甚至可以沒有上限,這也讓星際爭霸的職業比賽特別好看。
但是這個問題放在星際爭霸中另一個地方可就不那麼有趣了,我們知道星際中玩家需要讓農民去自動採集水晶,然而依然是尋路問題會導致所有農民都擠成一團而停止採礦,這個問題肯定是無法容忍的,然而暴雪的設計師想盡了辦法也想不出如何繼續優化這個尋路算法,農民依然會堵成一團。到最後還是一個程式設計師想出的一個取巧辦法,讓所有的農民在採礦時沒有碰撞體積,這才解決了這個問題。有趣的是,直到2008年星際2誕生以後,這十年間暴雪仍舊沒有解決這個尋路算法問題,仍舊是採用農民採礦無碰撞體積的方式來解決。
客觀來說,星際爭霸在這個尋路AI上已經做得比較好了,曾經有個同年代國產RTS遊戲血獅在AI設計上和他相比完全就大相逕庭。那AI設計甚至連玩家自己都無法操控這些單位,很大一部分情況都只能看著自己的士兵在那邊自娛自樂獨自看風景。
而那個年代新誕生的3D遊戲AI也好不到哪去甚至更糟糕。在1997年的遊戲007黃金眼中,作為NPC的邦女郎娜塔莉婭在遊戲中雖然拿著武器,但什麼都不會幹,還經常衝進敵軍中,而且如果她被擊中了遊戲也宣告失敗,就這樣玩家不得不想盡辦法保護這個智障NPC,這也是一個坑玩家的經典代表NPC之一。其實我很能理解設計師的意圖,希望能讓玩家體驗到電影裡邦女郎和邦德並肩作戰的情景,只不過有時候程式設計師因為經費不足把這個邦女郎換成了憨豆特工。這讓我想起了周星馳喜劇之王裡的周星馳演的龍套角色,想儘量演好戲中的角色卻總是出戲。
一個好的AI不如來一個頂尖的遊戲設計師
在遊戲AI中,微軟的光環絕對是非常值得一提的,第一代的光環發售還是在2001年的時候,然而當時光環中的敵人就已經能實現諸如兵種配合,包抄、集中突破等簡單的戰術運動,還有聲東擊西這樣的戰術意識。例如遊戲裡的豺狼人兵種在對抗玩家時遭受攻擊就會豎起盾牌,躲在盾牌後對玩家進行幹擾射擊,這時野豬兵會趁這個機會衝上用手槍攻擊玩家。等到玩家反應過來開始攻擊野豬時,豺狼人就會轉為主攻手進行進攻,如此交替對玩家發起進攻。
不過敵人這些比較複雜的戰術只有在英雄難度的光環中才會出現普通難度下AI該犯傻還得犯。光環和其他的FPS遊戲不同的一點在於不同難度的敵人血量和命中率不會有變化,而是通過調節AI的戰術策略來增加難度,然而在那個年代光環使用的行為樹框架自由度不高,但是遊戲設計師卻還是能通過安排得當的設計來實現一些看似非常複雜的行動,這也是早年間光環這款遊戲令人佩服的地方,當時的玩家還一度疑惑遊戲中的AI為何智力為何會如此之高,殊不知這些都是設計師給玩家們安排好的劇本,而AI只是在按照設計師的劇本完美演出罷了。
那麼為什麼當年的微軟要花這麼大的力氣去設計這麼一個英雄難度的AI呢?很大原因在於當年的光環其實已經開始走上多人遊戲的道路,而玩家如果只是打通了普通難度遊戲後進入到多人遊戲的話,很容易被組隊玩家的戰術給打蒙圈,這也是變相的想要提高玩家們在多人遊戲中的體驗。而說到這裡其實就要引入一個核心思想:一切的遊戲AI設計本質上都是為了要提升玩家們的遊戲體驗。
設計師如何讓玩家獲得更好的遊戲體驗才是不斷改善遊戲AI的核心目的,的確是有一部分硬核玩家希望持續挑戰自己的極限,恨不得敵人要多強有多強,當然在現代多人遊戲已經非常成熟的情況下,可以把這項需求交給玩家間的PVP對抗。但我們不可忽略的,在遊戲界休閒玩家還是佔據更大的比例,他們更希望的是在遊戲中放鬆身心,如果能虐虐電腦就更棒了。
但是要讓玩家體驗到虐電腦的樂趣對於設計師來說也不是想像中的那麼簡單,既得讓他們贏了電腦,又得讓他們贏得不那麼輕鬆或者看不出電腦在給他們放水。在看門狗2設計師就有一個特別的AI設計,遊戲中的AI敵人有一套很複雜的掩護系統,敵人會根據武器的射程、掩體的質量和玩家的位置自動切換到附近最佳的掩體,但有一點就是這些敵人不會進入玩家周圍的一小片區域,而是保持一段距離進行射擊,這無形中不僅降低了玩家們的遊戲難度,也給極大地凸顯了遊戲中掩護系統這個特色,一舉兩得。
不過呢,有時候玩家們也會吐槽明明敵人有的是機會一起衝上來殲滅主角,但偏要躲在掩體後面互相射擊,頗有一種脫褲子放屁的感覺,就如同經典喜劇白頭神探中,探長和敵人在相隔一米的距離對射一般。
未來的遊戲AI不一定真的要特別聰明
其實總的來說,遊戲中的AI就像一部電影裡的配角一樣而玩家就是主角,優秀的電影既會凸顯配角的特點卻又不會讓其奪走主角的光輝。在未來的遊戲設計當中,我相信遊戲的AI將變得越來越聰明,所能表達的行為也會越來越豐富,但是有時候這些AI也要裝傻充愣,在玩家最需要幫助的時候稍微放下水。
前段時間,索尼申請了一個非常有意思的專利,在PS5手柄上會有一個生物感應裝置,能通過玩家的心跳以及手部出汗情況來判斷當前玩家是否在遊戲中遇上了困難,並在合適的時候降低難度,這種動態調節遊戲難度的方式很可能會是未來AI發展的一個新思路。當遊戲中AI發現玩家們遇上困難時,不管是敵人還是隊友的AI就會在背後偷偷幫助一把,度過這個難關以後就會繼續像過去那樣和玩家進行對抗。
當然,如何悄無聲息不讓玩家發現,這就得考驗一個演員的自我修養了,或許在未來多年之後,我們能在遊戲中見到一個又一個的「賽博影帝」哈哈。