AI攻击的第二种方式——TSA!
今天闲来无事,手有点痒,就写下了这篇东西,11!这MS是我的第二篇教程,希望大家喜欢。大家看到标题可不要误会,这TSA可不是全港性系統評估 (Territory-wide System Assessment),而是town-size-attack的缩写。
那么,什么是town-size-attack呢?
也许你看别的AI的时候,会觉得有的地方很奇怪:
明明没有attack-now语句(或者进攻兵力只是百分之一),却还会进攻?
而且对方的进攻好强啊!一个个兵都是单独控制,整体又好像潮水一般涌过来!(没见过?去下一个ARFFI_05_Eyries看看?下载地址https://aok.heavengames.com/blacksmith/getfile.php?id=10020&dd=1&s=e739aa577baec814e2531a378020910e 只能用AZTEC)
而为什么我的AI进攻只是一队队的上去呢?而且还老是卡住?而对方的几乎不会?
如果你有这个疑问,就应当看看本文章了。
====================================================================以下开始解释========================================================================
顾名思义,所谓town-size-attack 就是城镇范围攻击。
不知你们有没有注意到,当敌人入侵的时候,AI可是会毫不留情地攻击进入它城镇范围的敌人!而且那时候的攻击丝毫没有停顿。那可是相当厉害啊!
咦?如果把这一个应用在进攻的时候,岂不是很好吗?这样就可以轻松地干掉别人了!
如果你想到了这一点,你离成功已经近了一步了。
如果把城镇范围设大一点,那么本来的敌人的建筑,在AI看来也是入侵者,AI就会给予痛击啦!哈哈!
所以,我们只要不断扩大城镇范围,进行攻击就可以啦!
那么,具体的语句是怎么样的呢?
请看下列代码:
(defrule
;定义规则,每个规则都要用到。
(goal attack-goal attacking-now)
;这代码的意思是 目标编号为(attack-goal的值)的目标,它的值为 (attacking-now的值)的时候
;其实你可以无视掉这一行,反正只要知道,要攻击的时候,这一行就会成立。如果想了解更多关于goal的可以看我的另外一篇文章。
(sn-maximum-town-size == 40)
;这一行的意思是,当策略值sn-maximum-town-size的值是40的时候
;sn-maximum-town-size 是TSA的灵魂 ,它是一个重要的策略值,决定了最大城镇规模
;我们就是通过不断扩大他来达到TSA
(not(enemy-buildings-in-town))
;这一行也是TSA的灵魂,它的意思是,敌人的建筑物不在最大城镇规模的范围里。
;其实这行很好理解,最大城镇规模里没有敌人建筑物,当然打不到啦!就要继续扩大开打。
=>
;这个箭头是条件和结果的分界。上面为条件,下面为结果,当条件成立就会触发下面的结果。
(set-strategic-number sn-maximum-town-size 45)
;把最大城镇范围设置成45,也就是说当城镇范围是40,然后又找不到人打,就扩大范围
(chat-to-all "Town-size-attack: 45")
;对全部人说"Town-size-attack: 45",可以无视
)
;关闭规则,每个规则都要有
;下面语句的作用等同,也是不断扩大规模。
(defrule
(goal attack-goal attacking-now)
(strategic-number sn-maximum-town-size == 45)
(not(enemy-buildings-in-town))
=>
(set-strategic-number sn-maximum-town-size 50)
(chat-to-all "Town-size-attack: 50")
)
(defrule
(goal attack-goal attacking-now)
(strategic-number sn-maximum-town-size == 50)
(not(enemy-buildings-in-town))
=>
(set-strategic-number sn-maximum-town-size 55)
(chat-to-all "Town-size-attack: 55")
)
(defrule
(goal attack-goal attacking-now)
(strategic-number sn-maximum-town-size == 55)
(not(enemy-buildings-in-town))
=>
(set-strategic-number sn-maximum-town-size 60)
(chat-to-all "Town-size-attack: 60")
)
看,通过这样一弄,TSA就达成了!
============================================================================以下为注意事项===================================================================================
1.TSA并不是完美的,由于兵力分散,不太建议你用少数部队去冲击,容易被逐个击破。所以TSA往往要和ATTACK-NOW配合一起动作。就是又用TSA又用ATTACK-NOW,这样进攻可以更强大。因为ATTACK-NOW是可以集群冲击的。另外TSA最好也是兵多一点才用,几个兵的话完全是送死……如果兵的数量很多时候用TSA,将十分壮观……
2.由于建的建筑的位置也依赖TSA,所以尽量要在大体建设完成之后才发动TSA的进攻(封建MS也可以,推荐城堡,帝王的话太晚了。其实一般AI帝王时代的TS都已经三四十左右了)。其实这个倒也没有什么所谓的。
3.暂时想不到
就这些吧,到时候再补充。
谢谢大家的赏读,再见。
_Hawk_老胡
2009.1.9 13:30 同楼上- -
唉,老胡辛苦了!:35: 谢谢大家的鼓励……不辛苦不辛苦…… 學到新東西了,謝謝老胡同志!:43: 。。。。
其实这个东西用在战役里很不好的……很容易出错
主要是用在对战AI 嗯,這個功能的確比單一的attack-now好多了,只attack-now會使電腦常常對敵人的兵視而不見 TSA在1VS是非常完美的,其最大的缺点,就是按照代码触发条件,只会攻击距离最近的敌人,造成在多人局中双方两两缠斗的现象,这在著名的AI对战时经常看到。
attack-now的好处是可以多家盟友联合起来打一家,缺点异界行者也说过了,在达到目的地前对受到的攻击视而不见,在4vs4时,经常出现电脑从一家敌人城镇中穿过去打另一家敌人,还没到攻击位置就已经损失惨重。我想到的改进方法是在执行attack-now后,把sn-enemy-sighted-response-distance调到最大(250),这样后续的攻击部队就以救援的方式来进攻,不知大家以为然否? 实际上个人觉得这个值不宜过大。否则有可能出现敌人进攻时候占优势,AI的兵不断冲上去送死的情况。而且有时执行ATTACK-NOW后如果前面兵被打可能会后面的兵不断冲上前线…(BTW,记得BOOM2就是有一些代码,当敌人兵多到一定程度,自己兵少到一定程度就把这个弄小以免兵送死)。总之我觉得这个不应该弄太大。 意思是如果占优势就好,但如果处于劣势就可能会造成白白损失 TSA进攻过程中好像存在优先拆领地内建筑的问题。:40:
以我自己试验的TSA和ATTACK NOW对攻的效果来说,TSA的进攻性和目标性都强于ATTACK NOW,但是进攻效率非常差。
在1v1的近点中,只要能保证兵力充足,例如一波流,感觉response-distance攻击效果最好。
然后三者的共用缺点是在确立了自己的目标后,对于中途受到的打击都置之不理。
因为ATTACK NOW设置的攻击距离最长,所以最不利。RD则最好。但是超过200人左右时RD非常卡。
而据点防守来说,反而是反复ATTACK NOW似乎效果和RD不相上下。
不过无意于对战AI。时常想要是帝国有星际中产生单位巡逻一路A的功能就好了。
[ 本帖最后由 Ru43 于 2010-1-11 21:53 编辑 ] TSA就是步步蚕食的,不断压榨对方生存空间,而取得胜利。这样进攻效率自然会低。但是敌人要反攻也不容易。RD的话个人觉得,如果兵力占较大优势,rd是比TSA和 ATTACK-NOW好一点。RD的特点就相当于进展加快的TSA吧,不过也有缺点就是面对反抗,如无法确立优势可能会被反推。一旦被对手反领先,就最好不要用rd吧。 ATTACK-NOW的缺点就是进攻时一顿一顿的 原帖由 guanguancan 于 2010-2-1 21:13 发表 https://www.hawkaoe.net/bbs/images/common/back.gif
ATTACK-NOW的缺点就是进攻时一顿一顿的
久仰前辈大名!
一顿一顿确实是ATTACT-NOW的缺点之一 此外还有死板不会变通 被打不还手等 请问这个代码如果在自定义地图使用会不会出现死机的情况,因为ARFFI_05_Eyries就是无法在自定义地图使用 应该不会吧
不能使用主要是因为ALB是主流
各种AI一般都是针对ALB上的资源位置确定采集距离 出兵类型 采集比例等等
所以换了地图也能运作 但是效果非常不好 我还是喜欢直接在别人家开花- -马上给我消失 记得我没看这帖子的时候,我把MTS搞得很大,没有用build-forward,居然AI把塔建到敌人TC不足8格的距离,因为测试的时候进攻失利,所以也没在意. 城镇如果太大,建筑物岂不到处乱建?农民还没到可能就死了 可以建建筑物前暂时设置回来
当然发动TSA的时候一般都是建筑建造完了后的 所以不会发生这种问题 强烈鄙视自加自精华的 .
页:
[1]
2