日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

FSM(状态机)、HFSM(分层状态机)、BT(行为树)的区别

發布時間:2025/3/21 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FSM(状态机)、HFSM(分层状态机)、BT(行为树)的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

游戲人工智能AI中最常聽見的就是這三個詞拉:

?

FSM

這個不用說拉,百度一大堆解釋,

簡單將就是將游戲AI行為分為一個一個的狀態,狀態與狀態之間的過渡通過事件的觸發來形成。

比如士兵的行為有“巡邏”,“追擊敵人”,“攻擊敵人”,“逃跑”等行為,

響應的事件就有“發現敵人”,“追到敵人”,“敵人逃跑”,“敵人死亡”,“自己血量不足”等。

那么可以寫成這樣一個狀態機:

1.士兵 “巡邏”,如果 “發現敵人”,那么,“追擊敵人

2.士兵 “追擊敵人”, 如果 “追到敵人”, 那么,“攻擊敵人

3.士兵 “追擊敵人”, 如果 “敵人死亡”, 那么,繼續 “巡邏

4.士兵 “攻擊敵人”, 如果 “敵人死亡”, 那么,繼續 “巡邏

5.士兵 “攻擊敵人”, 如果 “血量不足”, 那么,“逃跑

其中,士兵就是這個FSM的執行者,紅色的就是狀態,藍色的就是事件

整個狀態機的行為可以總結為:

當前狀態=>是否滿足條件1,如果是,則跳轉到對應狀態

  否則=>是否滿足條件2,如果是,則跳轉到對應狀態

由此可看出,狀態機是一種“事件觸發型”AI,就是只有事件的觸發才會發生引起狀態的變化。

?

HFSM

簡單來說,就是FSM當狀態太多的時候,不好維護,于是將狀態分類,抽離出來,將同類型的

狀態做為一個狀態機,然后再做一個大的狀態機,來維護這些子狀態機

舉個決策小狗行為的例子:

我們對小狗定義了有很多行為,比如跑,吃飯,睡覺,咆哮,撒嬌,搖尾巴等等,如果每個行為都是一個狀態,

用常規狀態機的話,我們就需要在這些狀態間定義跳轉,比如在“跑”的狀態下,如果累了,那就跳轉到“睡覺”狀態,

再如,在“撒嬌”的狀態下,如果感到有威脅,那就跳轉到“咆哮”的狀態等等,我們會考量每一個狀態間的關系,定

義所有的跳轉鏈接,建立這樣一個狀態機。如果用層次化的狀態機的話,我們就先會把這些行為“分類”,把幾個小狀

態歸并到一個狀態里,然后再定義高層狀態和高層狀態中內部小狀態的跳轉鏈接。

?

其實層次化狀態機從某種程度上,就是限制了狀態機的跳轉,而且狀態內的狀態是不需要關心外部狀態的跳轉的,

這樣也做到了無關狀態間的隔離,比如對于小狗來說,我們可以把小狗的狀態先定義為疲勞,開心,憤怒,然后這些

狀態里再定義小狀態比如在開心的狀態中,有撒橋,搖尾巴等小狀態,這樣我們在外部只需要關心三個狀態的跳

轉(疲勞,開心,憤怒),在每個狀態的內部只需要關心自己的小狀態的跳轉就可以了。這樣就大大的降低了狀態機的復雜度,

另外,如果覺得兩層的狀態機還是狀態太多的話,可以定義更多的狀態層次以降低跳轉鏈接數。

?

(摘自此文章)

?

?

?

?

Behavir Tree

有空再更新,先看之前的文章:http://www.cnblogs.com/jeason1997/p/4803243.html

?

行為樹與FSM不同,它是一種“輪詢式機制”,即每次更新都會遍歷樹,判定邏輯是否成立,是否該繼續往下執行。

總結

以上是生活随笔為你收集整理的FSM(状态机)、HFSM(分层状态机)、BT(行为树)的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。