战斗系统 内容

战斗系统,可以分为:按键响应,技能获取,寻敌检测,技能释放,伤害计算,战斗表现,总共6个大的部分,下面我逐个分析其中的一些执行逻辑。

 

一、按键响应

  在进入游戏后,在游戏的界面上,可以看到一个左侧的摇杆,右侧都会有一个当前职业的技能控制按钮。这在MMORPG和MOBA游戏中,属于比较常见的设计。我们在操作游戏角色进行战斗的时候,可以点击右侧的技能按钮,从而释放技能进行战斗。从技能按钮点击,到执行战斗,第一步就是按钮响应。

       在玩家进入游戏后,就会在游戏模块中打开当前角色对应的技能界面,同时对玩家的点击按钮添加一个事件监听。如果你对事件监听不是很了解,直白的说,就是A添加一个attention,该attention是关注B是否发生,当B发生的时候,B广播其发生,这时候A接收到B发生了,则执行B发生时A应该执行的一些操作。这样的一个直白解释,就是常见的监听系统的设计过程。这样当玩家点击技能按钮X的时候,技能界面会读取其对应的技能指代,然后将其广播出去。在前面监听的部分,在收到该事件后,就会执行技能获取操作,从而传递到后面的部分。

二、技能获取

  现在执行到第二步,这时候已经知道玩家点击了某个对应的技能,但是具体是什么技能,还需要进行一系列的操作才能获取到。首先,游戏中,会有不同的职业,不同的职业会有不同的技能配置。所以首先是需要找到当前职业对应的技能。怎么获取呢?在MMORPG游戏中,对于不同的职业,会开发对应的技能组件SkillCpnt。在每个职业角色的实例上,挂载一个技能释放器SkillCaster。这个技能释放器SkillCaster,就是用来执行技能的读取和释放的主要角色。那么它在响应技能按钮点击后,会获取当前玩家具体的技能组件SkillCpnt, 在当前技能组件SkillCpnt中,获取当前技能对应的技能配置。通常,一个技能按钮,会对应的配置一个或者多个技能,这时候需要检测技能的对应释放顺序,同时需要检测当前技能的CD和消耗等。在获取到可以释放的技能后,接下来就需要进行技能的释放了。技能释放的第一步,就是寻找攻击目标。

三、寻敌检测

   在读取到技能后,接下来就是要找到可以攻击的目标。首先,会获取当前技能范围内的所有目标,然后进行检测。首先,检测其是否有效,然后检测是否属于当前技能攻击的类型(比如有的技能打人,有的技能打建筑),然后判断是否是敌人类型(不同玩法对于敌人类型的判断不一致,需要具体设计),是否在攻击范围内,在这个检测中,通常策划会进行一系列规则扩展,最后得到是一个繁琐的检测过程。对于这样的扩展,程序只能尽量保证扩展性和鲁棒性,同时对于某些特定的检测,尽量写入特定的玩法,避免影响公共检测的性能。

  在这儿,需要补充一下,对于游戏中的角色,主要分为两类:玩家和怪物。所以,对于这两类角色的技能检测,可以分为两种不同的方式进行检测的,这样可以尽量保证各自的规则设计,避免耦合和繁琐。

四、技能释放

   相对于前面三步操作,技能释放的流程就比较简单,在完成寻敌检测后,此时已经知道当前主角要用什么技能,对着什么目标进行释放了,所以通过技能释放协议,将相关的信息传递到服务器,服务器会收到当前释放技能的请求,然后进行技能校验,主要是检验技能是否处于CD,技能消耗是否足够,攻击对象是否有效等检测,如果通过,则下发给客户端做技能表现。同乘为了提高用户体验,在本地玩家自身的客户端,其释放的技能,是先做技能释放,同时传递给服务器技能释放的请求,如果通过则直接继续,如果不通过,则打断播出的技能动作。这样的设计流程,是为了避免在网络不好时,技能响应过程太慢,玩家点击时没有及时的响应,用户体验太差。

五、伤害计算

  伤害计算的过程,属于偏向数学计算的过程,如果从小白的角度理解,其基本的流程可以分为:技能更新,伤害寻敌,伤害计算,伤害结果这4个步骤。首先是技能更新,在打出当前技能后,并不是立即生效的,在配合着动画和特效,会有一个更新时间间隔,当更新完后,就会进行伤害检测(通常这个过程称为子物体更新的过程)。完成子物体的更新后,接着就是伤害计算,首先需要根据规则找到当前子物体周围配置范围内的物体,做一次寻敌检测。这个检测的过程,其实就是我们常见的技能特效模型检测,比如直线检测,圆弧检测,圆形检测,矩形检测,这四种基本最常见的检测。通过这四种对应的检测可以获得一个可以攻击的目标对象列表,然后逐个计算其对应的伤害。具体的伤害计算,需要根据数值的伤害计算公式,读取攻击者和被攻击者的相关属性完成对应的伤害值计算。在得到一个伤害结果后,就会进行扣血的操作,然后下发相应的数据结果给客户端。

六、战斗表现

  最后的战斗表现,是一个归纳的过程,包括技能释放角色的战斗动作和特效,被攻击者的战斗动作和特效,已经相应的UI数据展示等。这样的战斗表现,都可以用对应的技能控制器来实现,特定的技能控制器,在设置后会进行自更新,然后触发对应的动作播放,在动作播放中会触发播放对应的特效。基于这样的基本设计,就可以实现整个战斗的动作和特效播放。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值