創作內容

2 GP

闇龍紀元:異端審判的AI 效用理論評分架構

作者:stormcorn│2019-07-23 15:40:50│巴幣:4│人氣:539
Behavior Decision System AI 行為決策系統 (BDS)
Dragon Age Inquisition ’ s Utility Scoring Architecture
闇龍紀元:異端審判的AI 效用理論評分架構

譯自GAME AI PRO 3 (書中圖表將不引用顯示)

Sebastian Hanlon and Cody Watts

31.1簡介
31.2行為決策系統
31.3列舉潛在行動
31.4評估行為
31.5執行步驟
31.6運動和被動行為
31.7模塊化和重用機會
31.8結論致謝參考文獻

31.1簡介

“闇龍紀元:異端審判(DA:I)”的實時戰鬥序列使玩家控制的調查官對抗蹣跚的不死怪物、可怕的惡魔,當然還有高聳的龍的戰鬥中。這是一項艱鉅的任務,但審判官並不孤單;與他或她一起戰鬥的是三個人工智能控制的盟友 - 異端審判的其他成員,如鐵公牛-擺動高聳的斧頭的僱傭兵-瓦里克特拉斯,一個說話流暢的矮人,以及多利安帕夫斯-一個迷人而機智的人類法師。
在闇龍紀元,戰鬥是由“能力”驅動的。一個典型的戰士可以擁有2到20種能力,從簡單的(“用你拿的武器擊中你的敵人”)到精心設計(“召喚”對你的敵人下了一場火雨“)。每種能力都有一個相關的成本,用可消耗的資源來表示,稱為“法力”或“耐力”。由於法力/耐力有限,技能也有隱含的機會成本 - 一種技能消耗的法力/耐力將不可避免地妨礙使用未來的能力。這為人類玩家和人工智能角色創造了一個具有挑戰性的問題:當面對有限的資源,多種選擇以及不斷變化的遊戲狀態時,戰鬥者如何快速確定將產生最大可能利益的行動方案?對於DA:I,我們創建了一個基於效用的AI系統,稱為行為決策系統(BDS)來回答這個問題,並處理戰鬥人員必須執行的複雜決策。在這篇2. 3. 4.章節中,我們將描述BDS的原理和架構,為您提供實現類似系統的必要信息,並擴展它以滿足您自己的遊戲需求。

31.2行為決策系統

BDS的體系結構基於以下假設:
1、在任何給定時間,AI角色可以執行一組有限的動作。
2、AI角色一次只能執行一個動作。
3、行動具有不同的效用值;有些動作比其他動作更有用。
4、可以量化每個動作的效用。

這些假設自然地提出了一個簡單的貪婪算法來確定AI角色的最佳行動方案:首先確定它可以合法採取的一系列行動。然後,評估每個操作並根據其效用為其分配一個分數。在評估每個動作之後,得分最高的動作是應該採取的行動(Graham 2014)。
這種方法有兩個主要挑戰。首先,AI角色如何枚舉它可以執行的所有動作?其次,AI角色如何才能使行動的效用合格?在人工智能角色能夠回答這些問題之前,我們必須首先向其傳授有關自身及其所處世界的知識。

例如,考慮一個簡單的動作,例如“喝健康藥水”。大多數人類玩家都知道,當健康狀況不佳時喝健康藥水很有用。不幸的是,人工智能角色並不直觀地理解生命,死亡,健康和治療藥水等概念。他們不知道活著是“好”而死了是“壞”。他們不明白在健康狀況不佳的情況下飲用健康藥水是好事,但喝完健康藥水是完全健康的,這是浪費。並且他們不明白健康藥水是消耗品,並且除非擁有健康藥水,否則不能飲用健康藥水。

在最基本的層面上,BDS是一個框架,允許遊戲設計師將知識傳授給AI角色。具體而言,BDS的存在是為了提供以下問題的答案:AI角色可以執行哪些操作?他們在什麼情況下可以執行這些行動?這些行動應該如何優先於彼此?最後:這些行動如何實際執行?

31.3列舉潛在行動

DA:I中有超過60種能力:但是這些能力中的許多能夠以不同的方式用於實現不同的目的。例如,“公牛衝鋒”能力允許戰士直接衝擊戰鬥,破壞並擊退任何站在他或她的方式的敵人。這是其明確的目的。然而,同樣的能力也可以用作受傷戰士快速退出戰鬥的一種方式。雖然潛在的能力是相同的,但能力的動機是完全不同的

因此,在列舉潛在行動時,僅僅計算角色可以使用的能力數量是不夠的 - 我們還必須包括可以執行這些能力的各種方式。為了區分能力的各種使用方式,我們定義了一種稱為“行為片段”的數據結構。行為片段是BDS運行的基本單位。每個片段包含AI角色以特定方式評估和執行能力所需的信息。從某種意義上說,片段代表知識的片段 - 並且在整個遊戲過程中,可以通過BDS將字串“註冊”到角色來授予角色知識。例如,一件武器可能附有一個或多個行為片段,告訴AI角色如何使用武器。當AI角色裝備武器時,這些片段將通過BDS註冊到角色。同樣,當武器未裝備時,片段將從該角色取消註冊。行為片段使BDS可以簡單地枚舉角色可用的動作列表;一個人只需要查看已註冊的片段集。 DA:I 中最複雜的AI角色:同時註冊了50多個行為片段,但平均AI角色將有10-20個註冊片段。

31.4評估行為

行為片段包含AI角色以特定方式評估和執行能力所需的信息 - 但這究竟是什麼意思?如前所述,BDS基於這樣的假設,即可以量化每個行動的效用。為了保持這個假設,每個行為片段必須包含一個方法來量化它所代表的動作的效用。有許多可能的方法來量化效用,但對於DA:I,我們選擇使用修改後的行為樹來表示效用,我們將其稱為“評估樹”

31.4.1計算效用

在最廣泛的術語中,評估樹的目的只是為其關聯的行為片段生成一個得分值。然後可以將這些分數用作將兩個行為片段相互比較的基礎,以便對它們的相對效用進行排序。分數值通過嵌入評估樹本身的“評分節點”進行分配。當樹從其根節點開始執行時,它以零分開始。當樹從一個節點前進到下一個節點時,它執行的任何評分節點都會將它們的值添加到樹的總分中。評估樹在“上下文”中評估 - 也就是說,樹內的節點可以訪問諸如正在執行評估的AI角色之類的信息。這允許創建評估樹,這些評估樹根據評估它們的上下文產生不同的分數(Merrill 2014)。例如,圖31.1顯示了一個評估樹,如果評估角色的健康狀況小於50%,則評分為5,否則評分為0。在構建我們的評分系統時,我們考慮了各種方案來自動標準化或縮放評分值。最終,我們選擇使用(並推薦使用)面向設計師的評分約定來為行動應如何相對於彼此評分提供框架。請注意,這些規則是內容創建者的指南,並且在遊戲數據中沒有明確的表示。表31.1顯示了評分約定的示例。


This evaluation tree returns different scores based on the health of the evaluating character.
該評估樹基於評估角色的健康狀況返回不同的分數。


設計人員負責為每個片段構建評估樹,以有條件地分配分數,以便樹將在適當的動態範圍內生成值。在DA:I 中,每個操作類使用一組不同的評分邏輯資產,用於返回適當範圍內的評分值。例如,“Support-支持”操作的評估樹首先授予基分25分,並有條件地將上下文分數添加到最多至45分。





31.4.2目標選擇

DA:I 中的大多數能力:需要一個目標才能運作。例如,AI角色不能簡單地“施放獻祭” - 他們必須在特定的敵人身上施放獻祭。所選擇的能力目標可以極大地影響執行該能力的結果(即效用值)。考慮:對一個弱抗火的目標施放獻祭將會造成重大傷害,而將其施放在一個具有抗火能力的目標身上則不會浪費法力值。因此,目標選擇是評估步驟的必要部分;為了準確地表示動作的價值,我們必須考慮該動作的所有潛在目標,然後選擇提供最大效用值的目標。因此,在BDS框架中,評估樹不僅返回分數,還返回目標評估樹的上下文特性允許我們通過引入“目標選擇器”節點來添加目標選擇邏輯。此節點迭代設計者指定的目標列表,並分別評估和分配每個目標的分數。圖31.2顯示了一個使用目標選擇器節點的評估樹。


Figure 31.2

該評估樹專門針對不易受火影響的敵人。易受火攻擊的目標得分高於未攻擊的目標。



目標選擇器節點維護自己的臨時評估狀態和記錄表,並根據以下算法執行:

1.將評估上下文的當前得分值記錄為“初始得分”。
2.對於迭代器數據指定的每個目標:
a。將上下文的得分值設置為初始得分。
b。將上下文的“行為目標迭代器”欄位設置為當前目標。
c。評估子節點。
d。如果子節點回傳true,則記錄迭代器當前目標的上下文當前得分值。
3.如果已記錄至少一個具有評估分數的目標:
a。將上下文的行為目標位置設置為具有最高分數的目標位置。
b。將上下文的分數值設置為與該目標相關聯的分數。
c。回傳true。
4.如果沒有記錄具有評估分數的目標表,則回傳false。

通過這種方式,比較多個目標,並且只有為每個片段生成最高分數的目標與主BDS評估表中的該片段相關聯。
31.4.3比較片段作為AI角色更新的一部分,將運行每個已註冊行為片段的評估樹,並將該樹生成的分數和目標與片段一起存儲在摘要表中。當所有評估樹都已運行時,選擇具有最高記錄分數的片段以執行。通常在每次AI更新過程中重複此循環,但可以在適當的時候執行。清單31.1包含此評估步驟的偽代碼實現。

清單31.1。用於評估註冊行為片段的偽代碼。

struct SnippetEvaluation
{
BehaviorSnippet snippet;
Boolean result;
Integer score;
Character target;
};

// This function evaluates registered behaviors
// and returns the one with the highest utility.
Optional <SnippetEvaluation> EvaluateSnippets()
{
list <SnippetEvaluation> evaluatedSnippets;

for (BehaviorSnippet snippet: registeredBehaviors)
{
SnippetEvaluation evaluation = snippet.evaluate();

if (evaluation.result == true)
evaluatedSnippets.push(evaluation);
}
sortByDescendingScore(evaluatedSnippets);
if (evaluatedSnippets.empty() == false)
return evaluatedSnippets.first();
else return None;
}

保留任何超出評估步驟範圍的每個片段評估結果並非絕對必要;執行步驟僅需要引用最高優先級的片段和所選的目標。但實際上,我們發現將調查結果保留在debug-viewable table調試可查看表中可以在調試和迭代AI行為時提供很好的見解。

31.5執行步驟確定了得分最高的片段以及相關能力的目標後,最後一步是執行該片段。正如每個代碼段包含一個評估樹來顯示應如何評估行為一樣,它還包含一個行為樹(稱為“執行樹”),以顯示應如何執行該行為。執行樹負責在執行動作的有效部分的動畫和遊戲邏輯之前包括所需的任何準備或定位:動作的“active execution主動執行”。與評估樹一樣,執行樹在執行時可以訪問上下文信息。具體地,BDS公開關於在評估步驟期間選擇的目標的信息以及與該片段相關聯的能力。為了簡化我們的執行樹,我們定義了一個名為“Execute Ability執行能力”的 task node任務節點,它只是觸發AI角色contextually-specified target對上下文指定的目標使用 contextually-specified ability上下文指定的能力。圖31.3顯示了典型的“move-into-range-and-strike移入範圍和衝擊”執行樹。


在執行遠程攻擊和停止移動之前,此執行樹處理移動以實現範圍和視線。

在上下文中存儲有關能力和目標的信息(而不是在execution tree執行樹中顯式引用它們)允許執行樹保持通用,從而使它們能夠跨多個不同的片段重用。例如,圖31.3所示的執行樹可以應用於衝擊攻擊,刺傷攻擊或咬攻擊 - 只要行為發生在近戰範圍內。

屬於在前一個BDS評估過程中選擇的行為片段的執行樹將在每次AI更新過程中執行一次,直到“Execute Ability執行能力”節點被觸發,表示行為的執行完成。然而,即使在AI角色正在執行特定片段時,仍然希望BDS繼續執行評估步驟。以這種方式重新評估允許AI角色執行新的片段以響應變化的環境,而不是盲目地執行先前選擇的片段,該片段已經變得不是最理想的。實際上,評估和執行邏輯之間的契約是evaluation tree 評估樹負責識別和防止任何使得無法滿足execution tree 執行樹中包含的指令的條件。在執行樹變得不可能完成的情況下(例如,如果執行的目標在能力被使用之前死亡),則重新評估確保現在無效的片段將被替換為有效的片段。話雖如此,一旦AI角色觸發“執行能力”節點,暫停AI更新是合理的,直到該能力完成執行為止;這可以最大限度地減少浪費的AI決策,這些決定在角色被佔用 is occupied時無法實現。

31.6移動和被動行為

雖然BDS最初是為了優先考慮、準備和執行離散行動,但在開發DA:I的過程中:我們發現BDS評估執行框架對於調節持續發生或“被動”的行為也很有用。

例如,在DA:I 中:如果玩家的AI控制的盟友沒有其他任何事情可做,他們只會跟隨玩家,無論他或她去哪裡。通過註冊一個片段將其合併到BDS中,該片段的評估樹簡單地返回一個低於任何動作的常數分數(例如,在表31.1中的評分系統的上下文中得分為0),並且其執行樹什麼都不做但只觸發“跟隨領導者“移動行為。當BDS成為角色的最高優先級時(即,當沒有其他分數大於0的片段可行時),該片段會被BDS自動調用(invoke)。

這種方法的進一步應用允許我們使用BDS通過條件化評分邏輯來選擇上下文相應的運動行為,就像我們對戰鬥能力一樣。 DA:I 如果當事人在戰鬥中,或者如果玩家指揮一名盟友留在某個地點,我會使用這種方法對追隨者的行為進行修改;這些有條件地評估比基本隊伍更高的優先級,同時仍然屈服於積極的行動。

創建有條件地表現出極高優先級的行為片段也是有用的,因為這將抑制可能存在的任何其他行為的執行。 DA:I 對預期會留在某個 “繫留” 區域內的角色使用此方法。對於這些角色,我們創建了一個行為片段,其執行樹只是強制AI角色返回其指定區域的中心。相應的評估樹返回的分數高於任何其他戰鬥能力 - 但僅當角色位於其指定區域之外時。通過這種方式,我們確保如果人工智能角色偏離其指定位置太遠,他們將始終脫離當前目標並返回,而不是讓自己越跑越遠。

31.7模塊化和重用機會

通過使用行為片段,BDS強調了AI設計的模塊化方法。模塊化方法提供了多種好處。在調試時,它允許開發人員輕鬆地隔離特定行為的評估邏輯,或通過檢查評估步驟的結果來比較AI角色的相對優先級。

模塊化設計還允許在AI角色和原型之間輕鬆共享或移動行為。 DA:I 利用此功能允許人類玩家定制他們的AI控制的盟友。在整個遊戲中,玩家可以添加,刪除和修改AI角色的裝備和能力。通過將行為片段與設備和能力資產聯繫起來,並遵循一致的評分系統(如第31.4.1節所述),我們可以確保AI角色能夠有效地使用他們的命令下的設備和能力 - 無論這可能是什麼。

雖然模塊化的願望最初是由我們的AI控制盟友的要求驅動的,但其好處也擴展到敵對的AI角色。在我們的敵對生物派系的發展過程中,我們發現,為特定人工智能角色類型開發的能力或行為可以很容易地與他人共享,假設相關資產(例如,動畫和視覺效果)也可用於新的角色。
為了支持BDS的模塊化設計,實現評估和執行樹數據結構非常重要,這樣它們可以創作一次並在多個行為片段中重複使用。在開發DA:I 中,我們發現大多數行為片段可以使用一小部分經常重用的樹資產來實現,而只有少數複雜的操作需要特定的評估或執行邏輯。通過將通常重複的子樹分離成獨立的樹資產,然後可以從其他樹引用,可以進一步促進模塊化分解和內容重用。以這種方式整合評分邏輯有助於降低實施標準化評分系統的持續維護成本。



31.8結論

在本章中,我們介紹了行為決策系統:一個簡單但功能強大的框架,用於支持AI決策。 BDS的核心是“行為片段” - 數據結構,它封裝了評估和執行離散動作所需的信息。使用行為樹評估和執行片段; “評估樹”是修改後的行為樹,它返回效用分數和目標,而執行樹包含執行操作的必要指令。

在運行時,行為片段可以通過BDS註冊到AI角色,每個註冊的片段代表角色可以執行的單個動作。通過將這些片段作為角色更新循環的一部分進行評估並定期執行產生最大效用分數的片段,BDS會生成有針對性,有目的性和反應性的行為模式。



致謝

作者要感謝Darren Ward實施了BDS所基於的行為樹系統,以及Jenny Lee和Chris Dalton,他們將Darren的系統改編為Frostbite寒霜引擎。

References

Graham, D. 2014. An introduction to utility theory. In Game AI Pro: Collected Wisdom of Game AI Professionals, ed. S. Rabin. Boca Raton, FL: CRC Press, pp. 113–126.

Merrill, B. 2014. Building utility decisions into your existing behavior tree. In Game AI Pro: Collected Wisdom of Game AI Professionals, ed. S. Rabin. Boca Raton, FL: CRC Press, pp. 127–13

延伸參考  https://www.gdcvault.com/play/1012410/Improving-AI-Decision-Modeling-Through
GDC2010演講


引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4469966
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

2喜歡★stormcorn 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:Attack of Th... 後一篇:2019前半年在資策會u...

追蹤私訊切換新版閱覽

作品資料夾

colanncolann
【繪圖創作】【科嵐工作室】11週年! 2024/4/1 https://home.gamer.com.tw/creationDetail.php?sn=5909405看更多我要大聲說4小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】