本帖最后由 tryotryotryo 于 2017-9-2 20:00 编辑
【前言】:
在早前論壇上就有許多戰役中包含了潛伏效果,但基本上表現都不盡理想。這類的效果最大的課題是在於利用觸發去分辯出敵方有沒有注意到我方。而唯一目前出應用在戰役上的方法就只有窮舉法。但基本上都有漏洞。而早先在1.4 AI新語句問世之後,在下也試圖用AI取代窮舉法。但其複雜度並沒有下降多少,且由於AI位置計算上是以格為單位,因此不精確性也是一樣相當高。因此這個問題就這樣一直懸而未決。直到數月前在下考慮加入MOD時,才找得了一個真正意義上的解答。
此文考慮的,是基於MOD與004版本的EXE效果所能設計的結果。所以製做上需要有基本AGE修改知識、004觸發的基本掌握,以及需要1.4版本AI的相關知識。
【原理與製做】:
潛伏效果本身就是要表現出"敵人看到我=>改權敵人來攻擊我"。而最困難的事情就是如何判別一個敵人"看到"我。這裡我們要哲學性的思考這個問題:假設有AB兩個單位,什麼情況下A會"看到"B?這裡我們假設有個體積很小、速度很快的單位X從A出發走到B,如果途中都沒遇到障礙物,則X應該是走直線從A到B,此時A就會"看到"B。換句話說:如果X走直線=>看得到;X走了非直線=>看不到。
因此當前問題就變成"如何區分X走的是不是直線?" 換句話說我們必須把直線與非直線區分開來。而所有非直線的路徑都會有轉折,因此我們只要設計一個單位它的行為在轉折時非常困難,換句話說就是旋轉速度十分緩慢。這樣一來這個單位就可以用來偵測B與A之間的障礙性。
舉例來說,如果我們設計X速度為5格每秒,轉速為旋轉π/4需10秒。此後我們利用004版本的觸發系統,讓X每秒瞬移置A處,以A的面向出發,指派到B的位置。(補充說明:此處可能要根據狀況調整X的方向性,因此也許會用到多於1個以上的X單位輪流上場,非上場單位則需要在場外進行旋轉)隨後用AI計算B與X的位置是否重疊並且發回信號。如此一來除非B出現在A面對方向5格以內的位置、且AB間沒有任何障礙物,否則我們就無法偵測到信號。而這個信號就是最粗糙的"可見信號"。
剛剛舉的例子算是比較極端的。在這個例子容許的旋轉量非常小。換句話說只要玩家不在A的正前方視野內(正確來說應該是一個π/4的夾角內),基本上都不會被看見。要改進這部分相當容易,只要調整轉速即可。例如將轉速調整為旋轉π/4需0.5秒。則B的視野夾角就會變為大約π/2,而且在接近外側區域的視野可見距離會變得比較短,如下圖所示。這個設置也比較符合人體的行為(視野外側的物體比較不容易偵測)。但如此設置也會產生一些小問題,這樣設置下玩家所允許的"可視"會從原本"只允許直線"變為"允許加入π/4旋轉的直線"。整體而言如此設置會使A的偵測性會變得更強(也就是玩家必須躲得"更好",否則被發現機率仍然很大)。但這個問題仍舊不大,因為旋轉一次後達到B的路徑必須在0.5秒內走完,換句話說旋轉一次被發現的情況只有在2.5格以內發生。雖然不能被稱為與此問題考慮的視野有關,但此類設置可以被視為"近距離內的偵測性強化"。
紅色區域:設置旋轉為旋轉π/4需10秒,黃色則為轉速調整為旋轉π/4需0.5秒後新增區域。
【結語】: 上述這些數值都可以進行微調整理,事實上在下也還未找出最適合的數值。但這類方法所具有的研究價值是相當高的,所以如果有MOD戰役製做者想要進一步的製做出一個相當強大的潛伏效果戰役,歡迎使用此方法製做(事實上在下也已經著手用於傭兵外傳中了)。
|