troytroytroy 发表于 2017-8-14 14:37:01

潛伏效果:從MOD與004觸發談起

本帖最后由 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戰役製做者想要進一步的製做出一個相當強大的潛伏效果戰役,歡迎使用此方法製做(事實上在下也已經著手用於傭兵外傳中了)。

狂~劇情狂 发表于 2017-8-14 19:04:46

沒理解錯的話,大概設定步驟如下:

1. 用MOD增加一個移速快、轉速慢的隱形單位X(要有體積)
2. 讓X持續瞬移至從監視單位A的位置
3. 目標單位B進入A的視野範圍/方向時,讓X向B移動
4. 如果X順利到達B的位置,代表A與B之間無障礙物,A看見B而變成敵人

優化方向除了微調外其實還有很多方法,比如:

1. 讓玩家可以選快步或隱匿移動,而選擇前者時X無體積
2. 判定看見毋須單次立即成立,而是分成二至四個階段,並且每次都在A的頭上建立慢慢變大的感歎號標示
3. 利用軌跡單位圖像讓玩家知道判定範圍

我是谁004 发表于 2017-8-14 23:04:37

其实传送的触发1.5也有了,虽然只能传送一个单位,而且受到空间影响,但可以通过选择单位近旁的空地来解决。

我还想到了另一种办法,就是在源单位A处不断发射抛射物X至不断跟踪B的隐形单位C,且抛射物X会被其他单位阻挡。若A的抛射物伤害了C,那么就认为A发现了B。

另外,我曾测试过,旋转速度极大的单位,它会在首次移动的时候变为朝着右上角,从而花费额外的旋转时间。

troytroytroy 发表于 2017-8-14 23:25:09

我是谁004 发表于 2017-8-14 23:04
其实传送的触发1.5也有了,虽然只能传送一个单位,而且受到空间影响,但可以通过选择单位近旁的空地来解决 ...

我知道up1.5有傳送,但它沒有轉向。這點比起來比不上004你的exe有效。你所說的方法則完全無視方向性了(背後長眼睛?)。

速度極快旋轉會失常是多快?我想5格/秒可能和你的極快之間有很大的差距。

我是谁004 发表于 2017-8-14 23:31:34

本帖最后由 我是谁004 于 2017-8-14 23:34 编辑

tryotryotryo 发表于 2017-8-14 23:25
我知道up1.5有傳送,但它沒有轉向。這點比起來比不上004你的exe有效。你所說的方法則完全無視方向性了( ...
我测试的时候用的是max(正无穷)。另外,我的那个触发效果只能改单位图像的方向,不能改实际的朝向。

troytroytroy 发表于 2017-8-15 00:05:05

我是谁004 发表于 2017-8-14 23:31
我测试的时候用的是max(正无穷)。另外,我的那个触发效果只能改单位图像的方向,不能改实际的朝向。

好吧,那看起來只能增加X的數量然後用指派觸發進行方向調整了
页: [1]
查看完整版本: 潛伏效果:從MOD與004觸發談起