建立海盜的天堂:盜賊之海的AI設定(二):骷髏和鯊魚AI的祕密
在本系列的第一篇中,我探索了AI系統在遊戲中的運作方式,三大主要活動任務是如何生成的,以及開發人員如何才能讓伺服器承載所有的AI活動,合理分配資源。獲得Rare公司的邀請後,我有很多話題想討論。開發者就遊戲發行時的一些AI相關問題為我們做出瞭解答。首先,我們將探索在藏寶島上游蕩的豬、蛇和骷髏:它們是如何運作的?骷髏AI行為背後有什麼樣的驚人祕密?除此之外,我們還會深入探究Rare利用虛幻4引擎創造出的獨特水上導航系統,以及瞭解一下阻止AI鯊魚游到陸地上是一件多麼困難的事。
陸生動物的AI構建
讓我們先簡單檢視下這些動物。就如系列第一篇所說的,《盜賊之海》的其中一種主要任務來自於靈魂祕社:你得去往一個或多個指定島嶼,殺掉高階別的骷髏,用他們的頭骨換取獎勵。這就要求遊戲在必要時將大量骷髏重新整理在某個地點,但如果你這時已經取得了淘金者或商人聯盟的懸賞物,正在返程的途中,骷髏也會出現。
1.骷髏AI
那麼,這個系統是如何運作的?它依賴於一種叫做行為樹(behaviour trees)的常用AI範例,這是虛幻4引擎中自帶的AI工具。正如我在AI 101系列最新一集中說到的,行為樹的特點是可以擴充套件邏輯,形成多個分支,所以在特定的場景中,AI將做出一個或多個反映場景的決策。此外,他們可以對世界的變化做出快速反應,更新自己行為選擇以適應變化。我們在第一篇中說過,很多陸地活動角色,比如島上的骷髏、動物(我等會兒就展開)都是用虛幻4原本內建的AI工具鏈。但是骷髏有個特別的地方我想探究探究,自創辦《AI與遊戲》系列以來,我未曾見過如此獨特的設計。
當AI角色出現在遊戲中時,儘管你想要確保它們能夠使用某些與玩家角色相同的機制——尤其是類人AI角色——但當你構建AI時,通常的思維是角色會使用另一種執行方式的來執行這些行為,跟玩家的操作邏輯完全不同。你會有一個指示執行某個動作或行為的邏輯,在虛幻引擎中,你可以在藍圖中的行為樹編寫任務,邏輯通常會呼叫程式碼中的現有函式——玩家會用這個函式來執行類似的指令。就拿《盜賊之海》舉例,你想要在受傷之後補血,這時你會開啟物品欄,拿出一條香蕉,按下RT鍵或者滑鼠左鍵吃掉,這就觸發了玩家程式碼庫中的Heal()函式。一般來說如果你想讓一個AI角色——比如骷髏——做一樣的事,你的邏輯或者是直接執行一樣的Heal()函式或者是執行一個為非玩家角色編寫的類似函式,並且你要確保吃香蕉動畫能夠讓玩家理解對方也在做同樣的事情。所以總結來說就是看起來是在做同樣的事情,但實際執行方式是完全不同的。
所以你們可以想象一下我當時有多震驚——坐在Rare辦公室裡,開發者Rob Massella和Sarah Noonan告訴我骷髏AI其實是在模仿玩家的輸入。因此,他們不是簡單地觸發特定的行為程式碼,而是相當於用虛擬的手柄/鍵盤輸入,像人類一樣“玩”遊戲。此外,骷髏使用的基類控制器跟人類玩家是一樣的(或用虛幻4術語來說就是Actor,可放入關卡中的物件都是Actor),這意味著雙方不僅共享某些動畫,而且還共享輸入介面。我們再回到香蕉的例子,一個想補血的骷髏,它實際上是按下了虛擬按鍵,從物品欄中拿出香蕉然後吃掉。
值得一提的是,地面上的運動使用的是島上的導航網格系統,通過它實現四處走動。這種設計非常驚豔——通過額外的基礎資料工作,將AI的特定互動或行為解析為玩家輸入,這樣就確保了骷髏只能成為玩家的影子,玩家不能做的動作它們也不能做。某種程度上來說這也是有道理的,鑑於他們是……呃,死不了的人類,但更重要的是,這有助於簡化骷髏AI的測試——如果你看到他們做一些玩家做不到的事情,你就知道哪裡肯定出了問題。從理論上講,這意味著如果開發者為玩家新增了新的遊戲機制,一旦寫完了程式碼,骷髏也有新的內容了!
考慮到這種設計可能需要一些時間去習慣,Andy Bastable向我解釋說負責玩法設計的團隊會給新手開發者佈置一個小任務,幫助他們掌握工具鏈。開發者要做的就是建立一個“流浪樂隊”,一群骷髏必須聚集在一塊土地上,拿出他們的樂器,開始一起演奏一首歌。
現在,所有的AI行為都是在伺服器端進行管理的,就像你們在之前的Tom Clancy《全境封鎖》案例研究中所看到的那樣,這樣確保了每個裝置上的玩家在與AI角色互動時都擁有同樣的遊戲體驗。但還有平衡問題需要解決,正如我在第一篇中提到的,遊戲內建的系統會根據玩家的情況調整骷髏的數量和難度。骷髏的行為和基本的遊戲引數(如血量和可用武器)可以改變,種類也相當多,迫使玩家使用多種攻擊策略來擊潰他們。在第一次玩的時候,骷髏移動速度比較慢,攻擊性不強,只會用利爪或者是長刀攻擊。隨著玩家在靈魂祕社的等級逐漸提高,骷髏擁有了以前沒有的技能:它們可以更快地發動攻擊、更高效地追擊、面對攻擊懂得後退、用香蕉治癒自己,甚至開始使用手槍和喇叭槍攻擊。這一切都是通過使用資料庫來實現的,它可以在執行時將函式寫入AI角色中,決定這個骷髏會做出什麼樣的行動。其中包含了50多個獨特的引數,促使骷髏出現多樣化的屬性和行為。
2.動物行為
儘管遊戲需要在指定島嶼上製造威脅,但這些地方除了敵人還有各種野生動物:豬、雞和蛇。它們可以是你在躲避骷髏軍團追殺時遇到的又一個大麻煩,它們可以是商人聯盟的懸賞物,也可以只是為環境加一點生氣。
這些角色也使用行為樹,儘管它們的架構與骷髏非常相似,但它們好對付得多:玩家只有在靠近蛇時它才會主動攻擊,而豬和雞則會馬上逃離。就跟骷髏一樣,資料庫的使用能夠幫助開發者指定特定動物的行為表現。
在第一篇中我就說過,考慮到負載管理,動物的處理方式與骷髏基本一致,如果它們正在消耗的這些伺服器資源用在別的地方更值得,系統可以在必要時讓它們進入休眠或者消失。
鯊魚&導航系統
我們分析了所有陸地上的AI角色,那麼海里的呢?讓我們來看看玩家的第一個真正威脅——埋伏在海洋深處的鯊魚,很多很多鯊魚。
從設計的角度來看,鯊魚是為了給玩家增加一個新的挑戰,確保你不會在水中無所事事,時刻警惕著危險。它們只在小範圍、必要時生成。也就是說,你不會在開放世界裡偶然遇到一隻在海里游泳的鯊魚,相反,一條鯊魚會被傳送到你附近。如果遊戲你覺得你在水裡閒得太久了,鯊魚就會尾隨你。
因此,儘管鯊魚的行為樹結構相對簡單——它們只會對獵物進行圍捕或攻擊——但有兩個明顯的問題需要解決。第一是導航:你要怎麼確保AI鯊魚知道如何在水中移動。通常來說,我們會使用導航網格工具來實現在靜態表面物體的移動。這對陸地角色來說是行得通的,因為導航網格是一個二維的平面,模擬物體在三維空間的移動。然而,這並不適用於形狀不斷變化的表面或體積不斷變化的空間,例如水和空氣——這意味著你需要定製的一個特別的解決方案。這並不是只有《盜賊之海》遇到的問題,我最近研究的《地平線:零之曙光》也有類似的麻煩——Guerilla Games不得不為空中的敵人單獨做一個導航系統。
Rare公司正面攻克問題的方法是構建另一個導航系統,整合到虛幻引擎中現有的導航框架中,但專門針對水下運動。然而在這之前,還有一個設計問題需要解決:鯊魚不能停下來。雖然不同種類的鯊魚之間有所差異,但大多數現實中的鯊魚需要保持運動才能呼吸。所以AI角色也需要複製這種行為:以不同的速度在預定軌跡上游動,期間還要不斷微調鯊魚的運動方向。所以運動系統不僅要確保AI角色能像鯊魚一樣在水中穿梭,它還必須還原鯊魚的動態細節。
除非鯊魚被指示去攻擊玩家,否則它們一般都是在按弧形軌跡游泳。這是通過計算既定直徑的圓弧來實現的,它會影響鯊魚在運動時的轉彎速度,設計師可以調整鯊魚沿著圓弧運動的速度。同時,速度值被髮送到運動元件,這樣玩家就能從動畫中感覺到鯊魚運動速度的變化。導航系統指定一個二維或三維空間的地點,然後建立一個適合該位置的自然弧線,讓鯊魚游過去。
開發團隊在鯊魚的轉彎速度上下了很多功夫。以這種方式運動可以防止鯊魚在高速時轉向過快。如果鯊魚需要做一個急轉彎,考慮到它即將攻擊玩家,速度會慢下來——當然不可能會減速到靜止——並確保它在再次加速之前與玩家速度保持一致。但是鯊魚的運動有一個可接受的誤差範圍,它們有時會超過它弧線所指向的目標,但前提是它們不會與任何障礙物相撞——我馬上講到。這麼處理很好,鯊魚的運動看起來會更自然。
大部分的運動都是在2D空間設定下,這意味著玩家和鯊魚在水中是處於同一深度。如果沒有,鯊魚會像往常一樣按弧形路線遊,但會另外生成一條簡單的貝塞爾曲線,讓它可以游上或游下到相同的深度。
這很酷,但是會出現一個大問題:相撞。鯊魚需要避開船隻和島嶼,它們依靠虛幻引擎的環境查詢系統來發現附近的障礙物,但它們也有短距離的觸鬚式感測器,以防它們會迎面撞上船。這是非常重要的,由於它的游泳軌跡是弧線形,它有極小的可能會在某個小島上擱淺……這顯然是開發過程中一個更為棘手的問題。
為了維護程式碼庫,鯊魚導航的原始碼是虛幻引擎現有導航、移動和AI控制器程式碼的擴充套件。由此一來,開發人員的工作就比較輕鬆了。因為鯊魚導航的設計目標之一就是讓它的執行方式與陸地的基本一致,並且為了測試加以簡化,你可以在本系列的後幾篇看到關於此的更多內容。
總結
即使是3A遊戲中的一個最簡單的AI角色,製作起來都可能要耗費大量精力,如果中途出現偏離預期的情況則更是如此。事實證明,僅僅是加入一個會游泳的AI角色都這麼麻煩,那遊戲的這麼多海洋威脅是如何運作的呢?對《盜賊之海》AI的研究還不止於此,還有一些恐怖的AI敵人可能會讓我們葬身大海,在系列的第三篇,我們將會面對:
- 海怪,遊戲發行以來它就成了玩家擺脫不了的噩夢。
- 巨齒鯊,新DLC“飢餓深淵”出現的巨獸。
- 還有骷髏船,它第一次出現是在詛咒之帆DLC中,現在它們對玩家的船隻展開更猛烈的攻勢了!
相關閱讀:
建立海盜的天堂:盜賊之海的AI設定(一):任務活動是如何生成的?
原作者:Tommy Thompson
譯者:Willow Wu
原譯文:
https://www.gamasutra.com/blogs/TommyThompson/20190612/344551/The_Secrets_of_Skeleton_and_Shark_AI_in_Sea_of_Thieves_Part_2_of_4.php
相關文章
- 建立海盜的天堂:盜賊之海的AI設定(三):巨齒鯊、海怪和骷髏船的AI執行AI
- 建立海盜的天堂:盜賊之海的AI(一)AI
- win10系統盜賊之海如何設定中文_win10盜賊之海調整中文語言的步驟Win10
- win10玩盜賊之海卡頓怎麼辦_win10玩盜賊之海卡頓如何解決Win10
- win10玩盜賊之海閃退如何解決_win10中盜賊之海總是閃退解決教程Win10
- win10系統盜賊之海無法開啟怎麼辦_win10打不開盜賊之海遊戲如何解決Win10遊戲
- win10商店找不到盜賊之海怎麼辦_win10系統商店搜尋不到盜賊之海遊戲如何解決Win10遊戲
- 海盜灣的出售和Usenet的敗訴SENet
- 盜賊之海為什麼連不上伺服器?win10登入盜賊之海出現連線不上伺服器怎麼解決伺服器Win10
- 萬億候蘋果,1000000000000 美元的海盜公司 | 摸魚系列蘋果
- Steam一週銷量排行榜:《盜賊之海》登頂 《命令與征服》重製版第二
- 海盜分贓演算法題演算法
- Win10系統玩盜賊之海遊戲出現語音失效不能用如何解決Win10遊戲
- 我的第一張AI海報AI
- 華為的浮槎:用雲與AI渡過時代之海AI
- AI技術在智慧海報設計中的應用AI
- 博弈學習(三) HDU 1538 A Puzzle for Pirates(經典的海盜分金推理)
- 骷髏病毒簡單分析
- 美媒:美國AI的祕密武器——中國人才AI
- 放之四海皆適用的設計原則(二)
- Ollama AI 框架缺陷可能導致 DoS、模型盜竊和中毒AI框架模型
- PostgreSQL技術週刊第2期:用PostgreSQL解海盜分金問題SQL
- nginx 中防盜鏈設定Nginx
- 美團服務體驗平臺對接業務資料的最佳實踐-海盜中介軟體
- [經典演算法]海盜分金問題sql求解(貪心演算法)演算法SQL
- 《海盜來了》瘋狂遊戲,如何用資料搶佔小遊戲市場遊戲
- 遊戲AI的生命力源自哪裡?為你揭開MOBA AI的祕密!遊戲AI
- 虎牙直播的新大考:增速放緩、競爭紅海、AI高企AI
- 《骷髏騎士:重製版》如何實現經典原作的初衷?
- 小程式專案如何設定資源的防盜鏈?
- Apache防盜鏈的使用和破解Apache
- Flutter和原生之間的祕密Flutter
- “網遊大盜”透過修改登錄檔盜密碼(轉)密碼
- Facebook祕密檔案洩露:賺錢(和背鍋)是AI的使命AI
- 海賊女帝3D列印模型免費分享3D模型
- 3步get加勒比海盜同款身份證 元宇宙如何玩轉世界公民元宇宙
- 思必馳闖關IPO:老將求生AI紅海AI
- 密碼學系列之:海綿函式sponge function密碼學函式Function