暴雪式平衡的数学模型探究(二)

发表于2017-07-14
评论0 2k浏览


作者:东北大包子
(转载请注明出处)


暴雪式平衡的数学模型探究(一)

暴雪式平衡的数学模型探究(二)

暴雪式平衡的数学模型研究(三)

暴雪式平衡的数学模型研究(四)

暴雪式平衡的数学模型研究(五)

暴雪式平衡的数学模型研究(六)

暴雪式平衡的数学模型探究(七) 

前言:
暴雪系列的产品,均以平衡性而著称
……
论题1在传统平衡理论中,伤害输出量和伤害承受量(被称作“耐力”)是两个十分重要的衡量标准

……

论题2与速度相关的值是非常麻烦的,公式估算 量化测试可能是唯一的办法
在即时类游戏中,移动速度,对其他方面的影响包括:
近战部队在对抗远程部队时的优势
远程部队在对抗近战部队时的优势
任一部队的生存能力
由于阻挡而产生的操作技巧

在以上几点中,除了最后一点(等下说这个),前面3点都是可以做以模糊的估算的,再配以合适的测试应该就可以达到想要的最终确定值。小可不才,猜测其方法如下:
1.
结合移动速度、起手速度、攻击间隔、攻击距离及转身速度做简单的一对一估算
2.
设计一个平均移动速度,任何单位的移动速度均以此作为参照进行评估设计
3.
其他参数也均指定一个平均值做参照值
4.
测试,首先验证自己的估算公式,调整之后重新估算,再测试,反复。

关于起手速度,攻击间隔,依照我的个人经验,怀疑在魔兽争霸中,完全是一个值,也就是说,在一个攻击动作完成的周期内,攻击效果的产生是位于最后的时刻的(这一点不同于KOF这种格斗游戏的设计——硬直)。很多人大概会说:这属于废话。而我之所以把这点特意说明一下,是因为在这一点上容易产生分歧的,下面来做几个实验:


实验1
动作1WAR3中操作一个不死侍僧召唤一个建筑物,在侍僧建造之前,按住SHIFT右键点其他位置,指定序列动作。
动作2:操作同样一个侍僧在同样地点建造同样的建筑物,在侍僧召唤出建筑的同时右键点击其他位置命令移动。
以上两个动作的差异,相信熟悉WAR3的朋友一定会知道,会产生很短的一个时间差异,同样道理,在使用远程兵种进行普通攻击的时候,也会如此:
动作1:操作先知攻击一个一直向后直线逃跑的单位。(去掉迷雾以避免不必要的麻烦)
动作2:操作先知攻击一个一直向后直线逃跑的单位,并在先知的电球出手瞬间立刻右键点击前方地面,再次操作攻击该单位,反复这两步操作。


实验之后会发现,同样会产生时间差,其他类似的实验(不举例了……),而从这两个实验,我们很可能会得到这样一张时间图:(带颜色部分表示一个动作的完整阶段)


(其中攻击动作收尾期中,玩家的实时的移动操作可以强行CANCEL该阶段。)
那么这样一来,我们不就得到了一个硬直存在的结论了么?
而实际上,在这两个试验中,有两点值得思考:
1
、第一个实验中,有可能两个原因导致该现象:
A
SHIFT的动作序列,很可能会遇到特殊处理,个人猜测,WAR3在处理这里的时候,会在每一个SHIFT动作序列之间插入一个固定的动作停顿(这个猜测还需要实验去验证)。
B
)侍僧的建筑物召唤动作很可能与一般的攻击行为是两种处理方式
PS
:以上两点中,我个人比较倾向于第二种解释
2
、第二个实验中,时间差的产生,完全是因为动作1中在攻击效果发生的瞬间目标超出攻击范围的原因,而导致攻击动作被强行CANCEL

好吧,结束这段无聊的反证吧,现在回到主线上来,
“结合移动速度、起手速度、攻击间隔、攻击距离及转身速度做简单的一对一估算”
这句话恐怕是我们处理这个问题的最关键部分,用公式是否可以解决这个问题呢?现在来尝试一下吧:
首先罗列待参考因素:移动速度、起手速度、攻击间隔、攻击距离、转身速度、伤害力、生命、命中率、攻击延迟(远程箭矢飞行时间)。
排除无效因素:命中率=100%
为避免公式过于复杂,转身速度暂时设定为0,攻击延迟暂定为0,这两个因素仅当我们在之后的研究中发现不得不加入的时候,才予以考虑。(这类情况诸如:远程兵种在移动速度大于等于近战兵种时,可以处于不败之地——包括但并不限于)
伤害力和生命对估算单位的影响以比例的方式来做,结合我们之前做的“两单位不做移动的情况下一对一的效用评估”来做对该效用的百分比影响做比较(见第一篇)

附注:
静止情况下:单位战斗效用=(该单位生命值/平均伤害)/(平均生命值/该单位伤害)
单位成本=Φ(生产费用,生产时间,科技等级)
单位效用=Δ(单位战斗效用,单位成本)

这里,我们暂且将(生命/伤害)定义为耐久(单位在死亡前可承受伤害的次数)

起手速度和攻击间隔,暂时认定之前实验相关的陈述是事实,那么我们将这两个因素合并,统一为攻击间隔

剩下的因素:移动速度、攻击间隔、攻击距离

为所有需要考虑的因素各自设定一个平均值,把这个平均值当作所有其他单位的平均值,以此做参照:耐久、移动速度,攻击间隔,攻击距离。

这里,我们将上述公式的后两步省略,只考虑战斗效用,而暂时不考虑成本,而现在我们也正是要研究各种速度参数对于战斗效用的影响,OK,先把公式摆出来:

单位战斗效用=(该单位生命值/平均伤害)/(平均生命值/该单位伤害)

然后我们就考虑一下移动速度在以什么样的方式影响着战斗的平均效用

首先是双方遭遇的时候,近战单位的移动速度决定了在攻击对方之前的生命损失

以平均数值做假想敌

那么这个生命损失=(平均攻击距离/该单位移动速度)/平均攻击间隔*平均伤害力

→生命损失/平均伤害力=(平均攻击距离/该单位移动速度)/平均攻击间隔

这部分损失应该与之前公式中的分子相加:

单位战斗效用=((该单位生命值/平均伤害) (平均攻击距离/该单位移动速度)/平均攻击间隔)/(平均生命值/该单位伤害)

这样,依照这个公式,就可以得到一个近战单位的移动速度对该单位战斗效用的影响,当然,这并不完整,因为这里并没有考虑到H&R的因素,实际上两单位的移动速度差也应该被考虑在内的,再深入思考下去,转身速度,攻击的起手速度都是需要考虑的因素了,通过反复的这样一个过程,我们就可以得到一个即时战斗类型中两单位的效用评估公式,而公式的复杂程度,我们也足够把这样的一个数学结构称之为数学模型了。

我们同样可以得到同样方法也可以做出其他类型单位,或者其他参数对于战斗的影响实际上,根据这样的公式,得到的效用值仅仅是个参考值,值本身=1=100没有任何意义,而只是多个单位用同样的公式得到效用值之后互相比较才会使效用值变得有效。

在经过长时间的努力之后,我们得到了我们需要的公式,但是不要沾沾自喜,因为做了这些仅仅是个开始,因为之后我们还需要大量的测试,反复的验证,验证我们的公式。这也同样证明了一个问题,就是我不会保证我上面陈述的公式细节会是正确的,当然,我也不会将我的最终结论拿出来公布,因为这没有意义,我们更多的是需要一种思维方式的交流,而并非结果,更何况最终的公式,也会由于种种原因而在其他的环境下变得不适用,每一个新的项目,恐怕我们不得不重新做这样的工作,重新做这种枯燥的“测试←→调整”,再这个过程之中,很可能的情况,就是测试结果完全不像公式所预期的那样,而自己却无论如何也找不到原因,这恐怕是最折磨人的一个经历了,我保守的估计一下,恐怕所有的数值策划都曾经或长或短的经历过这样的过程,在这样的压力下工作着,这对心理也应该可以称作是一个考验吧。

到这里基本就可以了吧,我已经将我的公式设计的思路全部整理出来了,请大家准备好砖头瓦块……

 

名词解释:

①硬直:日本格斗类游戏中出现的技术名词,指某一个单位在做某动作之后产生的无法做任何行动(包括防御)的一个时间段

②召唤建筑:《魔兽争霸3》中的设定,不死族的建筑是召唤出来的,也就是召唤建筑的农民不需要在这个过程中可以随意行动。

③序列动作:《魔兽争霸3》中的设定,玩家操作一个或一组单位的时候,可以按住SHIFT指定其下一步甚至几步的操作,而被操作单位会按照这个操作的顺序依次完成指令。

H&RHit and Run,打带跑战术,其中最著名的微操范例当属星际争霸中的龙骑舞。

⑤砖头瓦块:显然,是一种,呃……或者说是若干种的暴力工具……

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引