育碧是如何做AI的? 《全境封鎖》敵人AI設計思路分析

遊資網發表於2019-05-30
育碧是如何做AI的? 《全境封鎖》敵人AI設計思路分析

2016年,Tom Clancy's The Division 將玩家們帶到了飽受戰火蹂躪的曼哈頓市區,並在此與各個派系的敵人和其他特工展開戰鬥。這款Ubisoft出品的RPG式射擊遊戲為了讓玩家們時刻保持警覺,創造了各式各樣的敵人。

但與迄今為止我們所談論的那些單機遊戲不同,全境封鎖需要解決作為一款線上多人合作遊戲所需要面臨的各種實際問題,並明確如何在全球數以千計的玩家環境中管理各類系統。

整個系列文章將由兩部分組成,在第一部分中我將討論Massive Entertainment工作室如何在全境封鎖世界中創造各種有趣並具有挑戰的情景;他們如何設計敵人,並且怎樣在成千上萬的玩家爭相湧入紐約街道時管理這些敵人的行為。

part 1

全境封鎖

在病毒爆發之後,紐約市陷入了混亂,直到汙染得到控制並恢復秩序前都將處於與外界隔離的狀態。玩家將扮演國土戰略局的特工:在國家緊急狀態期間輔助政府部門,幫助第一批“響應者”為紐約地區帶來秩序。

玩家可以在總面積超過6平方公里,從第21街區和第9街區到第55及第3大道的曼哈頓區域單人或最多4人一組完成一系列故事及開放世界事件。

育碧是如何做AI的? 《全境封鎖》敵人AI設計思路分析

為了給玩家帶來各種各樣的挑戰,地圖的各個區域將有5個敵對派系控制:包括熱愛火焰噴射器的清掃者,從Rikers島逃出來的罪犯以及私人僱傭兵公司“The last man battalion”。此外,該城市中受汙染最嚴重的的地區——“暗區”已經被封鎖,這是遊戲的主要PVP場所,在這裡,你不僅會遇到敵人,其他玩家也可以在任何時候攻擊你。

當玩家探索紐約市時,他們講在以下三種場景之一中與非玩家角色(或NPC)互動:

  • 作為開放世界中的漫遊者時:如“野狗”、平民、靠近安全屋時出現的聯合陣線士兵或巡邏的敵對暴徒。
  • 遭遇戰:這是玩家在遊戲世界中發現敵人、怪物的情況,通常是由於遊戲中系統的設定,在設計師意願的驅動下使玩家進入戰鬥或制定代替路線。
  • 劇情任務:由設計師製作的任務,是遊戲的主要故事的一部分。這些都是由較長的情節所驅動的,並將包括多個戰鬥模組。


在每種情況下,遊戲世界出現的AI將符合以下兩個設計目標之一:

  • 豐富遊戲中的世界架構,為玩家增添沉浸感
  • 提出需要玩家在戰鬥中解決的難題


後者正是遊戲的關鍵部分:

因為它意在鼓勵玩家於戰鬥開始前偵查相關區域並建立戰略構思。一旦戰鬥爆發,玩家需要不斷重新評估他們戰鬥物件的優先順序和空間位置,以免受到損傷。這就需要地方NPC具有有趣的行為特徵:玩家能夠識別、在基本行為方面保持一定的一致性、使用各類子系統來處理面臨的威脅、動態化的目標處理能力以及對玩家行為作出反應。

系統

所有NPC行為都是通過行為樹系統來實現的,其中行為樹的子模組將用於啟用並執行一些應對某些目標或變數的特定行為。這可以是導航至目標的目的地,探索潛在的威脅區域,攻擊敵人,進入掩體等等。我們來看看敵對NPC的設計和結構。

育碧是如何做AI的? 《全境封鎖》敵人AI設計思路分析

上圖中的行為樹(注意:從右至左閱讀)擁有豐富的分層結構,這種結構能夠為每種行為提供多條路徑。這樣做的好處是既可以從一定範圍內產生出一種特定行動,又保證了整個系統儘可能的靈活。

行為樹的頂層【右橘色】分解了NPC的三種關鍵反應方式,分別為“系統直接命令、“維持主動戰鬥”和“在必要時啟動戰鬥“。

繼續向下執行則到了條件層【藍色/紫色】,該層將根據當前的世界條件及角色本身的一些情況決定可以執行的行為。最後移動至下層【左側】,該層將處理遊戲中可能發生的幾乎所有的戰鬥變化。

這其中的關鍵是構建中間層,以便它可以連結到下層的各種不同行為。這樣做也是為了避免基於一些非常特定的條件通過行為樹的下半部分去複製行為。因此,遊戲中所有不同的NPC(下文中會提到),以及Seeker Mine-技術上講,它是一個人工智慧角色-會擁有類似的子樹或者行為來滿足需要進行復制的情況。

正如您想象的那樣,這將導致行為樹架構相當複雜,下圖中顯示的也是如此,這需要程式設計團隊和設計團隊密切合作才能實現。

考慮到問題的規模及面臨的挑戰,程式設計團隊開發了許多工具來編輯和除錯每一個NPC,並將這些工具構建到全境封鎖所使用的Snowdrop引擎中。這些除錯工具的用途非常廣泛,它們允許開發人員在聯機測試的例項中識別某個因特定字元所產生的問題,之後我們會繼續討論這一點。

育碧是如何做AI的? 《全境封鎖》敵人AI設計思路分析

現在,我們已經對AI架構有了一些瞭解,讓我們再來看看NPC本身的設計。

原型&派系

在發售時,全境封鎖共有5種派系,其中包括36個敵對NPC型別,原型用於確定角色的行為型別,而派系則用於控制特定的NPC屬性。為了實現遊戲玩法的多樣性,全境封鎖中有大量的原型:

  • 突擊型:採用基本的設計與掩護AI
  • 掠奪者:直接衝向目標
  • 坦克:能夠承受並造成大量傷害
  • 狙擊手:造成遠距離且準確地攻擊
  • 投擲者:投擲手榴彈或區域效果的物品
  • 支援型:協助戰鬥中的友方單位(例如治療)
  • 抑制型:限制玩家
  • 領袖:為附近的友方單位提供增益
  • 控制者:通過間接方式戰鬥(例如使用炮塔)


當然,還會有一些不遵守原型的特殊NPC-但這些僅用於終局遊戲和BOSS戰。

這些原型中的每一種都會明確反饋出玩家將面臨何種危險且讓玩家思考如何進行攻擊。此外,很多原型間會相互補充(如下圖所示),以便設計師可以利用不同原型間的屬性來實現他們的目標。

育碧是如何做AI的? 《全境封鎖》敵人AI設計思路分析

例如,當狙擊手保持與玩家間的距離並嘗試造成大量傷害時,掠奪者會嘗試縮小他們與玩家間的距離並造成近戰傷害。與此同時,坦克和抑制型將迫使玩家利用掩體,而投擲者會嘗試將玩家從掩體內逼出來。

這樣一來,AI就迫使玩家在敵方單位構成的特定戰鬥中使用不同的戰術。這種設計源於全境封鎖在戰鬥上期望玩家不斷去評估三個關鍵的遊戲屬性:

  • 目標的優先順序排序:我現在應該對誰發起攻擊?
  • 轉移位置與暴露:在當前情況下,我是否處於最佳位置?玩家需要經常性地移動至更好的戰術位置以防止在戰鬥中處於不利
  • 續航獎勵:提供長時間的戰鬥,考察玩家在一定強度的戰鬥下保持水準的能力


派系

就像前文所說的,36種NPC型別會分佈在主要的派系中:Rioters,Cleaners,Rikers和分為1級與2級的Last Man Battalion。根據您在紐約地圖當中的位置,您將在戰鬥中遇到一個或多個派系。

每個陣營都會隨著遊戲的進行按我所列出的順序而改變難度。鑑於有如此多的NPC原型,設計者很容易通過迭代的方式進行難度管理,並且足以在整個NPC群體中進行普及。

育碧是如何做AI的? 《全境封鎖》敵人AI設計思路分析

為了實現這一目標,Massive構建了一個AI配置系統,可以修改NPC的許多公開屬性。這使得他們對玩家構成的威脅變得更加可控。這是其中的八個屬性:

  • 對玩家行動的反應時間
  • 移動速度
  • 集體行為
  • 掩體運用
  • 技能運用
  • 蹣跚抵抗
  • 抑制抵抗
  • 生命力
  • 攻擊準確性


構建的配置檔案可以在特定NPC型別及NPC所在的派系中保持一致。例如:

Rioters-他們是玩家在遊戲中會遇到的第一個派系,其僅限只用“Dumb“配置檔案,其中所有屬性都相當低。

當然,重型、支援型、炮塔都擁有專用的配置檔案,適用於所有派系一致的原型。與此同時,Last Man Battalion擁有自己獨特的精英配置:這使得他們對玩家的威脅遠遠超過其他所有人。

對AI行為產生影響的最後一個因素是他在遊戲本身中的角色定位。

角色的範圍從常規的敵人到退伍軍人、精英,最後則是命名敵人,他們將作為最高優先順序的目標。隨著NPC角色定位的提高,他們的基礎屬性也會受到影響,例如武器傷害、護甲和設計準確性,精英和命名NPC可以獲得特殊的武器和模型。

他們甚至可以獲得定製的鐳射瞄具,這些瞄具對他們的遊戲能力幾乎沒有任何影響,但這會讓玩家更緊張。

小結

這套體系使全境封鎖可以建立一個嚴格且多樣化的非玩家角色集合,幫助其還原一個末世的曼哈頓。雖然這一系統本質上使用著相同的核心AI架構,但使用原型、派系、配置檔案與角色排名不僅可以實現敵人行為,還可以為全球玩玩家帶來挑戰。

但其中有一個更大的問題:如何在一個為世界各地玩家線上執行的遊戲中保持這些系統的效能呢?自發售一來,全境封鎖已經擁有了至少1000萬名玩家,並且擁有超過100萬名同時線上玩家。這就需要在數千個單獨的遊戲例項中建立、維護與控制許多的非玩家角色。

在本系列文章的第二部分中,我們將看看Massive Entertainment如何解決這個問題並進行線上整合,確保遊戲儘可能順利執行而制定的設計決策及對AI系統提出的問題與限制。

此外,我們還將介紹為線上例項中測試AI行為而構建的工具,以及如何使用AI工具在測試伺服器上驗證故事任務的一致性與穩定性。

在上一個部分中,我們研究了遊戲的整體結構和它的核心敵人AI。當玩家們在紐約的街道上漫步時,他們面臨著各種各樣的人工智慧單位,無論是敵對的還是友善的。全境封鎖採用龐大的行為樹去實現並處理決策,其中包括屬性管理系統、監督角色派別以及技能檔案和敵人級別等。

育碧是如何做AI的? 《全境封鎖》敵人AI設計思路分析

但是這些都無法解決這個遊戲面臨的更大更根本的問題:與我迄今為止討論的人工智慧方面的遊戲問題不同,全境封鎖是一款線上遊戲,需要玩家連線遊戲伺服器才能夠遊玩。

這就要求人工智慧的執行方式必須使所有的線上玩家擁有相同的遊戲體驗:在一個與其它玩家共享的世界中,使用自己的裝置與相同的敵人作戰。

因此,在這第二部分中,我們將探討如何建立非玩家角色的線上基礎架構、如何建立和管理這些角色,以使所有玩家獲得相同的體驗。同時也會講一講如何利用人工智慧角色在開發期間幫助測試並完善遊戲中的新內容。

part 2

AI如何線上工作

如果你不熟悉線上遊戲是如何執行的,這個運作機制我們稱之為客戶端-伺服器模式。每個玩家他們從他們自己的遊戲副本(PC或者主機,即客戶端)登陸到託管遊戲的伺服器。

這個伺服器承載這遊戲發生的事件:每天或每週發生的種種挑戰、正在發生的世界事件和遊戲中的經濟情況等。

這就是我們在執行遊戲時需要考慮的:一個小隊中的玩家和他的隊友們的經歷不該有任何差異。如果你被敵人近距離攻擊,但你的朋友看到的並不是這樣,這其實非常可怕。

為了解決這個問題,遊戲中所有的人工個系統都將執行在伺服器端。我在第1部分當中提到的行為樹人工智慧系統中沒有一個是在客戶端執行的,這一切都發生在伺服器上。這確保了所有線上玩家的一致性。

行為執行

但這就帶來了一個問題,行為樹只代表了遊戲中人工智慧的決策,但玩家需要的是在遊戲中看到這一切決策所帶來的表現,因此需要遊戲中的各種角色在伺服器上去執行行為樹所做的決策。

同時,為了減少玩家和伺服器之間傳遞的資料量,使人工智慧能夠順利執行,所有角色的動畫都將全部在客戶端進行處理,伺服器上的人工智慧系統對於指定角色的動畫如何工作的理解十分有限,因此它只需要知道要執行的是哪個角色,而客戶端會最終處理所有這些問題。

育碧是如何做AI的? 《全境封鎖》敵人AI設計思路分析

這種做法解決了一個問題,使得客戶端和伺服器之間傳送的資料保持在最小值,但卻在NPC移動方面呈現出了一個新問題。

全境封鎖中的所有非玩家角色的使用一種更為智慧的角色動畫移動過程,即以動畫來驅動移動。這使得NPC能夠更流暢地移動並且他們的動畫將更符合運動學。

但是,如果伺服器不去監視移動的執行,它如何知道這些角色是否移動到了正確的位置呢?為了解決這一問題,伺服器上的運動系統會為要執行移動的角色計算一個運動計劃,然後在客戶端上,它必須在角色的動畫中尋找與原始計劃匹配的可用動畫來建立一個運動路徑。

這聽起來好像很複雜,但它其實將運算與資料的消耗保持在一個非常小的範圍內。

育碧是如何做AI的? 《全境封鎖》敵人AI設計思路分析

這種做法也會產生一個問題,就是某些資訊或事件將在客戶端和伺服器上同時執行,例如NPC部署炮塔、投擲手榴彈或者進行治療行為等。

這樣做是為了減少客戶端和伺服器之間的資料傳遞,但這也意味著一些資訊需要在執行時進行同步。這種行為也導致了全境封鎖釋出後的頭幾個月,PC版本上出現的資料修改和外掛氾濫,玩家會修改客戶端中的資料,給自己帶來生命值與傷害的提升。

管理世界

全境封鎖中的每個伺服器都包含著幾個遊戲地圖的例項,在最繁忙的時期可能會有多達1000名玩家在同一個指定的伺服器上游玩,同時還伴有上千名AI角色。

為了適應大量的玩家和人工智慧角色,伺服器的重新整理頻率為10HZ,這意味著所有的行為和位置每秒都會更新10次。伺服器本身對於2016年來說,也是非常強勁的——40臺核心機器擁有256GB的記憶體,通過對遊戲進行優化後(包括我沒有提到的許多優化),它們可以在不到20毫秒的時間內對每一個遊戲世界執行一次標記更新,在最壞的情況下,最慢也只需要100毫秒。

另外,玩家和伺服器之間傳送的連續資料非常少,其平均傳輸速率僅為每秒50千位元左右。因此,理論上你可以在56K調變解調器上執行全境封鎖。

育碧是如何做AI的? 《全境封鎖》敵人AI設計思路分析

有趣的是,伺服器並不是限制遊戲中人工智慧數量的因素。真正限制的因素是玩家的裝置——個人電腦或主機。

在開發的過程中,我們發現玩家的控制檯成為了人工智慧同時執行數量上的瓶頸。因此,同時在遊戲中活躍的NPC數量是有限制的。

如果你已經玩過了全境封鎖的故事模式,你可能會注意到遊戲經常會出現時長不等的休息時間來結束戰鬥部分,這其中的大部分是為了解決上述中玩裝潢置造成的NPC數量瓶頸的問題。

全境封鎖也在開放世界的基礎上建立了不同的區域。

在每個區域中,如果一個NPC是作為遊蕩者或者特定的遭遇而佈置的,它將被限定移動的範圍。這很大程度上是為了確保NPC不會偏離他們最初的重新整理點過遠,這意味著你不會在時代廣場碰到Last Man Battalion的部隊;同時,這也避免了玩家會被一個敵人從曼哈頓的一邊一直追逐到另一邊。

育碧是如何做AI的? 《全境封鎖》敵人AI設計思路分析

除此以外,人工智慧角色還擁有與導航行為樹相連的感知系統。

這些角色即擁有錐形的視覺感測器,也能根據他們的強度等級在不同的距離範圍內聽到聲音。另一方面,他們還可以進行戰術分析,以確定當戰鬥開始時,他們可以進入150萬個掩體中的哪一個。

這些感測器的更新速度和精度取決於玩家與他們之間的距離,也取決於伺服器中的天氣系統。雨雪等其他惡劣天氣將影響這些感測器的範圍和精度。同時,敵人的感知系統會在戰鬥中每幀更新,而在距離玩家50-150米之間每2秒更新一次,當週圍150米沒有玩家角色時,更新將被完全禁用。

育碧是如何做AI的? 《全境封鎖》敵人AI設計思路分析

構建測試工具

現在,我將要討論的是我們究竟測試了多少非玩家角色和遊戲系統,以及AI是如何幫助並構建全境封鎖的。

正如第1部分所提到的,Massive構建了大量的工具,使設計師能夠完成和迭代他們的設計,同時也幫助程式設計師在遊戲中發現特定的問題。

Jonas Gillberg在2016年的GDC中談到了他們使用的工具和系統,這些工具對於程式設計師來說是很必要的,而對於不同規模的開發團隊,想要簡化生產流程,這是一個很好的參考。

這種測試工具可以在行為樹處於執行狀態時對其進行全面的除錯,但最令人印象深刻的還是在實時模擬測試中這些工具體現的潛力。

除錯工具鏈允許使用本地伺服器來模擬活動例項的行為,這不僅可以確定問題出現的位置,還可以在測試期間回滾時間線,以此來了解問題何時發生。

育碧是如何做AI的? 《全境封鎖》敵人AI設計思路分析

當然,確保每個任務都是完整、有效和穩定的是測試中最有意義的地方。像全境封鎖這類規模的遊戲,一點點小錯誤都可能阻斷任務之間的進展,或者使玩家無法觸發遊戲內所需的特定事件。

而Massive構建的測試工具可以建立數百個能模擬玩家的AI角色,並將它們放入測試伺服器來執行以跑通所有內容。

超過1000名AI玩家將被投入到地圖中,但是他們具有各種各樣的作弊功能:他們不尊從物理碰撞,如果有有必要時可以進行穿牆;也可以在世界上的任意兩點間執行不需要導航的移動行為。

無論他們是個人還是已經組成了隊伍,都可以解散並完成整個任務,亦或是探索開放世界。除了四處遊蕩並殺死他們該殺死的東西以外,他們並不知道他們該做什麼,但是這1000只“敲擊打字機的猴子”可以幫助分析錯誤並測試伺服器負載,驗證任務進展、世界事件、動態遭遇等多方面的問題。

結語

距離Tom Clancy‘s The Division 2的釋出已經不遠了,思考並見證這些系統如何在全境封鎖2中擴充套件是非常有趣的一件事。

很明顯,全境封鎖將在其整個生命週期內得到不斷的更新,如:地下模式DLC、生存模式DLC和Last Stand,甚至還有過去一年中的許多免費更新,他們仍然在設計有趣的東西。

當然,許多現有的人工智慧功能將在這段時間內得到改進與擴充套件,而一些新的系統將會脫穎而出。就目前而言,他們會如何發展仍然是一個迷,但我可以打賭,未來你一定會在這裡再次看到全境封鎖的AI相關文章。


參考文獻:


Jonas Gillberg, "AI Behaviour Editing and Debugging in Tom Clancy's The Division", Game Developers Conference (GDC), 2016.
Drew Rechner & Philip Dunstan, "Blending Autonomy and Control: Creating NPC's for Tom Clancy's The Division", Game Developers Conference (GDC), 2016.
Philip Dunstan, "How Tom Clancy's The Division Simluate Manhattan for Millions of Players", Nucl.ai 2016.


作者:對面對更慘 編譯
原譯文:
https://www.gamasutra.com/blogs/TommyThompson/20181203/331725/Enemy_AI_Design_in_Tom_Clancys_The_Division.php

相關文章