mmo游戏里战斗设计02-初步设计
目录
战斗系统需求
1.什么是1级属性?什么是2级属性?
1级属性:
a.力量、智力、敏捷...,简单理解就是最基础的属性。
b.同时1级属性会影响2级属性, 例如力量的增加会增加HP、物理攻击以及增加少量的物理防御。
c.一般游戏里给人物加点,就是加的1级属性。
2级属性:
a.物理攻击、物理防御、HP、MP、魔法...
b.2级属性可以理解为间接的体现,玩家一般不能直接对它进行操作,加点主要是加1级属性,
通过1级属性影响2级属性成长。最终值,战斗公式一般以最终值计算。
例如:梦幻手游人物属性加成关系
1力=1物伤+0.6法防+0.2速
1魔=1法伤+5蓝+1法防
1体=8血+0.4法防+0.2速
1耐=2.2物防+0.4法防+0.2速
1敏=1.5速
2.属性成长公式
3.角色属性表概览
对于角色属性表设计:
1.如果是设计了一种数值体系是用公式来计算数值体系的,那么可以不用在配置表里
配置全部数据。
-优点:
a.表数据量较少,程序内存少。
-缺点:
a.不直观,程序需要根据公式计算。
b.并且有时候很多数值并不是线性关系,很难用公式来规划,
不得不采取另外的方式。
2.如果是需要更加精确和控制数值并且直观的话,那么需要在表里配置全部数据。
-优点:
a.程序可以直接读表,不用再计算公式,效率高。
b.属性数据全部配置在表里,直观方便查找,策划可以精确调节。
-缺点:
a.随着不同职业的增加,表的数据量会越来越大,难以维护。
有时候策划只是给你个想法,要求根据人物等级就能取到对应的属性,属性就是xxxx, 并不会告诉你怎么设计表
如何实现。
我们程序就要学会根据需求来确定合理的表格设计,告诉策划怎么配置,我们项目采用第2种方案,一般也是采用
第2种方法让策划配置。
4.技能需求概览
上图:
1.旋风斩技能,角色原地旋转,对周围200m以内范围玩家造成2秒的持续性伤害。
思考下我们如何实现类似的技能,如何设计技能系统?
a.一般的可以简单理解为技能系统的组成由技能和buff系统组成,技能只判断是否命中目标,
命中目标后派发buff到目标身上,造成伤害是由buff驱动。但是这里,旋风斩旋转是对周
围200米造成伤害,如果伤害是由buff驱动,那么如果玩家离开200米外,得移除buff,比
教复杂。
b.那么我们是不是能把这种伤害放到技能来做?但是如果技能可以直接产生伤害了会不会打破
设计原则,技能需要写伤害逻辑?待确定..
c.这个点最合理的实现是,技能本身能够直接对周围的怪物产生直接伤害,技能有伤害逻辑?
那就技能系统技能能产生伤害,buff也能产生伤害?
2.冲锋突刺,会对角色产生位移。
3.瞬发技能,不需要施法时间,释放时立即生效。
5.战斗类型
6.战斗模式
1.客户端战斗(难度比较低):
a.服务器需要做验证方案,不然容易产生外挂。
b.一般服务器不做逻辑,只需要做结果分发和战斗回放验证。
c.王者荣耀(采用帧同步):
--多人战斗假设有10人战斗,如果只有一人使用外挂,很容易验证对比其它人数据包,发现你的
数据包和其它9人来说有异常那么你就是外挂了。
--1v1战斗,或则多人战斗,都说自己的数据包是正确的,无法用数据包对比来判断相信谁。因为
帧同步可以战斗回放验证,客户端可以向服务器发战斗回放数据,服务器通过专门的验证战斗回
放数据的服得到准确的战报,从而得到结果。
你可能觉得的服务器回放战斗验证很耗时,但是一个服同时在线和同时结束战斗的场次,其实没
有想象中的那么多。
还有很多策略可以让客户端做一些表现来延长等待服务器的结果,甚至这场结果不准确可以通过邮寄
发放到下一场战斗告诉你上一战斗你开挂了,结果无效。
2.服务器战斗(复杂度高):
a.所有核心战斗逻辑都在服务器上跑,客户端做表现。
b.服务器上跑战斗,同时在线四五千甚至上万人,那么随时随地发生很多场战斗,对服务器压力非常大。
对于mmo游戏,很多游戏战斗确实是放服务器做。压力大,有的游戏就会将战斗单独拆分出来到一个服,
甚至是战斗集群服。