簡體   English   中英

分層狀態機涉及的原理是什么,以及如何實現基本模型?

[英]What are the principles involved for an Hierarchical State Machine, and how to implement a basic model?

所以我試圖用C ++制作游戲,我讀過很多關於有限狀態機(FSM)分層狀態機(HSM)的文章 但是我會承認我讀過的大部分內容都有點密集且難以理解,所以我希望有人可以為我簡化它。 這個答案是FSM還是HSM?

從我想要澄清的內容:

  1. HSM與普通FSM有何不同,為什么游戲更好?

  2. 關於C ++,如何在狀態模式之后實現基本HSM? (我可能不正確/使用錯誤的單詞。)

  3. 你究竟如何處理過渡? 什么是on_exit和on_enter方法我一直聽到很多?

  4. 我的整場比賽需要一個HSM嗎? (例如處理所有敵人,玩家行動,游戲菜單)還是使用多個HSM?

  5. 在實現玩家實體時,它們都是實體狀態的子集嗎?

  6. 最后,如果有人可以提供一些偽代碼來幫助可視化這些問題,我將不勝感激。

這只是關於築巢。 HSM基本上是FSM,但每個狀態又可以是單獨的FSM。

對於游戲中的示例,請考慮使用NPC。 它有多種狀態:

  1. 走到A點
  2. 等一下
  3. 走到B點
  4. 等一下
  5. 從1繼續
  6. 與PC戰斗

這個FSM很簡單,但是當NPC被PC攻擊時,所有狀態都需要轉換到狀態6(與PC戰斗)。 這使得FSM變得丑陋。 因此,與其讓這個更簡單的FSM:

  1. 走來走去
  2. 與PC戰斗

這個FSM很簡單,只有兩個過渡,而且很容易理解。 然后,狀態1的主要部分是次要FSM:

  1. 走到A點
  2. 等一下
  3. 走到B點
  4. 等一下

如果存在與輔助FSM轉換不匹配的事件(如PC攻擊),則向上升級到頂級FSM以匹配事件並找到合適的轉換。

您可以在某種程度上將其視為堆棧,更高級別的每個州都可以推動新的低級別FSM。 如果有一個偶數與任何可能的轉換都不匹配,則彈出堆棧並返回一個級別。 繼續,直到有匹配的過渡。

簡而言之,這是一種簡化FSM的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM