首页 >游戏开发

关于SLG游戏引入兰切斯特方程的设想

2015-08-28 09:28 编辑: cocopeng 分类:游戏开发 来源:GAD

QQ截图20150827180650.jpg

文/幕落流年ミ

前言:兰切斯特方程一直是大型沙盘战场推演所用,能较为准确的推算出战争伤亡,损失。可以想象一下,将这个用在战略游戏,让战略游戏不再是简单的属性冲撞,会不会带来更加真实直观的感受~

一、介绍兰切斯特方程(摘自维基百科,百度百科)

1914年英国工程师兰切斯特(F.W.Lanchester)在研究空战单位最佳编制的“战斗中的飞机”一文中率先提出了其著名的兰切斯特方程。

开始是用于分析交战过程中的双方伤亡比率,后用途逐渐推广。

兰切斯特把战斗简化为两种基本情况:远距离交火和近距离集中火力杀伤。远距离交火时,一方损失率既和对方兵力成正比,也和己方兵力成正比,以微分方程表示即为:

dy/dt=-a*x*y

dx/dt=-b*x*y

其中x和y分别为红军和蓝军的战斗单位数量,a和b分别为红军和蓝军的平均单位战斗力,因此双方实力相等的条件为:

a*x=b*y

二、简单总结

近距离交战时,任何一方参战单位数量与参战单位战斗效率成正比,概称之为兰切斯特线性定律;

(对于古代战争,拿长矛的重步兵方阵,其中一个士兵只能同时攻击到另一个士兵。每个士兵只能要么干掉对面的,要么被对面的干掉,那么战后损失将是两支部队之间的数量差,在武器(战斗力)无差异的情况下。)

QQ截图20150827180822.jpg

远距离交战时,任何一方参战单位数量与参战单位战斗效率的平方成正比,概称之为兰切斯特平方定律。

(对于射击性武器在远距离瞄准射击的情况下,他们可以射击敌方阵线中的任何敌人,也会被地方阵线中的任何敌人攻击到。这时军队消耗得比率将之于双方的火力数量有关(假设无战斗力差异)。兰切斯特认为这样的军队的实力不只与军队的数量,而是与数量的平方有关。)

QQ截图20150827180840.jpg

在双方战斗力可以量化的情况下,强大的一方每增长一点,优势是以几何递增。

简单举个例题说明吧:

2000辆德军坦克围攻1000辆苏军坦克,假设双方坦克的性能一模一样,双方都没有指挥官,问:德军将损失多少辆坦克才能全歼苏军坦?

答案是损失268。

计算方式如下:

sqrt(a*X^2-b*Y^2)=sqrt(2000^2-1000^2)=1732

2000-1732=267.9=268

三、关于带入SLG游戏的应用设想

跟朋友讨论某当红slg手游,由于没有战斗表现,依旧玩的乐此不疲,所以数值尤为重要,觉得有些东西可以拉出来谈谈,关于此方程与游戏的关系,并且能给游戏带来什么样不同的感受,还有就是方程的扩展性。

首先建立一个简单的模型吧。

规则

  • 克制系数关系

  • 弓克骑

  • 骑克步

  • 步克弓

  • 随手拍的,克制系数为1.2

144640p72po41jz3rkcprp.jpg

此系数直接用来量化方程的其他不稳定因素,例如,射程,移动速度,士兵气血差距,攻击速度等,兵力消耗或者补给消耗都默认为自然损耗状态。(克制系数可等价抵消:1步兵=0.8弓兵=1.2骑兵)

结合以上条件,可以确定一个思路,将模型尽量统一化,用克制系数来然后用方程去计算战斗结果,由于是游戏并非实战,我们可以很主观的定义,游戏中每个单位,在每场战斗中,至始至终都能发挥出本身能发挥的作用,所以此处用平方率,不涉及线性定律。

首先最简单的:

步兵 10 VS 步兵 10

在统一前提条件下,毫无疑问会是势均力敌。

下面来为一方增加一点优势:

步兵 10 VS 步兵 11

sqrt(11^2-10^2)=4

增加1个的兵力,就能多保住三个步兵。

弓兵 3000 VS 步兵 1500

sqrt(a*X^2-b*Y^2)=sqrt(3000^2-0.8*1500^2)=2683

为了更加易懂,a代表弓兵质量,x代表弓兵数量,b代表步兵质量,y代表步兵数量。

3000-2683=317

接着,可以看看复杂一点的部队战斗。

混战如果严谨的使用兰切斯特方程,式子大概是这样:

14464149uxnd1l0ru04lt0.png

但是游戏归游戏,公式再复杂,带来的体验不一定会很好。这里面Xi(t)为X方i类的作战兵力,Aij为y方第j类武器对x方第i类目标的损伤系数,下面可以类推,接着就是分配矩阵系数(不写了,免得有人喷我,有兴趣的可以接着推算下去~)

单纯用模型转换可以更加简单的推算出结果:

首先,定义为双方兵力占比最大的兵种为初始模型;

损失兵种按照损失兵力与原有兵力最大比例分配。

(此处可以再复杂一些,例如,步兵伤亡小于百分之30,弓兵不损失,或者有骑兵情况下,步兵伤亡百分之20,则会开始损失弓兵等设定,以带来更加真实的体验为目的)

A方 弓兵 1000 步兵 1500 VS B方 弓兵 2000 步兵 1000

144641xcfnk2xird12idxj.jpg

函数=sqrt(a*X^2-b*Y^2)=1732

B弓兵剩余1237

B步兵剩余495

到了这里,大概计算应该都没有什么问题了,现在,我们可以加入游戏通用的养成元素,SLG常用的,例如,士气,主角属性带入,天气影响,地势系数等等,可见基于此计算方式上面的游戏,扩展性不比数值碰撞,公式加减乘除来的少。

题外话~

做这个之前,网上看到有人测试,魔兽争霸里面,在不干涉情况下,10个步兵打10个人族步兵,11个打10个,12个打十个~结果与兰切斯特方程计算出来的结果几乎一样。虽然魔兽争霸注重操作,一个老手能很轻松的将消耗降到最低,但是在大型战役中,双方如果势均力敌,结果最后毫无疑问将会与参战人数,质量等数据挂钩,此时方程将会发挥出巨大的作用,可以推演出战损以及耗费资源等,以此来布局排布,在slg游戏中,如果忽略其战斗表现,最终结果将给玩家更加真实的感受。

搜索CocoaChina微信公众号:CocoaChina
微信扫一扫
订阅每日移动开发及APP推广热点资讯
公众号:
CocoaChina
我要投稿   收藏文章
上一篇:长文解析如何有效地融合游戏玩法与故事
下一篇:开始火爆的SLG:除了出口转内销,还该如何从研发上突破?
我来说两句
发表评论
您还没有登录!请登录注册
所有评论(0

综合评论

相关帖子

sina weixin mail 回到顶部