[英]What are the principles involved for an Hierarchical State Machine, and how to implement a basic model?
所以我試圖用C ++制作游戲,我讀過很多關於有限狀態機(FSM)和分層狀態機(HSM)的文章 。 但是我會承認我讀過的大部分內容都有點密集且難以理解,所以我希望有人可以為我簡化它。 這個答案是FSM還是HSM?
從我想要澄清的內容:
HSM與普通FSM有何不同,為什么游戲更好?
關於C ++,如何在狀態模式之后實現基本HSM? (我可能不正確/使用錯誤的單詞。)
你究竟如何處理過渡? 什么是on_exit和on_enter方法我一直聽到很多?
我的整場比賽需要一個HSM嗎? (例如處理所有敵人,玩家行動,游戲菜單)還是使用多個HSM?
在實現玩家實體時,它們都是實體狀態的子集嗎?
最后,如果有人可以提供一些偽代碼來幫助可視化這些問題,我將不勝感激。
這只是關於築巢。 HSM基本上是FSM,但每個狀態又可以是單獨的FSM。
對於游戲中的示例,請考慮使用NPC。 它有多種狀態:
這個FSM很簡單,但是當NPC被PC攻擊時,所有狀態都需要轉換到狀態6(與PC戰斗)。 這使得FSM變得丑陋。 因此,與其讓這個更簡單的FSM:
這個FSM很簡單,只有兩個過渡,而且很容易理解。 然后,狀態1的主要部分是次要FSM:
如果存在與輔助FSM轉換不匹配的事件(如PC攻擊),則向上升級到頂級FSM以匹配事件並找到合適的轉換。
您可以在某種程度上將其視為堆棧,更高級別的每個州都可以推動新的低級別FSM。 如果有一個偶數與任何可能的轉換都不匹配,則彈出堆棧並返回一個級別。 繼續,直到有匹配的過渡。
簡而言之,這是一種簡化FSM的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.