铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 7127|回复: 11

[其他] 金庸人物战斗力的建模与计算

[复制链接]
发表于 2015-2-5 16:09 | 显示全部楼层 |阅读模式

马上注册,结交更多侠友!

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
作者:王漫如

  金庸笔下人物武功的强弱,经常被大家拿来讨论,这也是因为金庸的小说有两个得天独厚的优势。第一,人物发挥比较稳定。金庸两次修订自己的小说,书里人物的战斗力有一个相当清晰合理的分级。像第一版《神雕》里的神雕能和金轮法王战成平手;《倚天》里谢逊一出场,张翠山觉得武当七侠联手也无法战胜他,这些不合理的地方在后面的版本都作了修改。相较之下,古龙温瑞安笔下人物的战斗力就比较混乱了。四大名捕的铁手,在《会京师》里只能和楚相玉(曾败于铁手的师父)走二十五招,在《少年铁手》里,少年铁手的内力却反而超过自己的师父。这样想要评估铁手以及楚相玉的战斗力,就难免顾此失彼,自相矛盾。第二,金庸的武功便于量化。灭绝师太是用了三成内力,还是七成内力,都从上帝视角说的清清楚楚;两个人拆了三十招还是五十招也都很明确,这就给评估金庸人物的战斗力创造了很好的条件。

  但是诸如“五绝的武功在倚天里相比三渡怎么样”这种问题,每次都会掀起争论。究其原因,毕竟还是因为没有一个定量的战斗力指标,可以用来量化不同书中人物的战斗力。鉴于金庸武功有这样两个极为便于量化的优势,本文建立了一种评价人物战斗力值的数学模型。通过这个模型,可以比较某一人物的所有战绩,对每个人物给出一个可信的战斗力数字。甚至能依据相同的标杆,跨越不同作品进行人物战斗力的比较,平息人物之间战斗力强弱的争论。(注:金庸小说前后一共三版。本文所有的战斗力评估,如果不特别指出,均以第二版为基准。在需要的时候,也可以参考第一版和第三版的内容。)

  一、战斗力数学模型

  要建立这样一个战斗力的数学模型,必须考虑到金庸人物的这样一些特点:

  1、招数和内力需要分开考虑。金庸人物中,经常会有一个人不大懂武功招数但是内力超常的情况。这样的人物,最起码可以反弹内力不足者的所有攻击,比如段誉对宗赞王子;再高一级,则能自动感知物理攻击,比如张无忌在光明顶躲开何太冲夫妇的“无声无色”。而到了最高境界,就可以“随心所欲,无不如意”,和武功精强的一流高手战成平手,比如觉远对何足道,石破天第二次对丁不四。在少数情况下,如果人物内力很弱但招数精妙,一样可以克敌制胜,比如无内力的令狐冲对内力全开的任我行,学会辟邪剑法的林平之对余沧海和木高峰,何太冲失去内力时对赵敏的武士。

  2、阵法的加成作用。从最开始碧血剑里的五行阵,到射雕系列中的七星北斗大阵,金刚伏魔圈,武当七侠的真武七截阵,都能够明显提升战斗力。但是这些阵法对战斗力的提升也各不相同。这些都要在建模里有所反映。

  为此,可以建立这样一个战斗力的数学模型。每个人物一共有三个参数,分别为“战斗力”、“内力”和“招式”。战斗力值是用来衡量人物之间胜负关系的主要参考指标,而这个值,由他的内力值和招式值决定,三者之间的函数关系如下:


  这个式子看起来有点复杂,实际上就是一个加权平均。如果一个人的内力和招式一样都是a,那么:


  也是a。对于大多数人来说,内力和招式一般是成正比的,即内力越强的人招数越强(这个假设很合理,因为一个人内力越强,一般说明他修炼的时间越久,修炼的功夫更高明,所以招数自然也越精),那么可以认为他们的三个数值是一样的,可以简单用一个值a来表示。但是对于一些在招数或内力上有强烈优势的人,这个公式就可以用来很好的解释他的战绩。以觉远对何足道为例,假设何足道的内力和招式都是 80,他的战斗力就是 80。觉远基本不会武功,可以认为他的招式为0。但是他能和何足道基本打个平手,战斗力也是 80,那么他的内力是:


  是何足道的四倍。九阳神功满级的张无忌和三渡内力之和相当(“张无忌九阳神功之强,不输于三僧联手”),所以同样九阳神功满级的觉远是何足道内力的四倍,是一个很合理的估计。完全没有内力的令狐冲能和内力全开的任我行打成平手,那么令狐冲的招式水准也大约为任我行的四倍。考虑到独孤九剑是一种“敌强愈强”的武功,这个估计也是合理的。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2015-2-5 16:10 | 显示全部楼层
二、内力取值的计算

  模型建立之后,人物的具体战斗力值怎么确定呢?这个需要通过人物互相之间的战绩来决定。首先讨论对内力值的估计:

  用A和B代表两个对手。假设A被B击中,在金庸的书中会有一些代表性的反应。在其中一些情节中,又能给出两人内力的一个典型比例关系,可以作为内力评估的参照。

  1)A被B击中,只是一阵剧痛,但没有受伤。

  一个典型战例是张无忌和三渡的交手中,张无忌被三渡之一击中。考虑到张无忌的内力等于三人之和,则B≈ 0.33A(注意到三渡的实力是有差别的。但是这里的区间是一个近似估计,而且可以想象,不论三渡中的哪一位打中张无忌,效果都相差不大)。

  2)A被B击中,呕血受伤,但不致命。

  这个有几次出现。一次是灭绝师太用七成功力打飞张无忌,张无忌重伤呕血。考虑到之前张无忌震飞静玄的时候,灭绝师太暗暗吃惊,想自己也没这样的功力。那么假设张无忌内力是灭绝师太的 1.5 倍,灭绝师太用三成功力将张无忌打至吐血,那就是1/1.5*0.3= 0.2 倍张无忌的内力。这个值低于前面推出的 0.33 的阈值。但考虑到张无忌当时对内力的运用还不太成熟,而灭绝师太则极为老辣,所以这一掌的效果比正常情况下更突出。因此,A呕血受伤的下限应该是 0.33A< B。然后再考虑上限。有一个例子是《侠客行》里白自在和丁不四交手,一掌将丁不四打吐血。白自在的内力明显强于丁不四,就算是 1.5 倍丁不四。

  综上,这种情况下 0.33A < B  < 1.5A

  3)A被B击中致命。

  比如梅超风被欧阳锋击中的情况。这种情况下至少有B>1.5A。

  4)A完全反弹B的攻击。

  考虑到1)的情况,B<0.33A. 但是这个条件还不够。张无忌在光明顶上对空性,心想“恐怕无法不动声色地令空性知难而退”。空性的内力应当略低于三渡。如果张无忌能完全反弹空性的攻击,就没必要打的这么辛苦,所以反弹攻击的上限应该会再低一些。假设空性有 80% 三渡的内力,那就是 80%*33.3% = 26.7%,那么完全反弹攻击,应该是 20% 左右。

  综上,这种情况下 B < 0.2A。

  5)A和B対掌平手。

  这个很显然 A ≈ B.

  6)A和B対掌,A倒退1-3 步。

  这里有一个很有意思的例子。在武当山上张无忌和阿二対掌,最开始两人都晃了一晃,然后阿二分别退出一步和三步,最后完全被张无忌弹飞。如果单看张无忌完全反弹阿二的攻击,岂不是说阿二内力= 0.2 张无忌内力?但注意到阿二被弹飞是张无忌运了半天气的结果。本文中说的内力,是指人物所拥有的内力,也指他一击能够打出的内力,这两者一般成正比。但张无忌蓄力之后,再加上乾坤大挪移的潜力,可以一次迸发出更大内力。假设他的内力是阿二的x倍,而全力一击的力量可以认为是 x2,这个内力值完全反弹阿二的内力。那么1/x2 ≈ 0.2,阿二内力 ≈ 0.45 张无忌,甚至已经超过了三渡的内力,确实厉害。所以张三丰对阿二的评价也是“内力浑厚,武林中甚是罕见”。

  说了这么多,其实只是想说明张无忌和阿二対掌,除了最后一击外,阿二倒退1-3 步,“感到气血翻涌”,才是两人内力比例下正常的反应。综上,在这种情况下,0.45B< A < B。

  7)A和B対掌,A倒退多于三步,或受伤呕血。

  这种情况下B的内力应当低于“対掌倒退”的情况,即 0.45B> A。

  综上,可以整理出两人内力关系如下表所示:



  由此,金庸书中所有包含内力比拼的情节,均可以根据上表估计出交手人物之间的内力关系。

  三、战斗力与交手回合数的关系

  上面推算了内力值的计算方法。内力是战斗力值的一部分。两个人交手的战绩,除了硬拼内力的情况外,都由他们总的战斗力值决定。而反应其战斗力值最直接的参数就是两人的交手回合数。这里采用双曲正切函数 tanh,建立战斗力值与交手回合数的关系如下:

  实力比 =tanh (0.02*x)

  X 是两人的交手回合数。这个函数的图画出来就是下面这样。横轴表示两人交手回合数x,纵轴表示战斗力的比值。例如A在 50 回合时被B击败,由图上可知,A的战斗力约为B的 0.76。



  有了这样的函数,就能直接推算很多人之间战斗力的比值,例如:

  如果A能在 3 招内击败B,那么B的实力大约为A的 0.06;

  丁不四第一次和石破天交手,觉得二十招击败他有点困难,说明他预估石破天的实力不低于他的 0.4 倍;
射雕后期郭靖和欧阳锋交手三十余招被击败。但考虑到郭靖领悟“飞絮劲”后,马上将回合数提升至五十余招,所以他那时的实力大约是欧阳锋的 0.76。华山论剑时,黄药师和洪七公与郭靖交手,都保留了实力。但根据洪七公所想“如果在一百招之内击败靖儿,黄老邪面上须不好看”,说明他有一百招内击败郭靖的实力(当然,郭靖当时手拿兵刃,战斗力反而有所下降),可见当时郭靖的实力大约相当于 0.9-0.95 的黄药师和洪七公;

  张无忌在大都对空手的鹿杖客鹤笔翁,三十招便击败了两人。所以两人空手战力之和,是张无忌的 0.6 左右(下一节会说明如何计算两人战力之和);

从图上看,如果两人交手超过 150 招未分胜负,说明两人实力基本相当。

  以上推算出的战斗力比值,和我们的直观印象是相符的,说明了本文所提出的双曲正切函数模型的有效性。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2015-2-5 16:11 | 显示全部楼层
四、联手战斗的战斗力计算与阵法加成

  一般战斗力计算的文章都认为,几个人联手作战的战斗力,等于其各自的战斗之和。这个算法对内力是可行的,即内力可以进行线性叠加。但如果据此计算人物的战斗力会带来很大问题!比如黄药师和全真七子的天罡北斗阵打成平手。就算不考虑阵法的加成效果,这七位老道的平均实力最多只有 0.14 黄药师。考虑到丘处机、马钰、王处一的实力比其他人都强,那么武功最弱的孙不二岂不是远低于 0.14?再加上阵法加成的效应,堂堂全真七子之一的孙不二的实力只有杂鱼程度,岂不是很不合理?

  因此,本文大胆提出一个假设。在没有阵法的情况下,联手作战的战斗力由以下式子决定:



  这个式子的意思是,联合战斗力,等于每个参展者战斗力平方之和再开根号,实际上就是一个2-范数。举例来说,战斗力 30 和 40 的人联手,其联合战斗力不是 70,而是 50,低于他们战斗力的直接加和。又比如,如果张无忌的战斗力是 100,按照前面的推算,鹿杖客鹤笔翁的空手战斗力约为 60,那么他们每人的单独实力约为 42,也符合我们的直观印象(注意前面推出阿二的内力为 45。但是他的招数未必也有这么强,所以总的实力应该会低于鹤鹿二人)。

  这个算法很好的解决了前面提到的战斗力问题。但是最妙的地方在于,这个定义还有助于计算阵法的加成效应。我们先来考察一下武当七侠的“真武七截阵”。书里写道,武当七侠如果使用这个阵法,“四人相当于八位高手,五人相当于十六位,六人相当于三十二位,七人相当于六十四位当世一流高手同时出手”。这种实力指数增长的阵法,堪称金书中的最强阵法,甚至强的很不合理。但是按照本文的公式来推算,假设每位“当世一流高手”的战斗力是1,武当七侠每人战斗力也是1。那么六十四位当世一流高手同时出手的战斗力是多少呢?——是8!不是 64。和武当七侠战斗力之和基本相当。这就意味着真武七截阵将武当七侠的联合战斗力,从2-范数增长为接近线性加和。这样就很合理了。

  鉴于真武七截阵堪称金庸书中的最强阵法,那么其他阵法的加成作用应当小于等于真武七截阵,但是大于无阵法时的联手作战。所以像天罡北斗阵一类阵法,均可以由此进行推算。

  五,总结

  本文基于严格的数学推导,提出了完整的金庸人物武功的建模方式。在这个武功模型下,只要建立一个标杆(比如设学会太极拳后的张无忌招数内力均为 100),理论上就可以计算出所有人物的战斗力值。计算的方式有(但不限于)以下两种:

  • 按照第二部分的方法,推算出人物内力值,再根据“招式值和内力值相当”得出人物整体的战斗力;
  • 按照第三部分的方法,通过人物交手回合数,直接推算出战斗力值。

  金庸里人物极为繁多,如果想推算出所有人的战斗力值,其工作量大概相当于完成一篇博士论文。鉴于笔者已经不想写博士论文,所以这里只提模型,不再做进一步具体计算。

  有一些问题有待进一步讨论:

  • 是否使用武器对战斗力的影响。虽然《射雕英雄传》里写过,武功到了极高境界,有无兵器差别不大,但绝大多数时候,兵器能提升人物的战斗力。为避免复杂,在计算每个人物战斗力的时候,最好只算他的巅峰战斗力,而不用区别他有兵器和没兵器时的战斗力。
  • 战斗力随年龄的变化。这个问题在射雕系列中比较突出。理论上讲,射雕里的五绝随时间推移,功力会有提高,但他们在神雕后期都接近百岁,“年老力衰”,战斗力又会下降。但是鉴于百岁周伯通仍然能和杨过酣战上百招,七十岁左右的金轮法王战斗力仍然处在巅峰,所以在计算的时候,或许可以做简化处理,认为某个人物的武功练到巅峰之后,就不再随年龄的变化而变化。
  • 不同书中人物战斗力的横向比较。这个问题比较困难,特别是对两部完全不相干的书,但是仍然有蛛丝马迹可循。可能是两部书的人物做了类似的行为,比如萧峰和觉远都用脚擦去石上的痕迹。也可以通过数学上进行计算,比如胡斐力量的极限是抱起七百斤的水缸,而张无忌可以消解十层高塔上跳下来的人。如果计算一下他们使力大小,应该可以得出两人的内力之比。而一旦两部书中有一对人物建立了上述联系,则这两本书中其他所有人物,都可以由本文的模型推算出统一的战斗力数值。

【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2015-2-5 18:48 | 显示全部楼层
一本正经地胡说八道
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2015-2-5 23:22 | 显示全部楼层
做mod的时候对人物的数值有个准确的判断
知道多少数值大概能达到什么效果
在做个人物单挑的简易战斗,自己测试一下,
对于人物的平衡设置应该大有帮助
不过首先要知道游戏的具体公式,根据公式去设定自己想要的结果
lz的模型是内力招式,比如是a和b吧,要达到lz的效果太麻烦了吧
建模的过程是要把客观事物用数学语言予以表示吧
按lz的建议,出来人物就剩下一个战斗力数值,那战斗的时候只要两个人比战斗力数值,
这是七龙珠的设定吧
或者你给人物一个战斗力数据,然后用内力、招式、攻防什么的怎么能达到你的战斗力设置呢
人物的等级,人物强度设置群芳谱的设置就是一个很完整的思路了,明显比lz的有可操作性
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2015-2-6 20:45 | 显示全部楼层
我反而觉得这套公式非常有创意,甚至可以用来在游戏设计初期评定人物强弱等级,避免很多论武过程中夹杂感情色彩的纠缠不清。

当然有几点有不同意见,比如:

1、计算内力取值范围的时候,实际上楼主取材都不是纯内力比拼,用的受伤吐血、后退1步等场景中,招式作用无法忽略不计,导致取值范围肯定不精确。
举个栗子,郭靖和金轮对掌,郭靖退3步,金轮退1步,但实际上郭靖功力更高。
再举个栗子,洪七的功夫是反着来的,测试穆念慈功夫往后掰却往前倒,明显套不进公式里。
内力比拼的场景的栗子,不应该按打一掌受伤情况看,因为同样是一掌,须尼山掌和铁掌效果完全是不同的,纯内力比拼金书中比较少见,但是还是有些栗子,比如:
疗伤的时候,是内力比拼最多的情况,有岳不群压制不了六仙内力,但是不戒和尚却可以;又有张无忌直接化去周芷若原有内力的情况;还有一灯给黄蓉内力疗伤的情况;
另一个体现纯内力的地方是毒抗,张无忌可以反弹金蚕蛊毒,段誉却中悲酥清风;
这些零零散散的东西不足以形成完整线索拉通所有书的内力高低,但至少可以对楼主的对掌系统做一个加权参考。

2、实力比使用tanh函数我很同意,但是楼主的参数不对
在我的印象中,实力是0.95的话,对战实力1的,不会在100回合内就败阵,而且100回合跟150回合并没有质变,到150回合就基本实力相当了,这不合逻辑。
假如裘千仞是0.95的话,对战1的黄药师我估计会在200招决胜负,按这个推算,参数应该是tanh(0.01x),这样的话,300招以后是实力相当,100招大约是7.5成功力。

3、至于联手战斗加成的公式,我非常赞同,本来就是这样,而且平常工作中的团队实力也大约可以按这个来算,而好的项目经理就大约是一个好的阵法,可以有实力加成。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2015-2-10 20:55 | 显示全部楼层
总之 学习了
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
头像被屏蔽
发表于 2015-3-3 19:12 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2016-11-11 10:43 | 显示全部楼层
比较有建设性的模型,其中不乏合理的可借鉴的内容,学习了。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2017-6-9 15:35 | 显示全部楼层
厲害厲害啊
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2018-8-13 21:37 来自手机 | 显示全部楼层
我擦嘞,强悍,楼主做过数据策划?
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2018-10-23 22:05 | 显示全部楼层
我感觉内力不能简单叠加,比如江南七怪这样的,能叠加起码也要比如全真啊 武当这样同师傅 同内力的情况,还有内力传输过程肯定有损耗,另外阵法在战斗中也就最多3个人打一个人 1个人360度能同时进攻的也就3个人左右,所以全真七子跟五绝之间也就是0.5倍差不多的样子,比如都是运动队的队员,大家锻炼程度差不多,但是有点就是冠军 有的只能打酱油
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-12-18 17:48

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表