关于有限状态机和游戏中角色和复杂物件的思考

有限状态机的定义这里不再多说,参见:

http://baike.baidu.com/view/1270724.htm

我想着重记一点FSM作为游戏管理核心可能带来的好处。

 

引入

众所周知在事件驱动的地方使用脚本是最合适的扩展方式,比如RPG游戏和RTS游戏。但在ACT和FTG游戏中如果要描述一个有很多种动作的角色,简单的脚本语言就略显不足了。

这里FSM就可以发挥它的优势了,状态集来容纳一组同构的复杂数据,转换规则来定义物体对游戏世界的响应,即状态改变。从最早的初始状态到最后的若干可能的终结状态,只要这个物体存在,必然是处于某一状态之中。状态转换函数可以用二维表的形式储存在文件或者数据库中,对开发角色编辑器也提供了很大的方便。

如果有足够的时间,我们甚至可以使用GUI开发出直观的在窗口上拖放状态,链接转换指令和条件,非常直观的完成角色设计。指令(比如一个必杀的搓招指令)和外界事件(比如从空中落地的瞬间)实际上都是状态机的转换条件(trigger) 二者对于FSM是没有区别的,只是来源不同。

 

一个典型的实例M.U.G.E.N引擎从提供的界面上来看完全是基于FSM的思想设计的,一切的物件都是一组状态,包括物件的物理属性也都直接隶属于状态。当然这个古老的东西还是有很多看起来不那么合理优雅的地方,比如没有命名只有数字序号的状态让制作角色的时候阅读起来非常不便,经常要翻来覆去查找序号的意义。但是它整体的设计思路是十分清晰的:物理规则首先决定物体的运动,状态机通过在进出状态时改变物理属性来作用于角色或者物件,最终构成看起来一致也受控的世界体系。比如A击打B使得B受到击打trigger,转变为飞出状态。根据A的击打力度和角度,可以给B一个初速度,B在飞出状态时受控标志为关状态(被打飞了还能随便按一下方向站住?那就太假了吧)一直到落地,落地状态在时间到了的trigger影响下,角色跳起,恢复受控状态。这里飞出到落地的过程中FSM是不动的,完全是物理规则在起效,这进一步印证了FSM基于物理规则,通过改变物理属性的方式对角色施加影响的运作模式。

本文仅仅作整理思路,备忘之用,随项目进展会进一步配图配例完善。

以上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fancybit

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值