因此,我尝试使用C++进行游戏,并且阅读了很多关于Finite State Machines (FSM)和Hierarchical State Machines (HSM)的文章。但是,我将承认我阅读的大多数内容都有些密集且难以理解,因此我希望有人可以为我简化它。 Is this answer an FSM or an HSM?
根据我想清除的内容:
最佳答案
这只是关于嵌套。 HSM基本上是FSM,但每个状态又可以是单独的FSM。
例如,以游戏中的NPC为例。它具有多种状态:
这个FSM很简单,但是当NPC受到PC攻击时,所有状态都需要转换到状态6(与PC战斗)。这使FSM有点丑陋。因此,让我们使用更简单的FSM:
这个FSM非常简单,只有两个过渡,而且很容易理解。然后,状态1的主要部分是辅助FSM:
如果发生与辅助FSM过渡不匹配的事件(例如PC攻击),则将您移至顶层FSM以匹配该事件并找到合适的过渡。
您可以将其视为一个堆栈,较高级别的每个状态都可以推送新的较低级别的FSM。如果有一个与任何可能的过渡都不匹配的偶数,则弹出堆栈并返回一个级别。继续直到存在匹配的过渡为止。
简而言之,这是简化FSM的一种方法。
关于c++ - 分层状态机涉及的原理是什么,以及如何实现基本模型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50182913/