怪物ai與行為樹設計
這裡我們簡單的梳理一下:ai表示的是人工智慧,就是用程式邏輯模擬人的行為。而行為樹是一種程式實現ai的一種方法,策劃可以用行為樹的方式進行ai設計,也可以採用比較常規的狀態機機制進行設計。
不管用什麼方式進行設計。
策劃本質上要設計的是怪物行為,這些怪物行為能夠針對周圍的環境和玩家行為作出反饋。因此在進行怪物ai設計的時候,最本質的表達就是:
怪物有哪些行為?
行為有哪些前置條件?
舉個例子
移動邏輯:
- 當警戒範圍內沒有敵方單位時:巡邏
- 當警戒範圍內出現敵方單位時: 向敵人移動。
- 當怪物生命值低於500時:逃跑
攻擊邏輯:
- 當角色進入攻擊範圍進行攻擊。
- 當怪物血量低於1000時進行瘋狂攻擊攻擊。
- 當怪物血量高於或等於1000時進行瘋狂攻擊。
很明顯可以看出,上面的這種描述大致描述了這個單位的一些ai特徵,然後我們就可以利用程式中思想來描述我們所要表達的怪物ai,從而補充我們所思考的一些漏洞。在做這個工作之前,我們先抽象怪物有哪些前置條件和行為。
上面我們提到了警戒卻沒有用戰鬥狀態這個元素。選擇攻擊目標也沒有提到大家熟悉的威脅值這個元素。因為我們的ai需求裡面不需要這樣的元素來進行更復雜的邏輯判斷。因此在抽象前置條件時,並不是把我們印象中知道的一些元素塞進來,而是根據需要制定相關的元素來滿足我們所需要的設定目標。
因此我們得到了我們將這些前置條件和行為進行邏輯整理,就得到了如下的mind圖:
上圖中因為沒有特殊的移動,因此把移動的執行省略了。
我們可以看到每個特定的條件都能執行到一個確定的行為結果。這是一個非常簡單的ai例子,實際運用過程中的ai行為會因為陣營,技能,地形等因素有許多複雜的判斷。如果按上面的腦圖方法進行程式設計時,可能引入的是一種“狀態機”的機制,就是每間隔一段時間檢查一下當前的狀態,當狀態發生改變時,執行接下來的行為,並且執行後改變狀態。
狀態態機可歸納為4個要素,即現態、條件、動作、次態。這樣的歸納,主要是出於對狀態機的內在因果關係的考慮。“現態”和“條件”是因,“動作”和“次態”是果。詳解如下:
現態:是指當前所處的狀態。
條件:又稱為“事件”,當一個條件被滿足,將會觸發一個動作,或者執行一次狀態的遷移。
動作:條件滿足後執行的動作。動作執行完畢後,可以遷移到新的狀態,也可以仍舊保持原狀態。動作不是必需的,當條件滿足後,也可以不執行任何動作,直接遷移到新狀態。
次態:條件滿足後要遷往的新狀態。“次態”是相對於“現態”而言的,“次態”一旦被啟用,就轉變成新的“現態”了。
這種方式下當元素判斷過於龐大,多個物件同時存在時,無論是這種方式的設計還是對程式邏輯的執行起來了巨大的障礙,為了解決這一障礙於是就提出了行為樹的概念,行為樹(BehaviorTree)是Next-Gen AI提出的一個原型。
它以圖形的形式展現了AI系統的結構,將上述的流程圖整理之後於是得到如下的圖形:
1)順序節點(Sequence):順序執行子節點,只要它的一個子節點返回false,則整個分支返回false,反之返回true,類似程式中的邏輯與(AND)。
2)選擇節點(Selector): 順序執行子節點,只要它的一個子節點返回true,則整個分支返回true,反之返回false,類似程式中的邏輯或(OR)。
3)條件節點(Condition): 屬於葉子節點(該種節點不允許有任何子節點),用於描述一個條件是否成立。
4)行為節點(Action) : 屬於葉子節點(該種節點不允許有任何子節點),用於描述一個最終執行的動作,一般返回true。
假設當前怪物的生命值為450,警戒範圍內有敵軍,滿足逃跑條件。怪物要執行逃跑行為,首先判斷所有的條件:
- 警戒範圍內是否有敵軍,是為true,否為false
- 自身生命值是否高於或等於500,是為true,否為false
- 自身生命值是否高於或等於1000,是為true,否為false
- 自身是否正在遭受攻擊,是為true,否為false
根據行為樹的執行規則,則得到逃跑的結果。
從上面的表述我們可以看到,用“狀態機”的機制我們可以更加直觀的看到怪物在什麼條件下執行出什麼行為,但是在判斷條件非常多的時候,會產生許多的狀態跳轉關係,維護成本會比較大,程式執行效率也會相對比較低。而用行為樹的機制,我們比較難直接的看出怪物的具體行為,但是在維護成本和執行效率方面會得到較大的提高。
因此,在設計規模不是特別龐大,修改次數比較少的ai型別時,用一般的狀態機機制即可滿足條件,而在設計複雜,經常需要調整維護的ai時,儘可能的使用行為樹機制。至於策劃是使用行為樹機制還是狀態機機制,個人建議還是從狀態機機制入手,對怪物的行為設定有了足夠的瞭解之後,在設計複雜的ai時慢慢轉向行為樹機制。
但是不管用什麼方式,作為策劃最首先要考慮到的是我們究竟要什麼樣的結果,這些設定能帶來什麼樣的體驗。因此作為怪物ai設計,我們要考慮到的是我們所要的玩法需要什麼樣的怪物行為和前置條件進行支撐,然後再利用狀態機機制或是行為樹機制進行細節的邏輯漏洞補充和方便程式進行實現。
來源:遊戲魂
原地址:https://mp.weixin.qq.com/s/D_g2bviTxHx1bbhiYjF7kg
相關文章
- AI 行為樹的工作原理AI
- 遊戲AI之決策結構—行為樹遊戲AI
- AI模組(有限狀態機、行為樹)-應用在cocos中AI
- 設計模式-行為型設計模式
- 行為型設計模式設計模式
- 超自然開放世界設計:怪物、場景和遊戲體驗遊戲
- (Java)設計模式:行為型Java設計模式
- 線上消費行為統計與分析系統設計和實現
- 淺談《怪物獵人:世界》中不同武器中的相似設計思路
- 你的程式設計師是一種什麼樣的怪物?程式設計師
- 遊戲開發中怪物AI實現方案總結!遊戲開發AI
- PHP行為型設計模式(四)PHP設計模式
- PHP行為型設計模式(三)PHP設計模式
- PHP 行為型設計模式(二)PHP設計模式
- PHP 行為型設計模式(一)PHP設計模式
- 聊一聊設計模式(四)-- 行為型設計模式設計模式
- AI作畫—如何快速進行遊戲人物設計AI遊戲
- 【行行AI直播】AI賦能千行百業:設計行業的無限可能AI行業
- 老樹常青!SQL為何成為程式設計界的不敗傳奇?SQL程式設計
- 從《英雄聯盟》的裝備系統談玩家行為與遊戲設計遊戲設計
- 大話 PHP 設計模式--行為型PHP設計模式
- 物件導向-設計模式-行為型物件設計模式
- 設計模式-行為篇(迭代器模式)設計模式
- 設計模式--策略模式Strategy(行為型)設計模式
- 谷歌用AI設計AI晶片,縮短設計週期谷歌AI晶片
- 樹形結構的選單表設計與查詢
- 【人工智慧】普通程式設計師想投身 AI 行業的機遇與挑戰人工智慧程式設計師AI行業
- [技術討論]遊戲AI設計與機器智慧遊戲AI
- 行為設計—策略設計模式詳解——小馬同學@Tian設計模式
- Hadoop專案實戰-使用者行為分析之分析與設計Hadoop
- 遊戲機制設計:資源管理挑戰與遊戲中的AI設計遊戲AI
- 設計模式之中介者模式(行為型)設計模式
- 設計模式-行為型模式-中介者模式設計模式
- 設計模式--命令模式Command(行為型)設計模式
- 設計模式--狀態模式State(行為型)設計模式
- 設計模式--迭代器模式Iterator(行為型)設計模式
- 設計模式--中介者模式Mediator(行為型)設計模式
- JavaScript設計模式--行為型別--命令模式JavaScript設計模式型別