遊遊隨筆:從NPC到遊戲平衡 淺談電玩AI

電玩和桌上遊戲等傳統遊戲在概念上其中一個最不同之處,就是相對於後者必然會有同為人類的對手或協力角色,前者則一般都是玩者單獨與遊戲揉合;即使是多人數同遊,遊戲程式亦需要負責操縱敵人等一定程度介入。在此,由遊戲自身負責控制的所有角色、甚至是看不見的其他成份,也需要有一個具有解決問題能力的人工知能協助——負責掩護主角、身手不凡的有能NPC同伴,其實背後是由數十年遊戲AI發展而至的成果。

遊戲AI從零到一

遊戲AI是指由遊戲程式控制的擬似知能,多為套用於作中的敵我NPC上,如敵人能迴避我方攻擊;同伴會自動為主角回復等,這些行動都是由AI所致。今時今日如遊戲缺少AI的投入,幾乎可以肯定說已經不能運作,但意外地,遊戲AI卻非打從電玩發跡開始便以出現。
以1972年推出、可以說是最早流行起來的家用遊戲《乒乓球(Pong)》中,玩者與對手各自控制左右兩方的白板,將光球反彈往對方陣地便算勝利。如果玩者只有一人的話,由於對手一方沒有人操縱關係,遊戲就不能成事,要玩《乒乓球》必須要二人同遊。

《乒乓球》必須要雙打關係,遊戲在此只代表著一個「規則」

漸漸地,單機向的遊戲漸漸盛行,但沒有對手又怎成事?由電玩自身控制的對手角色於是成為必然的事。如1974年賽車街機作《Speed Race》中,玩者駕駛著賽車穿梭在道路上,路上則設有阻路的車子,玩者撞上它們就Game Over。這些車子會在出場時向不同方向移動,讓玩者難以把握其路線。當然,控制車子的是遊戲程式,但其實不過是預設車子在出場時的移動路線而言,從需具有「與玩者互動性」的能力來看,這個絕對稱不上是AI。

單機遊戲造就由電腦控制的對手出現,也是AI出現的契機

電玩界正式發展AI的時期,正是電玩界首度影響社會層面的《太空侵略者》年代。《太空侵略者》其中一個突破,是首款設有「朝著玩者自機開火」敵人的作品,即是說由程式操縱的敵人會分析出自機位置狙擊,雖然程度遠不及時下遊戲,但已經算得上是個最基本的遊戲AI。
《太空侵略者》之後,同類模仿作如雨後春筍般湧現,但部分卻在原作之上加以改良,特別是敵人行動上越來越多變化,好像Namcot(現為Bandai Namco)名作《Galaxian》,其敵人行動模式非常多姿多采,部分更會個別衝著我方來移動,更見此作跟《太空侵略者》之間的程式水準差距。在此之後,這類AI被引入往《食鬼》等追逐型動作遊戲上,不管是敵人還是玩者都要根據對方行動作出適當反應,來到這裡,AI已經植根於遊戲之中。

《Galaxian》中敵機各種衝著玩者而來的襲擊,是早期遊戲AI的好例子

被設計的AI

AI雖說是「人工知能」,但其實它並非真正的知能,而是令互動對象(玩者)有一種「對方具有意識」錯覺的一連串精密程式。即是說,程式越細緻,AI行動便越自然、越難預測。不過早期遊戲設計較簡單,敵我NPC的存在某程度上不過是「舞台佈景」的其中一環,不管在技術上還是實用上都不用過於細密的AI。
遊戲界長時間以一種名為Finite State Machine(FSM)的程式編寫手法來處理AI,簡單來說就是為NPC設定各種狀態(State),當情況滿足狀態條件時,NPC會自動切換至另一種狀態。《食鬼》是個非常淺白的例子——Pac Man未有吃下能源曲奇時,幽靈們的狀態為「追著Pac Man」;但如果已吃下的話,幽靈的狀態則轉為「遠離Pac Man(逃走)」。就是這麼簡單的兩個狀態,便能成功塑造出捉迷藏遊戲,是個聰明的手段。

為幽靈植入2個狀態,便可製作出一代經典

事實上,FSM至今仍被不少遊戲採用,當然時下遊戲的程式埋入密度度十分高,出來的AI行動更仔細。如《Persona 5》等作品也有捉迷藏式遇敵法,不過敵人已變成「會在特定地區巡邏」、「發現我方時追捕一段距離後自動回到巡邏地點」、「探索我方範圍為目視距離」、「隨著警戒度上升會增加探索及追蹤力」等,層次已經和《食鬼》兩碼子的事。
除了敵人外,FSM也有被用於同伴NPC身上,讓同伴依照已編好的指令行動,不用每每等玩者指示。說到這裡,絕對不能不提《FF》系列的異色作《FFXII》。此作除了是現時唯一一款採用 Ivalice Alliance(※ 1)世界觀的正傳《FF》外,其Gambit系統也相當特別。

注解:※ 1 由前Square Enix遊戲製作人松野泰己氏構想出來的架空世界觀,採用此世界觀的作品有《FFT》系列及《FFXII》。

透過Gambit系統,玩者能夠直接設定以往只能交由開發組安排的AI管理

簡單而言,Gambit是控制作中同伴AI的指令。在此作中同伴基本上會自動行動,Gambit則是各種指令的斷片,可於遊玩過程中取得。為同伴裝備Gambit後,同伴就會根據Gambit的指示排列而行動。比方說為同伴裝下「向『戰鬥不能的同伴』」⇒「使用『鳳凰尾巴』」的話,他們就會依照指示來做。同伴合計可裝備12個指示,重要度依高而低排列,如沒有「戰鬥不能的同伴」,角色會進行下個重要度較低的指示,如此類推。
利用Gambit,玩者可設定出合自己心意的戰鬥模式,有技術的話更可連首領戰都全自動,全程不用玩者操作。但相對地,一些較有用的Gambit,如目標範圍較廣及指示使用強力魔法或道具等指示,則需要在遊戲較後盤才可取得,算是我方實力越來越高的另類反映。

不直接控制角色也能作出完美的戰鬥對應,大概在其他遊戲中難以見到吧?

讓AI自行學習

FMS的好處是設算方式較簡單,Debug也容易,因此長久以來均是遊戲常見的AI制御方法,不過FMS必須要程式員想定各種場面輸入狀態,隨著遊戲複雜化,以此形式設計的AI很難能全方位對應千變萬化的遊戲場面,於是另一種AI形式——Autonomous Agent漸漸在電玩界中發展及流行。
相對於FMS要指示AI行動,Autonomous Agent則是把決定權交由AI負責,而AI則要從大量反覆嘗試中,找出最佳的行動模式。聽起來,要AI自行學習好像十分困難,但其實早於1990年紅白機上最後一款《DQ》——《DQIV》中已有實裝AI學習系統。

《DQIV》以確率來決定AI是否能成功記下曾遇上過的敵人之耐性屬性

紅白機版《DQIV》的戰鬥系統最大特徵,就是除主角之外玩者不能操控其他同伴,只能透過「節約咒紋」之類的作戰選項作簡單指示,行動則完全交由AI負責。基本上,同伴AI主要是以FSM形式設計,但有關敵人耐性方面卻具備簡單的學習功能。當同伴面對從未見過的敵人使用咒紋,而被該敵人的耐性屬性擋下時,同伴會有一定確率明白到不能再以這類屬性攻擊該敵人,在下次戰鬥時會減少使用。可是這不代表AI會馬上學習到,當AI再被敵人的耐性屬性擋下咒紋時,學習等級有一定確率會再提升,從而進一步減少使用。到了最高的第3等級時,同伴便會完全不使用耐性屬性來攻擊相關敵人。
《DQIV》的AI學習只限於敵人屬性上,設計非常簡單,隨著技術發展,學習方法已不再單純限於確率之上,時下其中一種常見的有進化形式。舉個例子,開發組把AI操作的NPC放入與敵人戰鬥的場面,目標是戰勝敵人。這時AI可以選擇向不同方向迴避、反擊、使用道具甚至不作任何行動等形形式式操作,AI反覆嘗試過各種操作多次後,選擇能生存最久的行動——例如迴避,作為下世代學習的準備。
接下來AI的首個行動便決定是迴避,然後再跟之前一樣作不同行動嘗試,選擇能生存最長的行動,並以此作第二世代的基本……如此類推,AI在經過成千上萬次的嘗試後,終能找到打倒敵人的方法。開發組再把已學習完成的AI放入敵人身上,玩者作出與之前學習時的對手相同行動的話,AI便知道要如何應對,過程不涉及任何開發組的指令。

利用進化論讓AI選擇優秀因子的後代繼續學習,就能讓AI變得更聰明

說到這類遊戲AI的最經典,必不能錯過PS的《Astronoka》。在此作中,玩者是一名未來的宇宙農夫,在外太空星系種植架空蔬果。除了培育、改良品種等基本功外,玩者還需要對付每天來襲的外星害蟲,不過他們具有高度學習能力,絕對不是容易應付的對手。
例如玩者在田裡放下陷阱時,第一次牠們會中伏,接下來牠們會根據自己的特徵來迴避陷阱,好像繞道迴避,甚至會長出翅膀飛過。另外,隨著拆解陷阱所需技巧,害蟲的能力(體力、腕力等)也會有所增加。換言之,害蟲在吃下一、兩次相同陷阱後就能完全迴避,玩者必須把陷阱優化或更改對策才能繼續阻止害蟲入侵。相反,若玩者一開始放任害蟲的話,害蟲因為不用花工夫便可在田裡大開派對,漸漸地牠們的能力會弱化,要擊退牠們也變得輕而易舉。

《Astronoka》中害蟲的快速多變的進化特性,至今仍能成為不少遊戲設計者的佳話

看不見的AI

可能大家會覺得,遊戲AI與NPC直結,AI的思考能力全由NPC上反映出來。但其實除了NPC外,AI亦能運用在遊戲其他方面,只是這些AI不像NPC的行動如此顯然易見,如導航性AI正是個好例子。
現在遊戲內資訊繁多,單單靠玩者自行管理的話會吃不消,因此不少作品都會加入導航AI,令遊戲介面及資料整合更人性化。好像在RPG中經常見到的「自動裝備」——選擇後由電腦自動為角色選擇最強裝備,其實已是導航AI的一種;簡單的AI可能純粹只追求能力值,但較精密的AI則會考慮屬性、追加效果等不同組合,以迎合玩者需要。雖然大多數情況下玩者還是要手動調整……
除了數值外,導航也會具體的提示,例如Open World類作品必須要裝設的目的地導航,有時遊戲會嘗試提出繞道來避過山脈、河流等不能通過的地形,而非直接指示最近的方向,當中亦涉及AI分析。

AI除了能扮演一個角色外,還能隱藏在系統內協助玩者

再退一步,遊戲AI發展已不再限於在作中擔任某部分支援,而是能站在開發組的角度,延伸至管理整個遊戲。在喪屍遊戲《Left 4 Dead》裡,系統會從各種環境資訊及玩者行動中分析玩者的緊張度;當玩者處於放鬆狀態時,敵人來襲次數會增加,相反處於緊張狀態的話,敵人數目則會減少。利用這個設計,遊戲便能在沒有開發組明確指示下調整作品整體氣氛及平衡。
整體管理AI還可以應對對白等以往被認為非常固定的遊戲程式。時下遊戲除劇情對白外,還會有大量閒聊等重要度低、用於營造氣氛的對白;比方說當主角打倒敵人後,同伴們會說些讚賞對白。這時,如果同伴們都一起說「做得好」的話感覺會十分冗贅,這時管理AI會讓其他同伴說其他對白,又或者是借與其他同伴的交流對白繞圈讚賞玩者。如此一來,遊戲氣氛就如在現實般自然。

連向來被視為非常死板的對白都能由AI管理,令人難以想像日後遊戲AI能發展到甚麼地步

當然,不是立志要學習遊戲AI的話,我們的確不用怎樣仔細了解它們的運作。不過隨著遊戲AI應用及發展越來越快及廣泛,大家在玩遊戲時如能多留意潛藏在遊戲各地方的AI表現的話,其實也是件頗有趣的事。

相關文章

發佈留言

Back to top button