Screeps 夾擊戰(zhàn)術(shù)

Screeps Arena 正式上線(xiàn)一段時(shí)間了,筆者主要玩的是SAS模式,這個(gè)模式下,地圖布滿(mǎn)沼澤,高速單位因?yàn)槟軌蜢`活拉扯,受到很多玩家的歡迎。很多玩家都喜歡出滿(mǎn)速的遠(yuǎn)程單位,通過(guò)放風(fēng)箏消耗來(lái)?yè)魵⒔鼞?zhàn)單位。本文將詳細(xì)介紹一種反風(fēng)箏的方法——夾擊,用來(lái)終結(jié)滿(mǎn)速的遠(yuǎn)程單位,原理來(lái)源于Screeps殲滅戰(zhàn)戰(zhàn)術(shù)。戰(zhàn)術(shù)的實(shí)際應(yīng)用還需要經(jīng)過(guò)適當(dāng)?shù)膽?zhàn)力評(píng)估、戰(zhàn)場(chǎng)分析,本文不做討論。本文中使用到的一些參數(shù),并不代表最優(yōu)解,僅作參考。

名詞解釋

在開(kāi)始之前,先對(duì)下文中將會(huì)頻繁使用的一些名詞做一下解釋?zhuān)?/p>

  1. 滿(mǎn)速:move部件數(shù)至少是其他部件數(shù)的5倍,這種配置的單位,在沼澤上不會(huì)產(chǎn)生疲勞,如履平地

  2. 紅球:attack(紅色)+move組成的單位

  3. 藍(lán)球:ranged_attack(藍(lán)色)+move組成的單位

  4. 一體機(jī):ranged_attack+heal+move組成的單位,一邊奶一邊打,俗稱(chēng)一體機(jī)

  5. 鎖定:通過(guò)移動(dòng)己方單位,盡可能讓敵方單位保持在我方單位的某個(gè)方向上,舉個(gè)例子:”讓己方單位在↑方向鎖定敵方單位“,表示通過(guò)移動(dòng)己方單位,讓敵方單位始終處于己方單位的↑方向上

    藍(lán)色為己方單位,紅色為敵方單位

  6. 代價(jià)矩陣:costmatrix,自定義尋路時(shí)使用的參數(shù),地圖上的每個(gè)格子都可以設(shè)定不同的代價(jià)(cost),代價(jià)越高的格子,尋路時(shí)越不容易經(jīng)過(guò)他們

應(yīng)用場(chǎng)景

己方:兩個(gè)滿(mǎn)速的紅球(至少不能比敵方慢)

敵方:一個(gè)藍(lán)球或一體機(jī)

這是最簡(jiǎn)化的模型,實(shí)際戰(zhàn)斗中,通過(guò)合理的配置,2v2,2v3都是可行的。

戰(zhàn)術(shù)的最終目標(biāo)

讓己方紅球貼住敵方單位,就達(dá)成了“反風(fēng)箏”的目的。

戰(zhàn)術(shù)細(xì)節(jié)

先思考一個(gè)問(wèn)題

在什么情況下,己方單位能夠確保在n tick內(nèi)貼住對(duì)方?

最直覺(jué)的想法:當(dāng)敵方單位走進(jìn)死胡同,或者被己方單位包圍的時(shí)候。

死胡同.png

包圍.png

再進(jìn)一步,為什么我們會(huì)覺(jué)得這種情況下,能夠貼住敵方單位?這種想法的本質(zhì)是什么?

當(dāng)敵方單位的“活動(dòng)空間”被我方單位的“活動(dòng)空間”完全覆蓋時(shí),即敵方單位在n tick內(nèi)所有的去處,都能被我方單位在n tick及更短的時(shí)間內(nèi)抵達(dá),就可以認(rèn)為“合圍”已經(jīng)完成了。

對(duì)付被“合圍”的單位,只要鎖定+逼近,就能達(dá)成貼住對(duì)方的目的(一些極端地形除外),詳見(jiàn)Screeps殲滅戰(zhàn)戰(zhàn)術(shù)

img

合圍機(jī)會(huì)的嗅探

在實(shí)際戰(zhàn)場(chǎng)中,隨著戰(zhàn)斗的推進(jìn),合圍的機(jī)會(huì)轉(zhuǎn)瞬即逝,如果能抓住這些機(jī)會(huì),取得擊殺,那就再好不過(guò)了。然而常規(guī)方法計(jì)算合圍機(jī)會(huì)的復(fù)雜度相當(dāng)高,筆者提供一種O(n)復(fù)雜的算法,來(lái)嗅探這些機(jī)會(huì)。

  1. 首先設(shè)定一個(gè)機(jī)會(huì)嗅探參數(shù)n,這表示n tick內(nèi)的合圍機(jī)會(huì)
  2. 找出己方所有可以參與合圍的單位,給這些單位進(jìn)行二進(jìn)制編號(hào):1,2,4,8 ....
  3. 新建一個(gè)空的代價(jià)矩陣,輪詢(xún)這些單位
    1. 仿真出該單位n-1tick內(nèi)所有可抵達(dá)的位置(用n-1是增加機(jī)會(huì)的可靠性)
    2. 在代價(jià)矩陣中,將這些位置上的代價(jià)加上該單位的編號(hào)數(shù)值
  4. 找出敵方所有你想合圍的單位
  5. 輪詢(xún)這些單位
    1. 仿真出該單位n tick內(nèi)所有可抵達(dá)的位置
    2. 查詢(xún)代價(jià)矩陣中這些位置的代價(jià)值:如果所有位置代價(jià)值都>0,說(shuō)明該單位已經(jīng)被合圍
    3. 如果單位已經(jīng)被合圍,可以通過(guò)代價(jià)值反查出參與合圍的己方單位,比如 3 = 2 + 1, 這就表示該位置,第一個(gè)和第二個(gè)己方單位都可以抵達(dá)

實(shí)際運(yùn)用中,可能會(huì)出現(xiàn)互相沖突的機(jī)會(huì),這時(shí)候需要評(píng)估目標(biāo)的優(yōu)先級(jí),再?zèng)Q定如何利用這些機(jī)會(huì),這里不做展開(kāi)。

達(dá)成合圍

1 v 1情況下的合圍,基本要依靠對(duì)方的走位失誤,自己走進(jìn)死胡同,這種機(jī)會(huì)一旦出現(xiàn),就可以嗅探出來(lái)并加以利用,但是在大多數(shù)情況下,要完成合圍,至少需要 2 v 1。像鉗子一樣,壓縮敵人的活動(dòng)空間,并完成合圍,筆者將其稱(chēng)之為夾擊戰(zhàn)術(shù)。

合圍過(guò)程中的注意點(diǎn)

  1. 條件允許之前,不要和敵方的遠(yuǎn)程單位靠得太近,盡量不被消耗血量,保持速度

  2. 己方單位盡量分開(kāi)行動(dòng),分開(kāi)才能更好壓縮敵人的活動(dòng)空間

  3. 如果對(duì)方頭也不回地逃跑,那也是追不上的

這里需要先介紹一種實(shí)用的鎖定技巧:通過(guò)設(shè)置代價(jià)矩陣,來(lái)引導(dǎo)單位在特定方向上鎖定敵人

合圍1.png

上圖中,藍(lán)色代表己方單位,紅色代表敵方單位,如果希望藍(lán)球在←方向上鎖定敵方單位,可以這樣設(shè)置代價(jià)矩陣:調(diào)高安全邊界內(nèi),非鎖定方向上的cost,讓creep尋路時(shí)更傾向于找到該方向的路。

合圍2.png

當(dāng)己方單位處于安全邊界內(nèi),即有受到傷害的風(fēng)險(xiǎn),也可以用類(lèi)似的方法,邊逃離,邊鎖定方向。

合圍3.png

在掌握了這種技巧之后,接下來(lái)講講如何確定鎖定的方向

確定鎖定的方向

首先考慮最簡(jiǎn)單的情況,敵方單位在我方兩個(gè)單位的連線(xiàn)附近,這種情況可以近似認(rèn)為是合圍成功,直接按照當(dāng)前方向鎖定并推進(jìn)即可:

合圍4.png

其他的情況,都需要將當(dāng)前的方向進(jìn)行適當(dāng)?shù)男D(zhuǎn),作為鎖定的方向。這里推薦是都旋轉(zhuǎn)45度。

合圍5.png

值得注意的是:鎖定的方向不是固定的,他是根據(jù)實(shí)際的位置關(guān)系旋轉(zhuǎn)后實(shí)時(shí)計(jì)算得來(lái)的,相對(duì)位置發(fā)生變化后,鎖定的方向也會(huì)跟著變。通過(guò)不斷旋轉(zhuǎn)鎖定的角度,最終促使合圍完成。

在己方的單位比較靠近的時(shí)候,容易出現(xiàn)這種互相交叉的鎖定方向,需要避免這種情況的發(fā)生。

合圍6.png

如果過(guò)程順利,敵方單位要么提前被嗅探到合圍的機(jī)會(huì)(因?yàn)榈匦蔚脑颍?,要么處于己方單位的連線(xiàn)中間(兩個(gè)鎖定方向的夾角為180°),形成近似合圍。

如果敵方頭也不回地逃跑,兩個(gè)鎖定方向的夾角則無(wú)法增大到180°,合圍也就無(wú)法完成。

因此,在實(shí)戰(zhàn)中,這種戰(zhàn)術(shù)對(duì)付藍(lán)球的效果要比對(duì)付農(nóng)民等非戰(zhàn)力單位的效果好,因?yàn)榍罢呖偸腔仡^想反殺,但這往往會(huì)加速合圍的過(guò)程。

結(jié)語(yǔ)

整個(gè)戰(zhàn)術(shù)從靈感發(fā)展成可執(zhí)行的方案是最有意思的部分,而代碼的實(shí)現(xiàn)和調(diào)參相對(duì)乏味枯燥(所以也鴿了很久),所以筆者把思考的過(guò)程分享出來(lái),希望能對(duì)大家有所啟發(fā)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容