關于SLG游戲引入蘭切斯特方程的設想
蘭切斯特方程一直是大型沙盤戰場推演所用,能較為準確的推算出戰爭傷亡,損失。可以想象一下,將這個用在戰略游戲,讓戰略游戲不再是簡單的屬性沖撞,會不會帶來更加真實直觀的感受~
一、介紹蘭切斯特方程(摘自維基百科,百度百科)
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游戲中,如果忽略其戰斗表現,最終結果將給玩家更加真實的感受。