技能系统设计思路

上传人:d**** 文档编号:175644909 上传时间:2022-12-20 格式:DOCX 页数:4 大小:10.92KB
返回 下载 相关 举报
技能系统设计思路_第1页
第1页 / 共4页
技能系统设计思路_第2页
第2页 / 共4页
技能系统设计思路_第3页
第3页 / 共4页
点击查看更多>>
资源描述
技能系统如果面试说技能系统的模块,那你就不得不谈技能的设计思路 ,技能 系统因为要考虑到系统中间它的技能是非常丰富的 ,以天龙八部的技 能表为蓝本来设计了自己的技能,对于技能,我们发现有很多的共性数 据,当然也有很多不同的东西,共性的东西就是说所有的技能都有攻击 范围,攻击的群体,持续的时间,伤害的间隔等等,数据是共性的,那么不 同的就是说技能的选区是不同的,有的技能攻击范围是圆形的,有的技 能攻击范围是扇形的,有的技能只对敌人造成伤害,有的技能在对敌人 造成伤害的同时还会有一些特殊的影响 ,比如:眩晕,属性值的变化 ,防 御降低,包括减免,嘲讽,那么这都属于一些特殊效果 ,所以考虑到这些 特殊结构之后 ,会发现:如果我把每个技能都写成一个单独的类 ,这是 一个最简单的办法,但是这会带来一个麻烦,如果它有 30 个技能,我就 得写 30 个类,另外还有一个问题就是如果用户改变了技能,我可能就 要改这个类 ,这就很麻烦 ,而且这张技能表也不能统一的进行配置 ,所 以我并没有采用这种办法 ,采用的办法是:写一套逻辑,来管理所有的 技能.那么这就出现了技能设计的架构,我们把技能中用到的所有的数 据做成一个技能数据类,对于每一个角色所拥有的技能我们做一个技 能管理类,也就是说角色身上携带哪些技能 ,我们就做一个技能管理 , 那么,最终技能的释放我们写了一个很重要的释放器,这是我们整个技 能系统中最核心 .最难的一块,那么释放器里面要做的事情有很多 ,因 为每个技能的选区不同,所以释放器要初始化你的选区,每个技能对自 身,对目标都会有一些相应的影响 ,所以我们要做影响方面的算法 ,为 了能够让技能复用这个释放器 ,释放器可能会有近身释放 ,有远释放 , 有隔空释放 ,有延时释放 ,所以我们也会把释放器做成很多的派生 ,做 成不同的释放器.这就产生了另一块,释放器的架构,对于释放器来讲, 它主要关心的几个内容就是: 一:我们怎么选择敌人, 二:怎么影响自己和影响目标, 对于选区来讲,它有多种选择算法,所以对于一个释放器来讲 ,它可能 最终选择一个,一个技能会相应的配合一个释放器,释放器是可以共用 的,也就是说我一个释放器技能适用于多个对象,那么在释放的过程中, 我们就需要给它配置算法,因为算法在改变,所以我们选择了策略模式, 把这个算法进行提取,把每一种算法都做成相应的策略,然后给释放器 做相应的配置.另一个对目标影响和对自身影响,是采用同样的策略模 式进行的抽象,然后把它每种影响的算法都进行了提取, 提取之后对于一个释放器来讲,我们的选择算法可能只是影响到一种, 只有一种来配置,但是目标影响算法可能需要多个来叠加,就是刚刚所 说的可能会对敌人造成伤害,也可能 对敌人造成眩晕,这样的话就有多个效果产生,那么多个效果产生怎么 办?我们做了一个集合,在释放器里面做了目标影响集合和自身影响 集合,而释放器本身也是有变化的,根据释放器选择近身释放和远程释 放,它的释放流程是不同的,所以我们把释放器也进行了派生 ,派生出 近身,远程和隔空,最后整个释放器这块我们选择的是一个桥接模式, 桥的设计模式来解决两端的不同变化 ,这样写的好处是什么呢 ?好处 就是如果策划跟我们讲 ,我们的选择算法有增加 ,多了一种新的算法, 那么没关系,我加个派生类就可以了 ,如果策划跟我讲,又多了一种新 的特殊效果,那么没关系,我加入一个新的对目标影响和对自身影响的 派生类就可以了,这样对于策划需求的改动 ,我不需要做大量的调整, 只需要增加新的派生类就可以解决,这样就体现了我们在编程中间所 要追求的目标,开闭原则,这就是我们技能系统的设计方案.在技能上面,我们为了技能的使用方便,为技能写了一个技能外观类, 就是在Character里面我们会看到一个CharacterSkillSystem,因为技能 系统是比较复杂的,考虑到技能系统 使用的位置是比较多的,一方面技能系统的使用来自于主角的控制,就 是输入控制的部分,另一方面它的使用可能来自于AI,而且技能系统我 们是可以复用的,主角和小怪都能用, 任何一个角色进来都可以使用技能系统,所以我们为了能够让它使用 起来更方便,而且并不希望客户端知道我们底层技能管理是怎么回事, 技能释放是怎么回事,所以我们在这里 采用了一个外观类,把整个技能系统进行了封装,封装之后提供了一个 非常简单的接口,就是使用技能,在技能系统里面我们提供了一个叫做AttackUseSkill,所以对于客户端来 讲,它只需要知道我需要使用哪个技能 ,是否是连击就可以了 ,这样就 方便了整个技能的使用 ,同时我们再来说一下,技能是有连击的,那么 连击是怎么做的?因为我们当时考虑到连击需要控制,A可能会连击B,B可能会连击C,这是一种固定连法,如 果我在技能上面直接配好ABC,这样的连击就比较死板,我希望连击是 可以让用户进行配置的,所以我们做了一个像链条式的我们数据结构 中的链表结构,前面勾着后面的,后面的再勾着最后,A勾着B,B在勾着 C,C在勾着D,通过这样的一个挂钩之后,我们不用去控制着他的整个技 能链,我们只需要知道A后面是谁就可以了,在做连击的时候,只需要知 道当前技能的下一个技能是什么就可以,这样在技能的搭配上面,在技 能的连击上面,也是非常容易去控制的之后再来说一下我们的输入控 制上面是怎样去做的连击,因为在连击过程中,用户会持续按住按钮, 我们选择使用EasyTacth来做的输入控制,在连击过程中,在1S中之内 可能会触发多次,我们在连击上面做了一个处理,能连击的动画节奏都 差不多,之间相差并不大,所以我们在当时取了一个时间值就是1s,动 画控制在1S之内,如果在1S之内用户连续按下两次键,我们只播放一 次技能动画,在 1S 之后才会处理第二次,这样即使用户按的再快,连击 的节奏是不变的,这就是关于连击的控制.
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!