MMORPG战斗系统随笔(一)、战斗系统流程简介

MMORPG战⽃系统随笔(⼀)、战⽃系统流程简介
前⾔
  很久没有更新博客,中间迁移过⼀次博客,后来⼀直忙于项⽬的开发,忙的晚上回去没时间写博客,周⽇⼜要⾃我调整⼀下,所以空闲了很久没有继续写博客。最近终于慢慢放慢节奏,项⽬也快上线了,可以有空写⼀些个⼈的笔记。准备写⼀个战⽃系统的⼊门笔记,也算⼀个⾃我总结和反思的过程,中间有些地⽅是个⼈的⼀些想法和理解,如果有什么不正确的,欢迎⼤家留⾔讨论。
  通常,我们在玩⼀款游戏的时候,最直接⾯对的玩法,就是这款游戏的战⽃系统。由于游戏的分类实在太多,对应的战⽃玩法也各有其特⾊。⽽我⽬前参与研发的游戏,主要是RTS游戏和MMORPG游戏两种类型,所以我的随笔就记录⼀下MMORPG游戏的战⽃系统的⼀下设计笔记。网眼面料
2016年属于MMORPG爆发的⼀年,多款MMO⼿游均取得不错的运营业绩,2017,依然属于主流的⼿游研发类型。在MMORPG游戏中,⽬前主流的战⽃系统可以分为2类:回合制战⽃和即时制战⽃。回合制游戏的代表,《梦幻西游》,堪称经典,⽹易对于这款端游转⼿游的游戏也是⽤⼼研发和运营。即时制战⽃的代表,《剑侠》,《齐天⼤圣》,资料⽚流出的《剑⽹三⼿游》等,都有不错的即时制战⽃体验。
  虽然很多⼈对于MMO游戏的理解,主要在系统玩法和社交体验上,⼤部分玩家进游戏后的战⽃都是开启⾃动挂机的战⽃,相对于MOBA游戏,不注重战⽃体验。不过剥离出游戏的类型,整个游戏的战⽃系统其实属于⼀个相对独⽴的模块,⽽且是整个游戏的核⼼部分,所以掌握理解了战⽃系统,对于⼤部分的游戏可以有⼀个相对深⼊的理解。本⽂就从⼀个⼩⽩的⾓度去理解隐藏在背后的即时制战⽃系统是如何执⾏的。
  战⽃系统的组成
从⼩⽩的⾓度理解,战⽃系统,可以分为:按键响应,技能获取,寻敌检测,技能释放,伤害计算,战⽃表现,总共6个⼤的部分,下⾯我逐个分析其中的⼀些执⾏逻辑。
⼀、按键响应
  在进⼊游戏后,在游戏的界⾯上,可以看到⼀个左侧的摇杆,右侧都会有⼀个当前职业的技能控制按钮。这在MMORPG和MOBA游戏中,属于⽐较常见的设计。我们在操作游戏⾓⾊进⾏战⽃的时候,可以点击右侧的技能按钮,从⽽释放技能进⾏战⽃。从技能按钮点击,到执⾏战⽃,第⼀步就是按钮响应。
在玩家进⼊游戏后,就会在游戏模块中打开当前⾓⾊对应的技能界⾯,同时对玩家的点击按钮添加⼀
激光熔覆工艺个事件监听。如果你对事件监听不是很了解,直⽩的说,就是A添加⼀个attention,该attention是关注B是否发⽣,当B发⽣的时候,B⼴播其发⽣,这时候A接收到B发⽣了,则执⾏B发⽣时A应该执⾏的⼀些操作。这样的⼀个直⽩解释,就是常见的监听系统的设计过程。这样当玩家点击技能按钮X的时候,技能界⾯会读取其对应的技能指代,然后将其⼴播出去。在前⾯监听的部分,在收到该事件后,就会执⾏技能获取操作,从⽽传递到后⾯的部分。
⼆、技能获取
  现在执⾏到第⼆步,这时候已经知道玩家点击了某个对应的技能,但是具体是什么技能,还需要进⾏⼀系列的操作才能获取到。⾸先,游戏中,会有不同的职业,不同的职业会有不同的技能配置。所以⾸先是需要到当前职业对应的技能。怎么获取呢?在MMORPG游戏中,对于不同的职业,会开发对应的技能组件SkillCpnt。在每个职业⾓⾊的实例上,挂载⼀个技能释放器SkillCaster。这个技能释放器SkillCaster,就是⽤来执⾏技能的读取和释放的主要⾓⾊。那么它在响应技能按钮点击后,会获取当前玩家具体的技能组件SkillCpnt,在当前技能组件SkillCpnt中,获取当前技能对应的技能配置。通常,⼀个技能按钮,会对应的配置⼀个或者多个技能,这时候需要检测技能的对应释放顺序,同时需要检测当前技能的CD和消耗等。在获取到可以释放的技能后,接下来就需要进⾏技能的释放了。技能释放的第⼀步,就是寻攻击⽬标。
头笼三、寻敌检测
电磁悬浮
pvc面膜  在读取到技能后,接下来就是要到可以攻击的⽬标。⾸先,会获取当前技能范围内的所有⽬标,然后进⾏检测。⾸先,检测其是否有效,然后检测是否属于当前技能攻击的类型(⽐如有的技能打⼈,有的技能打建筑),然后判断是否是敌⼈类型(不同玩法对于敌⼈类型的判断不⼀致,需要具体设计),是否在攻击范围内,在这个检测中,通常策划会进⾏⼀系列规则扩展,最后得到是⼀个繁琐的检测过程。对于这样的扩展,程序只能尽量保证扩展性和鲁棒性,同时对于某些特定的检测,尽量写⼊特定的玩法,避免影响公共检测的性能。
  在这⼉,需要补充⼀下,对于游戏中的⾓⾊,主要分为两类:玩家和怪物。所以,对于这两类⾓⾊的技能检测,可以分为两种不同的⽅式进⾏检测的,这样可以尽量保证各⾃的规则设计,避免耦合和繁琐。
四、技能释放
  相对于前⾯三步操作,技能释放的流程就⽐较简单,在完成寻敌检测后,此时已经知道当前主⾓要⽤什么技能,对着什么⽬标进⾏释放了,所以通过技能释放协议,将相关的信息传递到服务器,服务器会收到当前释放技能的请求,然后进⾏技能校验,主要是检验技能是否处于CD,技能消耗是否⾜够,攻击对象是否有效等检测,如果通过,则下发给客户端做技能表现。同乘为了提⾼⽤户体验,在本地玩家⾃⾝的客户端,其释放的技能,是先做技能释放,同时传递给服务器技能释放的请求,如果
通过则直接继续,如果不通过,则打断播出的技能动作。这样的设计流程,是为了避免在⽹络不好时,技能响应过程太慢,玩家点击时没有及时的响应,⽤户体验太差。
五、伤害计算
  伤害计算的过程,属于偏向数学计算的过程,如果从⼩⽩的⾓度理解,其基本的流程可以分为:技能更新,伤害寻敌,伤害计算,伤害结果这4个步骤。⾸先是技能更新,在打出当前技能后,并不是⽴即⽣效的,在配合着动画和特效,会有⼀个更新时间间隔,当更新完后,
就会进⾏伤害检测(通常这个过程称为⼦物体更新的过程)。完成⼦物体的更新后,接着就是伤害计算,⾸先需要根据规则到当前⼦物体周围配置范围内的物体,做⼀次寻敌检测。这个检测的过程,其实就是我们常见的技能特效模型检测,⽐如直线检测,圆弧检测,圆形检测,矩形检测,这四种基本最常见的检测。通过这四种对应的检测可以获得⼀个可以攻击的⽬标对象列表,然后逐个计算其对应的伤害。具体的伤害计算,需要根据数值的伤害计算公式,读取攻击者和被攻击者的相关属性完成对应的伤害值计算。在得到⼀个伤害结果后,就会进⾏扣⾎的操作,然后下发相应的数据结果给客户端。
六、战⽃表现
  最后的战⽃表现,是⼀个归纳的过程,包括技能释放⾓⾊的战⽃动作和特效,被攻击者的战⽃动作和特效,已经相应的UI数据展⽰等。这样的战⽃表现,都可以⽤对应的技能控制器来实现,特定的技能控制器,在设置后会进⾏⾃更新,然后触发对应的动作播放,在动作播放中会触发播放对应的特效。基于这样的基本设计,就可以实现整个战⽃的动作和特效播放。
  写到这⼉,我⼜要再现我的灵魂画法了,将整个过程归纳为⼀个草图,哈哈:
  好了,对于整个战⽃流程,从⼩⽩的⾓度做了⼀个⼤概的讲解,后续我会接着做⼀些战⽃系统相关的⽂章分析,⽐如寻路,⾏为
植物抗体
树,AI,组件设计等,下篇⽂章见~

本文发布于:2024-09-23 22:38:30,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/149517.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:技能   检测   游戏   对应   释放
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议