- UID
- 110027
- 阅读权限
- 70
- 注册时间
- 2011-11-4
- 最后登录
- 2016-6-4
- 在线时间
- 242 小时
- 性别
- 男
公爵
- 耕战
- 600
- 鹰币
- 285
- 天龙币
- 0
- 回帖
- 23
|
楼主 |
发表于 2012-1-29 17:18:29
|
显示全部楼层
本帖最后由 忠实帝国粉丝 于 2012-1-29 22:31 编辑
第四篇 进攻方式
(一)士兵状态分类:
1 防守士兵 AI没有执行进攻指令时,处于待机状态。通常处在兵厂旁边或城镇范围内,或城镇受攻击时参于防守的士兵
2 进攻士兵 当然是编入部队进攻敌人的士兵了
3 停顿士兵 执行进攻命令时一顿一顿的士兵
停顿士兵产生原因要从AI给士兵下命令的方法说明:士兵下命令的方法:
(1)AI进攻敌人是先以视野范围内敌人单位为目标发动进攻
(2)其次以视野范围内敌人建筑物为目标发动进攻当
(3)再次视野范围内没有发现敌人单位或建筑就以探测时发现的敌方建筑发动进攻
当以目标发动进攻时,进攻士兵中途遇到敌人单位会无视一直往目标方向进军。当士兵以建筑物为目标,在目标建筑
物附近遭遇到敌人士兵时(大概4格视野范围内)会优先攻击敌人士兵。当进攻士兵对目标发动进攻,而这个目标消失或被
摧毁,进攻士兵就会处于停顿状态,而停顿状态士兵又迟迟不能再编入进攻士兵中,又不能编入防守士兵就严重影响AI的进
攻与防守的效率。人机对战时由于玩家会尽量避免士兵死亡,并龟缩在城堡炮塔附近对抗AI,AI就会有很好的目标发动
进攻潮水般涌来。(应该没有玩家在优势没那么大时拉军队去跟AI野战吧,多多不够死;优势大时,都是直接进攻AI城镇)
两个同样优秀AI对战中,(资源分布差异不大情况下)就经常在两者城镇之间发生缠斗,谁的经济保证好,谁能更好调动
士兵就是取胜关键。
(二)进攻方式分类
1 集队进攻 (调动进攻士兵)即是将士兵集结成队再向敌人目标进攻。
优点:
应该没有什么优点,少量士兵集队或人机对战可能还有一点可取之处,一大队涌过来还是有一定威胁力。
缺点:
(1) 胡乱编队 玩家是编队之后再进攻,比较好控制,不过AI将士兵编队不是按兵种速度、远近程等编队,随机编队,当将
骑士与冲车编成一队、轻骑与驽手编成一队等影响兵种战斗力发挥的就呕气了。
(2) 进攻动作反应缓慢 如果有条规则判断到敌人兵少要马上发动进攻,而集结部队需要一定时间加上与敌人城镇也有一段
距离,这样就比较延误战机了。
(3) 浪费火力 集队进攻攻击任何目标都是一整队一起行动,那怕敌人是一个濒血的投矛系。如果能写一段规则到达敌人目
标时分开攻击,XD了呵呵!
(4) 对机器配置较高 编队士兵数量过大、编队的队列数过多、多个AI对战而每个AI都有采用这种进攻方式“卡”回到286时代了
(5) 缠斗中容易产生停顿士兵(最致命的一点)
使用这种进攻方式的AI: 电脑默认AI
2 分散进攻 (调动进攻士兵) 集队进攻的分开版
优点:
(1)每个士兵意单独控制各自向目标进攻。兵多与兵种速度相近的时候,进攻力一流。AI对战中用于早期、中期
进攻的首选方式。
(2)多个AI对战时能按照(sn-attack-winning-player 攻击积分领先游戏者)专攻其中一个AI。3V3以上AI的对战的首选方式。
缺点:缠斗中容易产生停顿士兵(最致命的一点)
使用这种进攻方式的AI: 只有The Horde真正采用 其中它的匈奴完全就体现到这种方式的威力
3 城镇范围进攻(TSA) (调动防守士兵)
优点:
虽然都会产生停顿士兵相对其它方式而言进攻效率最好一种。(一个花环就能成就最高点,太不公平了!!!)
缺点:
(1)不能有太多士兵参于 最好不要超过110,80-90为佳,参于士兵太多时,产生的停顿士兵更多,达到大概150
以上时甚至罢工。(好像不是缺点吧,没人去造这么多士兵吧)
(2)太过后期才能使用 要等城堡后期城镇成型才能才用。不然就造成建筑物过于分散,兵厂过于分散对于防
守与进攻都不利的。(遇到强势民族还没到出场,就被干掉了)
(3)不能专攻其中一个AI 顾名思义"范围"当然是发现敌人建筑就进攻了。
使用这种进攻方式的AI: 自从我教程发表以后很多AI都有采用TSA了
4 敌视回应距离进攻 (调动防守士兵)
策略值sn-enemy-sighted-response-distance的设定。
这个策略值只能调动没有目标的闲置防守士兵,比较被动的方式,只是城镇范围进攻与防守城镇时的补充。兵多时设为40
左右为最佳,不要设置过大。设置过大也不会有士兵去执行,实践中只会按士兵的基本视野攻击敌人,等于把这个策略
值废了。不防在开启TSA时改大一些,可以提高一下效率。
集队进攻与分散进攻在进攻过程中发生缠斗时很容易产生停顿士兵。在进攻到敌方城镇附近而敌方士兵大幅度减少,
这时视野范围内目标减少,进攻士兵就会以建筑物为目标进攻,停顿士兵会减少,进攻效率又会马上提高。毕竟建筑物耐
抗进攻士兵不容易丢失目嘛。为何AI会调动防守士兵会比调动进攻士兵要好?帝国的AI真的很蠢、很多BUG没有很好的办法
解决,这个游戏可能当初只是设计玩家之间对战,没有考虑到会有人热衷于AI吧!如果AI能做到有玩家一半聪明,都怕很少人
打AI了!
(三)进攻方式设定
其实进攻方式的设定是改变一些策略值的设定 指令attack-now可以只是一个摆设,它要结合(sn-percent-attack-soldiers
攻击士兵比率)使用,等同于(sn-number-attack-groups 攻击部队数量)
例子一 主要控制士兵策略值的基准(不进攻状态)(以下有些策略值如要问我理论鉴于我水平有限,我也不能很好解释,
实践中能提高一定效率)
-------------------------------------------------------------------------------------------------------------------------------------------------
;第1,2组为可按一定条件更改
(defrule
(true)
=>
(set-strategic-number sn-percent-attack-soldiers 0) ; 攻击士兵比率
(set-strategic-number sn-number-attack-groups 0) ; 攻击部队数量
(set-strategic-number sn-maximum-attack-group-size 1) ; 最大进攻部队规模
(set-strategic-number sn-minimum-attack-group-size 1) ; 最小进攻部队规模
(set-strategic-number sn-number-defend-groups 1) ; 防御部队数量
(set-strategic-number sn-maximum-defend-group-size 1) ; 最大防御部队规模
(set-strategic-number sn-minimum-defend-group-size 1) ; 最小防御部队规模
(set-strategic-number sn-enemy-sighted-response-distance 20) 敌视回应距离
(set-strategic-number sn-group-form-distance 0) ; 部队组织距离
(set-strategic-number sn-attack-group-gather-spacing 0) ; 攻击部队集合点留间隔
(set-strategic-number sn-task-ungrouped-soldiers 0) ; 指派未归队士兵 不开启进攻时可加一个计时器循环改
;变为1, 以免兵多挡路
(set-strategic-number sn-attack-winning-player 0) ; 攻击积分领先游戏者
(set-strategic-number sn-attack-winning-player-factor 0) ; 攻击积分领先游戏者因子
(set-difficulty-parameter ability-to-maintain-distance 0) ; 持距力 兵多有优势时改为100
(disable-self)
)
(defrule
(true)
=>
(set-strategic-number sn-maximum-town-size 20) ; 最大城镇规模
(disable-self)
)
;3,4组为一次性设置
(defrule
(true)
=>
(set-strategic-number sn-group-commander-selection-method 0) 部队长选择方式
(set-strategic-number sn-percent-enemy-sighted-response 100) ; 敌视回应比率
(set-strategic-number sn-attack-separation-time-randomness 0) ; 攻击间隔时间随机性
(set-strategic-number sn-allow-civilian-defense 1) ; 容许村民自卫
(set-strategic-number sn-gather-defense-units 0) ; 聚集防御部队
(set-strategic-number sn-consecutive-idle-unit-limit 0) ; 部队闲置时限
(set-strategic-number sn-build-frequency 1) ; 每次生产单位或研究科技间所进行的更替数量
(set-strategic-number sn-scaling-frequency 0) ; 估算频率
(set-strategic-number sn-target-evaluation-siege-weapon 100) ; 攻城武器附加目标评估等级
(disable-self)
)
(defrule
(true)
=>
(set-difficulty-parameter ability-to-dodge-missiles 100) ; 回避力
(set-strategic-number sn-coop-share-information 1) ; 同盟计算机游戏者共享信息
(set-strategic-number sn-coop-share-attacking 1) ; 同盟计算机游戏者合作攻防
(set-strategic-number sn-coop-share-attacking-interval 20) ; 同盟计算机游戏者合作攻防间隔时间
(disable-self)
)
-------------------------------------------------------------------------------------------------------------------
例子二 集队进攻
要点:要组织大规模的部队将组织距离、集合间隔点改大些。共要改变5个值
(defrule
=>
(set-strategic-number sn-number-attack-groups 200) ; 攻击部队数量
(set-strategic-number sn-maximum-attack-group-size 20) ; 最大进攻部队规模
(set-strategic-number sn-minimum-attack-group-size 4) ; 最小进攻部队规模
(set-strategic-number sn-group-form-distance 60) ; 部队组织距离
(set-strategic-number sn-attack-group-gather-spacing 20) ; 攻击部队集合点留间隔
)
或使用指令attack-now
(defrule
=>
(set-strategic-number sn-percent-attack-soldiers 100) ; 攻击士兵比率
(set-strategic-number sn-maximum-attack-group-size 20) ; 最大进攻部队规模
(set-strategic-number sn-minimum-attack-group-size 4) ; 最小进攻部队规模
(set-strategic-number sn-group-form-distance 60) ; 部队组织距离
(set-strategic-number sn-attack-group-gather-spacing 20) ; 攻击部队集合点留间隔
(attack-now)
)
-----------------------------------------------------------------------------------------------------
例子三 分散进攻
要点:改变1个值 最大进攻部队规模、最小进攻部队规模、部队组织距离、攻击部队集合点留间必须基准值
(defrule
=>
(set-strategic-number sn-number-attack-groups 200) ; 攻击部队数量
)
或使用指令attack-now
(defrule
=>
(set-strategic-number sn-percent-attack-soldiers 100) ; 攻击士兵比率
(attack-now)
--------------------------------------------------------------------------------------------
例子四 城镇范围进攻(TSA) 逐步扩大城镇范围,敌视回应距离改大一些配合一下。
注意策略值攻击士兵比率与攻击部队数量为改变士兵状态为进攻状态,不能改大,不然就没有士兵参加TSA了。
很多AI都会加(not( town-under-attack))这条指令,如果遇到对方AI也采用TSA就麻烦了,当己方AI万一处于弱势,就比较难反攻了。
(defrule
=>
(set-strategic-number sn-enemy-sighted-response-distance 44) ; 敌视回应距离
)
(defrule
(not (enemy-buildings-in-town))
(strategic-number sn-maximum-town-size < 40)
=>
(set-strategic-number sn-maximum-town-size 40)
(chat-to-all "Town-size-attack:40")
)
(defrule
(not (enemy-buildings-in-town))
(strategic-number sn-maximum-town-size == 40)
=>
(set-strategic-number sn-maximum-town-size 50)
)
.
.
.
或 直接将城镇范围设为999。转下话题 集队进攻与分散进攻都会由近到远续蚕食对方建筑物,同一距离内就会优会攻击
对方带攻击性建筑物。而城镇范围进攻不会由近到远续蚕食对方建筑物,第一时间攻击对方带攻击性建筑物。所以上面
规则就写续步增大城镇范围加而限制。如果是1V1时直接开大城镇范围会更强大,多个AI对战时就不好了,反效果.
(defrule
=>
(set-strategic-number sn-enemy-sighted-response-distance 44) 敌视回应距离
(set-strategic-number sn-maximum-town-size 999)
)
例子五 地面部队大于90时城镇范围进攻与其它进攻方式结合按各百分比分配
(defrule
(soldier-count > 90)
=>
(set-strategic-number sn-number-attack-groups 45) ; 攻击部队数量
(set-strategic-number sn-enemy-sighted-response-distance 44) ; 敌视回应距离
)
(defrule
(not (enemy-buildings-in-town))
(strategic-number sn-maximum-town-size < 40)
=>
(set-strategic-number sn-maximum-town-size 40)
)
(defrule
(not (enemy-buildings-in-town))
(strategic-number sn-maximum-town-size == 40)
=>
(set-strategic-number sn-maximum-town-size 50)
)
以上所举的改变攻击方式的例子(例子二--例子五)只是一个基本方向,实际中还要根据很多的指令进行判断,
进行改变。同时可以加一条限制指令或计时器防止AI长期读取规则,提高游戏流畅度。
(四) 策略值(sn-special-attack-type1首位特殊攻击类别)
很多AI设置都误解了,这个策略值只能设为1(修道院)时有效,设其它数字、单位名称、ID都无效。如果有一个AI造很多
修道院(应该没有吧),就爽了,这个策略值会加快AI的进攻效率,减少停顿士兵产生。
地形、资源分布最能影响AI的发挥,我个人比较喜欢采用2V2方式校验AI强弱,这样可以减少地形、资源对AI影响。没有
最强的AI,只有最强的民族。封快的民族就很有优势了,进攻永远是最好的防守,万一来个农田BUG就笑了。其中以匈奴第
一、中国第二(如果诸葛驽射程加1中国就有可能坐头把交椅了)、往后就很难界定了,遇到这两个民族很可能升级帝王的机
会也没有!
|
|