今天我想给大家从程序的角度,从数学模型的角度去说说"大攻击卡和小攻击卡的问题."
大攻击卡和小攻击卡的争论到现在始终也没有得到太大的定论,基本都是各执一词.说的也是在情在理的.
但是在最基础的数据语言里面,大攻击卡和小攻击卡的概念到底又是怎么样给于定义,描绘的呢?
我不知道幻想的源程序.所以只能大概的猜测里面的程序段.通过程序段给大家一个通俗的说法吧.如果程序猜测错误,那就是另外一回事了.不过按照我的经验(对<热血传奇><奇迹>等出现私服的,有源程序外泻的游戏的研究,用VC来说就只是那么一个公式罢了.)
记得很久以前有人发过关于小攻击卡和大攻击卡的测试数据.我去找找给大家个连接,下面我也会引用到该作者的一些观点.
在上文中提及的观点,有可取之处,也有不当的地方.
首先我想说的就是,幻想里面的怪物,基本上是不存在防御的,即使存在也就是魔法防御特别加强的特殊怪物,物理防御特别加强的怪并不多,(基本上不存在的意思,就是怪物的级别越高,但是对应的防御缺并没有提升太多,微呼其微,几乎是怪物每高一级,只会比低级的怪多一,二点物理防御),有加强的也就是会用技能盾的BOSS级的怪物,当然,那种怪物也不算是物理防御加强了,只不过是技能的强化,而使物理防御"增强"罢了.最熟悉的莫过于21级的'地藏小妖'.这个怪,当魔法系的人打它的时候就会觉得很奇怪,这小东西明显比差不多等级的其他怪物皮厚,其实不然,TX只是给他特别加强了魔法防御而已,不过物理防御并没有增加.物理攻击系的人打它就觉得很痛快,就两下.
法师系的人打怪就是最好的证明,基本除了BOSS,除了特别强化的怪,魔法攻击都是稳定一个数字输出的.
说到这里也许会有人不服气,"法师打怪稳定,那只是说明怪物的魔法防御没有改变而已,但是物理防御改变了."其实很好证明的,拿个CK就可以了,10级左右的,拿把双刃,给双刃上几张小攻击卡,反正就是要把小攻击提高到跟大攻击一样,甚至超过大攻击.你试一下拿这个刺客去打怪?你会发现,除了特殊怪物,你打任何怪掉血的数字几乎都是一样的.(这个几乎的意思就是当怪物级别比你实在超越太多了,怪物的防御还是会体现出来的.)
怪物的防御几乎可以忽略,怪物唯一赖以生存的只不过是高血量,高繁殖(刷新怪速度,呵呵)
再说上面那篇文章中的观点吧,该作者说,"假设减少2点最大相当于减少1点最小"首先这个假设就相当不合理,这不明摆着嘛,+1的最小攻击卡是(1,2),+1的最大攻击卡是(3,6),哎呀,这个比例,小学都知道是3倍吧.怎么能说是2倍呢?
也就是说,你要是做那个试验,比较的前提就是你弄那么多小攻击,你就得再弄三倍的大攻击卡来比较,不然没有可比较的余地嘛.
再研究一下作者说的,"44最大→9.2630最小→18.72
平均每1点最大攻击提升0.21平均伤害,平均每1点最小攻击提升0.624平均伤害."
这个公式错就错在没有对比标准,就象物理所说的动和静的定义需要参照物.
这里要做比较的话,应该先把双方同化成同一个标准.
那么我来给他算算吧,就把小攻击同化到大攻击去吧,按照三倍的比例标准,30点的小攻击在镶嵌原则上是等于90点大攻击的,那么用18.72除以90,得到0.208
这个还不明显吗?不过另外还需要强调的是上面引用文章的统计合理性,统计的数据还是太少,不具有相对的客观性。
好了说了这么多,还是说回程序这个重点吧.
根据我上面的一段分析,我再给大家分析程序,相信大家会容易明白很多的.
对于一个人物属性有最小攻击和最大攻击体现的游戏来说,要实现这一个运算过程其实简单的不得了.说来说去就是一个rand()函数,学过VC的人会比较明白我说什么.当人物的大攻击和小攻击确定时,为了下面好说明,我就打个例子吧,比如一个角色物理攻击是100--200,rand()函数起到的作用就是,在100--200里面随机取一个值,然后"攻击"怪物,减掉怪物的防御,然后得到一个伤害值.
过程就是rand(100--200)-f(怪物防御)=伤害
那么这又跟最小攻击和最大攻击卡有什么关系呢?
其实你最小攻击卡加上去,或者最大攻击卡加上去,无论怎么加,都是不能脱离rand()函数的取值的,因为,人物的攻击就是这个函数有定义的变量X.而小攻和大攻只是定义域的范围罢了.
在统计学上来说rand()所取得的值,无论怎么变化,只要取值次数越多,所得到的平均值,就会越趋向于定义域的最小变量和最大变量的和的平均值.
这就是我立的命题的根本依据,rand()的随机性以及趋向性可以说是一个不变的规律吧.我想这里没人敢站出来否定rand()的规律吧.
我说个实际的运算例子吧,比如刚才那个角色100到200的攻击,我假设有两把同样的武器(为了方便计算,把武器的攻击假设为0),都带五孔,没卡.
现在要测试的就是小攻击卡和大攻击卡的区别.
首先我给他镶嵌一张10的小攻击卡.那么rand()的定义域变成110--200,按照上面所说的平均观点,得到攻击是155.
然后我用另一把武器,镶嵌大攻击卡10的(事实上幻想里面是没有10的大攻击卡的,方便计算我就假设有吧.)那么rand()的定义域变成100--210.按照平均观点,得到攻击155
再换武器,拿刚才的小攻击武器,再加张11的小攻击卡,同理,得到攻击160.5
再换武器,拿刚才的大攻击武器,再加张11的大攻击卡,同理,得到攻击160.5
......
这里无论取多少次数据,得到的效果都是一样的
很明显,小攻击加多少和大攻击加多少,效果完全是一样的.这就是rand(),你不能否认.
不过话说回来,在数学原理上,小攻击加多少和大攻击加多少所得到的效果是一样的.
但是实际上,玩家真正去镶嵌卡片的时候就不是这样的了,就象我刚才的例子,事实上最大攻击10点的卡是不存在的.
所以,比如刚才那个五孔武器,小攻击卡能镶嵌10,11,12,13,14,一共是60点小攻击.
而大攻击卡对应10,11,12,13,14小攻卡的是30,33,36,39,42.一共是180点大攻击.
实际上做比较的话,就象我上面的上面所提及的那位玩家的文章,那个加红的计算数字,看出来了吗?
实际上还是一样的.
最后得出结论:小攻击卡和大攻击卡加的攻击数值一样的话,效果完全是一样的.