文/幕落流年ミ

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

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

  1914年英国工程师兰切斯特(F.W.Lanchester)在研究空战单位最佳编制的“战斗中的飞机”一文中率先提出了其著名的兰切斯特方程。
  开始是用于分析交战过程中的双方伤亡比率,后用途逐渐推广。
  兰切斯特把战斗简化为两种基本情况:远距离交火和近距离集中火力杀伤。远距离交火时,一方损失率既和对方兵力成正比,也和己方兵力成正比,以微分方程表示即为:
  dy/dt=-a*x*y
  dx/dt=-b*x*y
  其中x和y分别为红军和蓝军的战斗单位数量,a和b分别为红军和蓝军的平均单位战斗力,因此双方实力相等的条件为:
  a*x=b*y

  二、简单总结

  近距离交战时,任何一方参战单位数量与参战单位战斗效率成正比,概称之为兰切斯特线性定律;
  (对于古代战争,拿长矛的重步兵方阵,其中一个士兵只能同时攻击到另一个士兵。每个士兵只能要么干掉对面的,要么被对面的干掉,那么战后损失将是两支部队之间的数量差,在武器(战斗力)无差异的情况下。)
 

 

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

 


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

  简单举个例题说明吧:
  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

 


  此系数直接用来量化方程的其他不稳定因素,例如,射程,移动速度,士兵气血差距,攻击速度等,兵力消耗或者补给消耗都默认为自然损耗状态。(克制系数可等价抵消: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
  接着,可以看看复杂一点的部队战斗。
  混战如果严谨的使用兰切斯特方程,式子大概是这样:
 


  但是游戏归游戏,公式再复杂,带来的体验不一定会很好。这里面Xi(t)为X方i类的作战兵力,Aij为y方第j类武器对x方第i类目标的损伤系数,下面可以类推,接着就是分配矩阵系数(不写了,免得有人喷我,有兴趣的可以接着推算下去~)
  单纯用模型转换可以更加简单的推算出结果:
  首先,定义为双方兵力占比最大的兵种为初始模型;
  损失兵种按照损失兵力与原有兵力最大比例分配。
  (此处可以再复杂一些,例如,步兵伤亡小于百分之30,弓兵不损失,或者有骑兵情况下,步兵伤亡百分之20,则会开始损失弓兵等设定,以带来更加真实的体验为目的)
  A方 弓兵 1000 步兵 1500 VS B方 弓兵 2000 步兵 1000
 


  函数=sqrt(a*X^2-b*Y^2)=1732
  B弓兵剩余1237
  B步兵剩余495
  到了这里,大概计算应该都没有什么问题了,现在,我们可以加入游戏通用的养成元素,SLG常用的,例如,士气,主角属性带入,天气影响,地势系数等等,可见基于此计算方式上面的游戏,扩展性不比数值碰撞,公式加减乘除来的少。

  题外话~

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