《最终幻想7重制版》的伤害计算公式,以及得出这个公式的过程 |
您所在的位置:网站首页 › 最终幻想6魔法大师可以重置吗 › 《最终幻想7重制版》的伤害计算公式,以及得出这个公式的过程 |
在我玩RPG游戏的时候,每当队友或者敌人受到伤害,蹦出数字之后, 我就在想,这些数字到底是怎么计算出来的。 虽然我觉得大概有90%以上的人认为这都不重要, 认为“认真就输了”或者“无所谓”等,毕竟过于较真确实会影响游戏体验。 但是算出这些数字对我来说真的很有必要。 我会经常纠结:“这个装备能够提升多少造成的伤害啊?”、 “到底穿HP+20%的装备划算还是物防+20%的装备划算?”这一类的问题。 于是我就用了总共10小时49分钟,用不够严谨的方法得出了初步的伤害计算公式: 伤害=(0.5+AT-DF)*POW*RAND 式中: AT:攻击方的攻击力。如果攻击的种类是物理攻击,那就是物理攻击力; 如果攻击的种类是魔法攻击,那就是魔法攻击力。 DF:目标的防御力。如果攻击的种类是物理攻击,那就是物理防御力; 如果攻击的种类是魔法攻击,那就是魔法防御力。 POW:每一种攻击特有的数值,比如说克劳德的“英勇斩击”为8。 RAND:0.95到1.05的随机整数 ※注:最后还会乘以暴击或者是武器改造的修正。 物理/魔法 攻击/防御 力的计算公式:(这个大家应该都知道) 物理攻击力:力量*2+所有装备中“剑”图标右边数值的总和 魔法攻击力:魔力*2+所有装备中“法杖”图标右边数值的总和 物理防御力:体力+所有装备中“盾”图标右边数值的总和 魔法防御力:精神+所有装备中“魔法帽”图标右边数值的总和 比如说:满级(Lv.50)的克劳德,力量107, 装备“破坏剑”(物攻75,经过改造), 得到物理攻击力为:107*2+75=289 对敌人“鱼人王子”(物理防御力73,测出来的) 施展“英勇斩击”(威力8,也是测出来的), 造成的基本伤害为(0.5+289-73)*8=1732 再乘以随机数后,造成的伤害会在1645到1819之间。 如果造成了暴击,伤害还会乘以1.2(有些武器会增加这个数值)。 如果目标有“护盾”效果,伤害会减半。 如果目标处于“BURST”或“Stagger(英文版是这么写的)”状态, 伤害会乘以这个单词后面的倍率。 …… UP主的话: 讲真的,这其实是我在最终幻想系列中见到的最简单的伤害计算公式了。 因为这个系列的老游戏的伤害计算公式都太复杂了,比如说: 最终幻想7原版: 基础伤害BD=AT+((AT+LV)/32)*((AT*LV)/32) 最高伤害MD=(POW*(512-DF)*BD)/8192 实际伤害AD=MD*(3841到4096的随机整数)/4096 (LV:攻击方等级,AT:攻击方攻击力,DF:目标防御力) 还要考虑一大堆的东西…… 最终幻想10:(物理攻击) 基础伤害BD=(AT^3/32+30)*POW/16 修正伤害FD=BD*(730-(DF*51-DF^2/11)/10)/730 实际伤害AD=MD*(240到271的随机整数)/256 (AT:攻击方攻击力,DF:目标防御力) 还要考虑一大堆的东西…… 而且魔法攻击用的不是这个公式…… 最终幻想12: [数据删除] (好吧,我承认这是一个偷懒的方法,但是这个真的实在是太复杂了) 看上去就比最上面的那个复杂得多。 嘛,毕竟当时的科技水平并不是那么发达, 为了节省游戏容量,只好把一些数值限制在一个字节之内, 伤害浮动也只能取这种分段式的。 由于一个字节可以表示0-255的整数, 所以大家会在某些比较老的游戏中看到某个能力值的上限是255, 上面举的前面两个例子的游戏都是这样子的。 但是最终幻想7重制版这款游戏,并不是上面的那种情况。 现在都0202年了,不再需要把能力值限制在1个字节中了, 伤害公式就可以会变成“线性”的了。 就比如说最终幻想13,伤害是跟角色的物攻/魔攻成正比的。 所以现在制作出来的游戏,伤害计算公式会相对简单一些。 现在就探讨我是怎么得出伤害计算公式的吧。 首先看上面的 物理/魔法 攻击/防御 力的计算公式, 每提升1点力量/魔力,就能提升2点物攻/魔攻, 每提升1点体力/精神,只能提升1点物防/魔防。 这时我就突然猜想伤害公式就是 “(攻击力-防御力)*一些东西”的形式, 因为我用过了“RPG Maker”系列的游戏制作软件。 我在里面见过“基本伤害=攻击力-防御力/2”的公式, 还有“基本伤害=攻击力*4-防御力*2”的公式, 每1点攻击力增加的伤害总是等于每1点防御力减少的伤害的2倍。 而在这里,每1点力量增加的物攻等于每1点体力增加的物防的2倍。 于是我就得到了这样的猜想。 然后我就经历了很多个小时的验证。 我测试的敌人就是第16-17章的模拟训练场的 “克劳德VS神罗战士定期检查”,中的第一回合的“鱼人王子”。 我一开始的测试使用的是平砍,最终得到的结果很混乱。 然后为了减少误差,我就尝试了使用比较容易测量的攻击, 比如说“英勇斩击”(a.k.a.“一刀两断”), 对敌人使用了50次这样的攻击,记录了每一次攻击的伤害, 然后根据护盾、暴击和BURST的状态进行了修正。 接下来处理数据,算出“平均值”和“方差”。 根据我的测试,伤害值并没有出现多次重复的现象, 而且有些结果只相差1,不像是“伤害分段浮动”会做的事。 所以假定伤害是“连续浮动”的,而且是“均匀分布”。 (有时会用X~U(a,b)来表示,严格来说这并不是真正的均匀分布, 因为伤害值到最后都是要取整的) 但是如果这真的不是均匀分布的话,就不会有这篇文章了。 这里需要用一些“概率论”和“统计学”的知识。 因为伤害的浮动是均匀分布, 所以假设伤害X~U(a,b),方差σ^2是(b-a)^2/12,得出浮动的幅度(b-a)=2√(3)σ。 也就是说,伤害最多会增加或减少√(3)σ。 根据这个和得到的数据,我就得出了伤害的浮动范围是95%-105%。 测试和处理完毕后,我就换了装备, 再根据新的物攻测得这时攻击敌人造成的伤害的平均值。 最后用软件(不是我写的)进行“最小二乘法”的直线拟合, 拟合的结果还不错,果然跟攻击力是线性关系。 但是得到的直线的参数特别奇怪,误差略大。 (比如说“英勇斩击”的威力是7.84,敌人的物防不是整数,而且误差范围有±4这么大) 更重要的是,得到的直线并不符合实际的结果,有时实际数据会超出计算的结果。 然后我就反复试,最后我放弃了,用“(最大伤害+最小伤害)/2”与攻击力拟合, 结果就得到了比较顺眼的结果,测出“英勇斩击”的威力接近8,敌人的防御力接近72.5。 而且万万没想到,这根直线真的就符合实际的结果了。 但是,为什么是72.5而不是整数呢? 难到公式是“(攻击力-防御力/2)*一些东西”的形式吗? 带着这个问题,我就测试了防御力对伤害的影响。 这次轮到克劳德挨打。 我顿时感到了,克劳德对我的憎恨。 我顿时感到了,我可能比宝条博士还要变态。 我顿时感到了,[数据删除] 记录了1组数据后,我换了一个物防与原来相差很大(74)的防具, 记录了3个数据后我就放弃了,因为伤害的变化量大概有74。 (所以我说是“不够严谨”的方法了) 结果就得到了公式是“(攻击力-防御力)*一些东西”的形式的结论。 然后这“72.5”是什么鬼呢? 根据上一组数据,我发现如果不是某个整数,就会不符合我得到的数据范围, 所以公式中的0.5就是这么来的, 也许是为了在攻击力低于防御力时仍然能够造成伤害而设计的吧…… 然后总结了以上所有的结论,就得到了这样的公式。 最后: 由于这是用不够严谨的方法得到的,所以八成还会有一些瑕疵。 如果有错误的话,大家可以在评论区告诉我。 我不知道是不是有其他大佬已经得到了计算公式, 还是我是全世界或者全国第一个这么做的人。 但是无论是不是,我至少是做出了一定的贡献了吧…… 副产物: 克劳德的“英勇斩击”的威力:8 敌人“鱼人王子”的物攻:276 敌人“鱼人王子”的物防:73 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |