所以我试图用C ++制作游戏,我在CSSRule.cssText
API和Finite State Machines (FSM)上阅读了大量文章。但是我会承认我读过的大部分内容都有点密集且难以理解,所以我希望有人可以为我简化它。 Hierarchical State Machines (HSM)
从我想澄清的内容:
HSM与普通FSM有何不同,为什么游戏会更好?
关于C ++,如何在状态模式之后实现基本HSM? (我可能在这个/使用错误的单词时不正确。)
你究竟如何处理过渡?什么是on_exit和on_enter方法我一直听到很多?
我的整场比赛需要一个HSM吗? (例如处理所有敌人,玩家行动,游戏菜单)还是使用多个HSM?
实施玩家实体时,它们是否都是实体状态的子集?
- 醇>
最后,如果有人可以提供一些伪代码来帮助查看这些问题,我将不胜感激。
答案 0 :(得分:3)
这只是关于筑巢。 HSM基本上是一个FSM,但每个状态又可以是一个单独的FSM。
对于游戏中的示例,请考虑使用NPC。它有多种状态:
这个FSM很简单,但是当NPC被PC攻击时,所有州都需要转换到状态6(与PC战斗)。这使得FSM变得丑陋。因此,让这个更简单的FSM:
这个FSM非常简单,只有两个过渡,而且很容易理解。然后,状态1的主要部分是次要FSM:
如果某个事件与辅助FSM转换不匹配(如PC攻击),则会升级到顶级FSM以匹配该事件并找到合适的转换。
您可以在某种程度上将其视为一个堆栈,更高级别的每个州都可以推动一个新的低层FSM。如果有一个偶数与任何可能的转换都不匹配,则弹出堆栈并返回一个级别。继续,直到有匹配的过渡。
简而言之,这是一种简化FSM的方法。