關(guān)于SLG游戲引入蘭切斯特方程的設(shè)想
蘭切斯特方程一直是大型沙盤戰(zhàn)場(chǎng)推演所用,能較為準(zhǔn)確的推算出戰(zhàn)爭(zhēng)傷亡,損失??梢韵胂笠幌?,將這個(gè)用在戰(zhàn)略游戲,讓戰(zhàn)略游戲不再是簡(jiǎn)單的屬性沖撞,會(huì)不會(huì)帶來(lái)更加真實(shí)直觀的感受~
一、介紹蘭切斯特方程(摘自維基百科,百度百科)
1914年英國(guó)工程師蘭切斯特(F.W.Lanchester)在研究空戰(zhàn)單位最佳編制的“戰(zhàn)斗中的飛機(jī)”一文中率先提出了其著名的蘭切斯特方程。
開(kāi)始是用于分析交戰(zhàn)過(guò)程中的雙方傷亡比率,后用途逐漸推廣。
蘭切斯特把戰(zhàn)斗簡(jiǎn)化為兩種基本情況:遠(yuǎn)距離交火和近距離集中火力殺傷。遠(yuǎn)距離交火時(shí),一方損失率既和對(duì)方兵力成正比,也和己方兵力成正比,以微分方程表示即為:
dy/dt=-a*x*y
dx/dt=-b*x*y
其中x和y分別為紅軍和藍(lán)軍的戰(zhàn)斗單位數(shù)量,a和b分別為紅軍和藍(lán)軍的平均單位戰(zhàn)斗力,因此雙方實(shí)力相等的條件為:
a*x=b*y
二、簡(jiǎn)單總結(jié)
近距離交戰(zhàn)時(shí),任何一方參戰(zhàn)單位數(shù)量與參戰(zhàn)單位戰(zhàn)斗效率成正比,概稱之為蘭切斯特線性定律;
(對(duì)于古代戰(zhàn)爭(zhēng),拿長(zhǎng)矛的重步兵方陣,其中一個(gè)士兵只能同時(shí)攻擊到另一個(gè)士兵。每個(gè)士兵只能要么干掉對(duì)面的,要么被對(duì)面的干掉,那么戰(zhàn)后損失將是兩支部隊(duì)之間的數(shù)量差,在武器(戰(zhàn)斗力)無(wú)差異的情況下。)
遠(yuǎn)距離交戰(zhàn)時(shí),任何一方參戰(zhàn)單位數(shù)量與參戰(zhàn)單位戰(zhàn)斗效率的平方成正比,概稱之為蘭切斯特平方定律。
(對(duì)于射擊性武器在遠(yuǎn)距離瞄準(zhǔn)射擊的情況下,他們可以射擊敵方陣線中的任何敵人,也會(huì)被地方陣線中的任何敵人攻擊到。這時(shí)軍隊(duì)消耗得比率將之于雙方的火力數(shù)量有關(guān)(假設(shè)無(wú)戰(zhàn)斗力差異)。蘭切斯特認(rèn)為這樣的軍隊(duì)的實(shí)力不只與軍隊(duì)的數(shù)量,而是與數(shù)量的平方有關(guān)。)
在雙方戰(zhàn)斗力可以量化的情況下,強(qiáng)大的一方每增長(zhǎng)一點(diǎn),優(yōu)勢(shì)是以幾何遞增。
簡(jiǎn)單舉個(gè)例題說(shuō)明吧:
2000輛德軍坦克圍攻1000輛蘇軍坦克,假設(shè)雙方坦克的性能一模一樣,雙方都沒(méi)有指揮官,問(wèn):德軍將損失多少輛坦克才能全殲蘇軍坦?
答案是損失268。
計(jì)算方式如下:
sqrt(a*X^2-b*Y^2)=sqrt(2000^2-1000^2)=1732
2000-1732=267.9=268
三、關(guān)于帶入SLG游戲的應(yīng)用設(shè)想
跟朋友討論某當(dāng)紅slg手游,由于沒(méi)有戰(zhàn)斗表現(xiàn),依舊玩的樂(lè)此不疲,所以數(shù)值尤為重要,覺(jué)得有些東西可以拉出來(lái)談?wù)?,關(guān)于此方程與游戲的關(guān)系,并且能給游戲帶來(lái)什么樣不同的感受,還有就是方程的擴(kuò)展性。
首先建立一個(gè)簡(jiǎn)單的模型吧。
規(guī)則
-
克制系數(shù)關(guān)系
-
弓克騎
-
騎克步
-
步克弓
-
隨手拍的,克制系數(shù)為1.2
此系數(shù)直接用來(lái)量化方程的其他不穩(wěn)定因素,例如,射程,移動(dòng)速度,士兵氣血差距,攻擊速度等,兵力消耗或者補(bǔ)給消耗都默認(rèn)為自然損耗狀態(tài)。(克制系數(shù)可等價(jià)抵消:1步兵=0.8弓兵=1.2騎兵)
結(jié)合以上條件,可以確定一個(gè)思路,將模型盡量統(tǒng)一化,用克制系數(shù)來(lái)然后用方程去計(jì)算戰(zhàn)斗結(jié)果,由于是游戲并非實(shí)戰(zhàn),我們可以很主觀的定義,游戲中每個(gè)單位,在每場(chǎng)戰(zhàn)斗中,至始至終都能發(fā)揮出本身能發(fā)揮的作用,所以此處用平方率,不涉及線性定律。
首先最簡(jiǎn)單的:
步兵 10 VS 步兵 10
在統(tǒng)一前提條件下,毫無(wú)疑問(wèn)會(huì)是勢(shì)均力敵。
下面來(lái)為一方增加一點(diǎn)優(yōu)勢(shì):
步兵 10 VS 步兵 11
sqrt(11^2-10^2)=4
增加1個(gè)的兵力,就能多保住三個(gè)步兵。
弓兵 3000 VS 步兵 1500
sqrt(a*X^2-b*Y^2)=sqrt(3000^2-0.8*1500^2)=2683
為了更加易懂,a代表弓兵質(zhì)量,x代表弓兵數(shù)量,b代表步兵質(zhì)量,y代表步兵數(shù)量。
3000-2683=317
接著,可以看看復(fù)雜一點(diǎn)的部隊(duì)?wèi)?zhàn)斗。
混戰(zhàn)如果嚴(yán)謹(jǐn)?shù)氖褂锰m切斯特方程,式子大概是這樣:
但是游戲歸游戲,公式再?gòu)?fù)雜,帶來(lái)的體驗(yàn)不一定會(huì)很好。這里面Xi(t)為X方i類的作戰(zhàn)兵力,Aij為y方第j類武器對(duì)x方第i類目標(biāo)的損傷系數(shù),下面可以類推,接著就是分配矩陣系數(shù)(不寫了,免得有人噴我,有興趣的可以接著推算下去~)
單純用模型轉(zhuǎn)換可以更加簡(jiǎn)單的推算出結(jié)果:
首先,定義為雙方兵力占比最大的兵種為初始模型;
損失兵種按照損失兵力與原有兵力最大比例分配。
(此處可以再?gòu)?fù)雜一些,例如,步兵傷亡小于百分之30,弓兵不損失,或者有騎兵情況下,步兵傷亡百分之20,則會(huì)開(kāi)始損失弓兵等設(shè)定,以帶來(lái)更加真實(shí)的體驗(yàn)為目的)
A方 弓兵 1000 步兵 1500 VS B方 弓兵 2000 步兵 1000
函數(shù)=sqrt(a*X^2-b*Y^2)=1732
B弓兵剩余1237
B步兵剩余495
到了這里,大概計(jì)算應(yīng)該都沒(méi)有什么問(wèn)題了,現(xiàn)在,我們可以加入游戲通用的養(yǎng)成元素,SLG常用的,例如,士氣,主角屬性帶入,天氣影響,地勢(shì)系數(shù)等等,可見(jiàn)基于此計(jì)算方式上面的游戲,擴(kuò)展性不比數(shù)值碰撞,公式加減乘除來(lái)的少。
題外話~
做這個(gè)之前,網(wǎng)上看到有人測(cè)試,魔獸爭(zhēng)霸里面,在不干涉情況下,10個(gè)步兵打10個(gè)人族步兵,11個(gè)打10個(gè),12個(gè)打十個(gè)~結(jié)果與蘭切斯特方程計(jì)算出來(lái)的結(jié)果幾乎一樣。雖然魔獸爭(zhēng)霸注重操作,一個(gè)老手能很輕松的將消耗降到最低,但是在大型戰(zhàn)役中,雙方如果勢(shì)均力敵,結(jié)果最后毫無(wú)疑問(wèn)將會(huì)與參戰(zhàn)人數(shù),質(zhì)量等數(shù)據(jù)掛鉤,此時(shí)方程將會(huì)發(fā)揮出巨大的作用,可以推演出戰(zhàn)損以及耗費(fèi)資源等,以此來(lái)布局排布,在slg游戲中,如果忽略其戰(zhàn)斗表現(xiàn),最終結(jié)果將給玩家更加真實(shí)的感受。