[游戏开发]角色状态机

     最近在重构客户端的时候,把角色行为控制由并行状态机重新改为最简单的状态机,还是觉得并行太复杂了。
    先介绍下并行状态机, 然后说明并行的缺点。
    1. 在《大型多人在线游戏开发》一书中详细介绍了并行状态机:”使用并行状态机来创建可信的角色“。 大致可用下面两张图描述。

     图一、

    
    图二、

   

    2. 并行看上去很好,但我实际应用下来也有几个问题:
        a. 并行不好调试,如果各层之间的状态切换会有意想不到的bug;
        b.”跨层阻止“之后,”状态切换“跟”状态Unblock“有先后顺序问题。比如
                 CurrentMoveState.UnBlock;
                 SetPoseState(RunState);
                 这两句话如果先后次序换下,结果完全不一样。这就要求编码的时候要非常小心,但这点会把人弄晕:(
        c. 不好做日志,万一程序出错,很难根据上下文分析错误原因。

    不用并行,采用单一状态控制角色行为,编码比较简单、容易调试跟踪、日志可分析,但问题就是状态会非常多(主要是组合引起的),比如说有RunState、WalkState,如果这时候来一个新的AttackState,那么多出RunAttackState、WalkAttackState。


 

转载于:https://www.cnblogs.com/winsonchen/archive/2008/09/21/1295520.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值