数值测试,张无忌VS段誉

来源:互联网 发布:手机号码定位寻人软件 编辑:程序博客网 时间:2024/04/30 06:59

YACHY给了个游戏战斗计算公式,比较复杂。。。

复杂的系统很难平衡,所以为了测试公式是否合适,我写了个测试机,实现两个机器人基于该设定PK,暂时给定 男一号 :张无忌    男二号:段誉。

测试结果不太满意,然后我修改了一下公式。现在看来效果还不错~

 

相当有意思的数值游戏!!

 

以下为两者能力相同的情况下,

段誉高轻功,张无忌高输出,


具体战斗信息




数据脚本设定


 

数据内容


 

公式如下:

攻击能力评估 g = 武器伤害 + (技能伤害 * 技能熟练度 * 技能与内功适性 ) * ( 1 + 内功比例系数 * 当前内力/内力上限 )

防御能力评估 s = 防具防御力 + (技能1防御力 * 技能熟练度 * 技能与内功适性 + 技能2防御力 * ...) * ( 1 + 内功比例系数 * 当前内力/内力上限 )

进攻方轻功能力评估 q1 = 轻功 * ( 1 + 内功比例系数 * 当前内力/内力上限 )
防守方轻功能力评估 q2 = 轻功 * ( 1 + 内功比例系数 * 当前内力/内力上限 )


伤害力评估 c = g - s ( 如果c<0 则c=10 )

伤害力 受伤层能力计算 x = g / ( g + s )

攻击判定轻功修正 y = ( q1 - q2 ) / q2

命中概率 w = x + y * 0.3

如果命中:

受伤度 m = 守方当前生命值hp / 守方生命上限hpmax

伤害值 damage = c/10 * ( 1/m ) * ( 攻击方当前生命hp / 攻击方生命上限hpmax )

 

 

先给出大体的计算设定:(文by yachy)

DEMO版人物的属性定义:
为了不同以往游戏的计算方法,我们希望设计出一个更贴近于武侠模式的属性计算方式。
 
命:相当于武侠小说中人物的身体状态,100%为健康,0%为死亡,中间分为轻伤,重伤,濒死。受伤遵循以下原则
第一:受伤与否是根据一次被攻击而定,损失命的百分比有一个发生概率。也就是说,碰到高手受伤概率大,碰到小人物也不一定不会受伤。
第二:游戏中没有回血的药品。受伤之后只能通过时间的流逝恢复,比如一天恢复1%。但是拥有灵丹妙药或者是静心在某个地方打坐,恢复值一天能超过1%。这个恢复速度也更主人公的内力有关。
第三:受伤后的后果很严重,攻,守,轻,等等属性都需要乘以命的百分比,内力的下降速度非常快。如果在受伤情况下再次战斗,受伤概率更大。
 
内力:值无上限。原则有几点:
第一:内力有属性,比如学习了九阴真经,不能学九阳神功。
第二:通过修习内功以及打斗增加,低等内功每天增加得少,高等内功每天增加的多。所以主人公可以开始慢慢修炼低等内功,也可以等待机缘修习到高等内功再说,不过那样风险比较大。
第三:战斗中内功会持续损失,发动招式,无论攻,守,轻,也会大量损失。
第四:受伤的可能性跟内力有关,内力剩余越多受伤的可能性越小。内力也可以影响武功的发挥程度,只有五成内力的话,对招式的加成会变得很低。
第五:内力可以极快速度恢复,也可以吃药,也可以打坐,随着时间也能回复。恢复速度以10%为底线计。
 
攻:进攻能力,无上限。包括基础值和实际值,原则如下:
第一:基础值由两方面决定,内力武器和招式。纯砍的话,仅用内力乘以比例+武器计算,战斗中每回合损失内力也到最小。运用招式的话,攻=内力乘以比例+武器+内力对于招式的加成,伤害肯定要大,但是消耗内力多。
第二:进攻招式可以通过战斗中使用或平时练习升级,前者升得快。
第三:算出基础值之后,需要通过“命”来计算实际值,乘以命的百分比,得到实际能发出的攻值。如果濒死,乘以命的百分比还要乘以1/2,因为快死了嘛。
 
守:防守能力,无上限。包括基础值和实际值,原则如下:
第一:基础值由两方面决定,内力防具和被动招式。守=内力乘以比例+防具+内力对于被动招式1的加成+内力对于被动招式2的加成+…………
第二:算出基础值之后,需要通过“命”来计算实际值,乘以命的百分比,得到实际的守值。如果濒死,乘以命的百分比还要乘以1/2,因为快死了嘛。
第三:守技属于被动,但是主角可以选择性装备,因为原则上不同内力对于不同被动防御招式加成不同,损失的内力也不同,多装备内力损失大,但是更保险。
第四:被动防御招式可以通过战斗中使用或平时练习升级,前者升得快。
 
轻:轻功能力,无上限。涉及到武功的属性。也包括基础值和实际值,原则如下:
第一:轻功基础值更内力有关,更与轻功秘籍有关。轻=内力比例+轻功1+轻功2+…………注意内力占的比例应该低一点,30%。
第二:算出基础值之后,需要通过“命”来计算实际值,乘以命的百分比,得到实际的轻值。如果濒死,乘以命的百分比还要乘以1/2,因为快死了嘛。
第三:轻功属于被动,但是主角可以选择性装备,因为原则上不同内力对于不同轻功加成不同,损失的内力也不同,多装备内力损失大。
第四:轻功的作用:以比例减小主人公受伤的几率,以比例提高主人公的进攻对象受伤的几率,缩短回合的冷却时间。(与守不同,守是以绝对值加入计算受伤)。
第五:轻功也能通过战斗或者平时练习升级,前者升的快。
 
 
重点来了,伤害计算!!!
伤害计算方式分为两个层次。
第一:受伤层。这个部分是由攻,守等等属性计算出概率得到。决定一次被进攻是否受伤。
第二:伤势层。这个部分是由第一层计算结果决定是否计算,是计算到底伤害多少。
 
再描述一下伤害计算的设计来源。
天龙八部中初期的段誉。因为学习了凌波微步,加上不太弱的内力(北冥神功),可以大大减少自己被伤害的概率,进攻上(虽然当时他不会进攻的招式)也能大大提高进攻的成功率。但是这个部分仅限于比他实力只高出一层或几层的人,或者内功高一线,或者招式强一线。一旦碰到了绝对实力的对手,初期段誉的轻功相信是完全没有作用的。
 
受伤层:
在一次攻击中。
令绝对实力差距         c=攻方攻的实际值-守方守的实际值
令实力差距相对守方值    x=c/守方守的实际值(c为负时,变为0)
轻功差距              q=攻方轻功实际值-守方轻功实际值
轻功相对守方值         y=q/守方轻的实际值(q为负时,继续计算)
受伤概率为            w=x+y*10%
(下面进行一下数据的测试。
例1:当实力都大大强于对手。攻方攻实际1000,守方守实际500,攻方轻200,守方轻100
C=500,x=1,q=100,y=1,x=1.1,百分之百受伤。
例2:当实力都稍强于对手。顺序同上,下同。600,500,200,100
C=100,x=20%,q=100,y=1,w=30%
例3: 当武力稍强于对手,轻功很弱(大约是段誉被进攻时)。600,500,100,200
C=100,x=20%,q=-100,y=-1,w=20%-10%=10%
例4:当武力稍弱于对手,轻功很强(大约是段誉进攻时)。500,600,200,100
C=负,x=0%,q=100,y=1,w=10%
例5: 均弱于对手,x=0,w主要受轻功影响。

综上所述,大大强于对手伤害100%,稍强于对手,轻功能起到一定程度的作用,哪方面弱于对手概率都会变低,均弱于对手的架还是靠轻功了。
 
伤势层:
如果判定为受伤。伤势计算暂时如下:
如果伤害以x%的概率发生并且发生了,那么命的损失为x%*80%。如果x%<10%,伤害以10%计。
此时如果被攻击者已经受伤,收到的伤害会更大,如果生命值已经是m%,伤害值还要乘以1/m%。
即如果生命值是50%,那么这次受伤原本是20%,那么要乘以1/50%=2,受40%的伤害。
 
 
下面再谈谈攻,守,轻基础值计算:(中间k开头的参数均是比例,有待商榷,初步k1=k2=50%,k3=30%)
攻g=内功当前值 × k1 (+ 武器的攻击) (+ 招式伤害 × 招式熟练度 × 内功与招式的配合程度 × 内功当前值 / 内功最大值)
守s=内功当前值 × k2 (+ 防具的防御) (+ 招式1防御力 × 招式熟练度 × 内功与招式的配合程度 × 内功当前值 / 内功最大值) (+ 招式2防御力 ……)……
轻q=内功当前值 × k3 (+ 轻功1 × 招式熟练度 × 内功与招式的配合程度 × 内功当前值 / 内功最大值) (+ 轻功2 ……)……
 
实际值就是以基础值×生命值,生命值低于20%为濒死,实际值还要除以2。
 
为什么要乘以内功当前值/内功最大值呢?这样的算法是根据武侠小说而来:
第一:内功最大值可能很大,但是如果当前值很少,那么就不能发挥全部威力,好比无涯子传功给虚竹之后,内力非常低,武功招式精妙也没有用。
第二:凸显招式的重要性。如果某人内力1098/1100,而一个高手1098/10000。这样,虽然内力相同,某人能发出所学的100%,而高手只能发出所学的10%,这是不合理的,因为两人内力相等,高手可以凭借招式取胜。这个我们可以这样理解:高手的招式伤害×招式熟练度×内力与招式的配合程度非常高,就算10%也足矣抗衡。如果你还要刨根问底:为什么同样的内力,高手要比撮B招式厉害10倍才能打个平手。我会说:第一,凸显招式的重要性,“招式伤害×招式熟练度×内力与招式的配合程度”提高10倍不容易,也不难!招式领悟高3层我们就能10倍差距,如果修炼到10000内力,招式还是跟1000的人领悟一样的话,那拜托你不要玩了。第二,属性还是以内力为大头的。打斗中,保存内力也是必要的!第三,打斗的方式有限定,见下面“第三”。
第三:打斗中,内力都会以一定数值减少,比如一个回合降20点,招式100点等等。而恢复的时候内力却是以百分比恢复,非常快。所以内力高很有优势,10000点内力和1000点内力,打斗,基本秒杀对方,不可能出现后来1098/1100对1098/10000的情况,除了车轮战,或者玩家一直不补给。但是如果这样,第二条的设定还是很合理的,持续的疲劳需要更高的技巧来弥补。

原创粉丝点击