关于SLG游戏引入兰切斯特方程的设想
文/幕落流年ミ
前言
兰切斯特方程常用于大型沙盘战场推演,能够较为准确地推算战争中的伤亡和损失情况。设想将其应用于战略游戏中,使战略游戏不再局限于简单的属性冲撞,或许能为玩家带来更加真实直观的游戏体验。
一、兰切斯特方程介绍(摘自维基百科、百度百科)
1914 年,英国工程师兰切斯特(F.W.Lanchester)在研究空战单位最佳编制的“战斗中的飞机”一文中首次提出了著名的兰切斯特方程。该方程最初用于分析交战过程中双方的伤亡比率,后来其应用范围逐渐扩大。
兰切斯特把战斗简化为两种基本情况:远距离交火和近距离集中火力杀伤。在远距离交火时,一方的损失率既与对方兵力成正比,也与己方兵力成正比,用微分方程表示为: [ \begin{cases} \frac{dy}{dt} = -a \times x \times y \ \frac{dx}{dt} = -b \times x \times y \end{cases} ] 其中,(x) 和 (y) 分别代表红军和蓝军的战斗单位数量,(a) 和 (b) 分别为红军和蓝军的平均单位战斗力。因此,双方实力相等的条件为 (a \times x = b \times y)。
二、简单总结
兰切斯特线性定律
近距离交战时,任何一方参战单位数量与参战单位战斗效率成正比,这被称为兰切斯特线性定律。以古代战争中拿长矛的重步兵方阵为例,其中一个士兵只能同时攻击到另一个士兵,每个士兵要么干掉对面的敌人,要么被对面的敌人干掉。在武器(战斗力)无差异的情况下,战后损失将是两支部队之间的数量差。
兰切斯特平方定律
远距离交战时,任何一方参战单位数量与参战单位战斗效率的平方成正比,这被称为兰切斯特平方定律。对于射击性武器在远距离瞄准射击的情况,它们可以射击敌方阵线中的任何敌人,也会被敌方阵线中的任何敌人攻击到。此时,军队消耗的比率只与双方的火力数量有关(假设无战斗力差异)。兰切斯特认为,这样的军队实力不仅与军队数量有关,更与数量的平方有关。
在双方战斗力可以量化的情况下,强大的一方每增长一点,优势将以几何级数递增。下面通过一个简单的例题来说明: 假设有 2000 辆德军坦克围攻 1000 辆苏军坦克,且双方坦克性能完全相同,都没有指挥官。问:德军将损失多少辆坦克才能全歼苏军坦克? 答案是损失 268 辆。计算方式如下: [ \sqrt{a \times X^2 - b \times Y^2} = \sqrt{2000^2 - 1000^2} = 1732 ] [ 2000 - 1732 = 267.9 \approx 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: 设 (a) 代表弓兵质量,(x) 代表弓兵数量,(b) 代表步兵质量,(y) 代表步兵数量。 [ \sqrt{a \times X^2 - b \times Y^2} = \sqrt{3000^2 - 0.8 \times 1500^2} = 2683 ] [ 3000 - 2683 = 317 ]
复杂部队战斗
混战如果严谨地使用兰切斯特方程,式子会比较复杂。但在游戏中,过于复杂的公式可能不会带来良好的体验。这里 (Xi(t)) 为 (X) 方 (i) 类的作战兵力,(A{ij}) 为 (y) 方第 (j) 类武器对 (x) 方第 (i) 类目标的损伤系数,后续还有分配矩阵系数等(此处不详细列出,有兴趣的读者可以自行推算)。
单纯用模型转换可以更简单地推算出结果: 首先,定义双方兵力占比最大的兵种为初始模型;损失兵种按照损失兵力与原有兵力的最大比例分配。(此处还可以进一步细化,例如,步兵伤亡小于 30%,弓兵不损失;或者有骑兵的情况下,步兵伤亡 20%,则开始损失弓兵等设定,以带来更真实的游戏体验为目的)
例如:A 方 弓兵 1000、步兵 1500 VS B 方 弓兵 2000、步兵 1000 [ 函数 = \sqrt{a \times X^2 - b \times Y^2} = 1732 ] 计算可得 B 弓兵剩余 1237,B 步兵剩余 495。
加入游戏通用养成元素
现在,可以加入游戏通用的养成元素,如 SLG 常用的士气、主角属性带入、天气影响、地势系数等。可见,基于此计算方式的游戏,其扩展性并不比单纯的数值碰撞、公式加减乘除要差。
题外话
在做相关研究之前,网上有人测试发现,在《魔兽争霸》中,在不干涉的情况下,10 个步兵打 10 个人族步兵、11 个打 10 个、12 个打 10 个,结果与兰切斯特方程计算出来的结果几乎一样。虽然《魔兽争霸》注重操作,一个老手能很轻松地将消耗降到最低,但在大型战役中,当双方势均力敌时,最终结果毫无疑问将与参战人数、质量等数据挂钩,此时兰切斯特方程将发挥巨大的作用,可以推演出战损以及耗费资源等,以此来进行布局排布。在 SLG 游戏中,如果忽略其战斗表现,最终结果将给玩家带来更加真实的感受。