红警DIY论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 415|回复: 15

关于红警2ai选取目标的问题讨论

[复制链接]
发表于 2017-11-16 13:50:41 | 显示全部楼层 |阅读模式
通常来说,ai攻击之前先会选取一个目标锁定,按照脚本0,1号攻击代码-攻击最接近的敌方单位。
这个0,1脚本号是最通用的,也是我最喜欢用 的脚本号。但是这个脚本号确是有距离限制的,距离大概是基地到集结点位置的距离。
以下脚本为例54,0-->0,1  ai先在本方基地附近集结,然后选定最接近的敌方单位作为目标攻击。一旦集结点附近没有敌方单位可供选取,ai就会无脑简单粗暴的按照游戏单位出现的先后顺序作为新的目标,一般都是  开局坦克-->开局士兵-->--主基地>电厂--->哪个单位被新建造出来,等前面的单位被消灭,就会轮到他
 楼主| 发表于 2017-11-16 15:35:37 | 显示全部楼层
简单的说。我粗略的将ai寻敌模式分为2种:
1.脚本模式,按照脚本进行目标选取。比如0,1=攻击范围内最接近的敌方单位
2.无脑粗暴模式,选取最初出现的单位作为目标攻击,典型的无脑攻击是开局的坦克。
如果ai范围内没有可选取的目标,会直接选定最早在游戏忠出现的单位,并前去击杀。庆幸的是,如果被锁定的单位被消灭,ai会重新激活脚本模式,重新选取最近的敌人作为新目标。
这两个模式可以经常转换,一旦范围内没有敌人,就进入无脑粗暴模式,一旦目标被击杀,又回到脚本模式,选取最接近的目标。
但是很多时候ai往往因为附近搜不到敌人,就进入无脑粗暴模式,选择了玩家的初始坦克作为攻击目标,导致半路被截杀,乐此不疲。
说到这里就有2个问题,一个是0,1脚本代码不能乱用,否则很有可能进入无脑粗暴模式,地图越大,人口越就稀疏,ai范围内搜不到敌人的可能性也就越大。这样的话,这个队伍无脑往玩家基地冲,已经脱离他最初的本意。
第二个问题就是这个0,1范围搜寻的范围大小由哪个代码控制,还望大佬能够告知。据我观察,这个距离大概是基地到集结点位置的距离。
 楼主| 发表于 2017-11-16 17:10:33 | 显示全部楼层
本帖最后由 空心1234 于 2017-11-23 13:31 编辑

论坛的一些网友之前提到的问题
“电脑总喜欢攻击先造的单位,即一个单位在游戏中出现的时间越早,那么就会成为电脑攻击的目标,电脑会一直攻击这个目标直到目标被摧毁”
那个帖子我现在已经不能回复,在此给与解答一下,希望那个朋友能看到。这个问题很有可能因为脚本0,1被乱用导致,
新手写ai的时候最喜欢用这套脚本:
0=54,0
1=0,1
2=49,0
一旦ai的基地附近没有可供选择的目标,ai会直接选取一个在游戏中出现的时间越早的单位作为新目标进攻,导致后面的问题。即使ai在自己基地附近集结的时候能搜索到目标,并且消灭这个自己基地附近的目标之后,他将会再次对范围内进行目标搜索,如果这个区域仍然没有其他目标,他选取的目标还是会跳转到玩家的初始坦克那里去。要想完全解决这个问题很难,能够缓解这个问题的办法是使用下面的脚本:
0=53,0  在敌方基地附近集合
1=0,1
2=49,0
在玩家附近集合,不怕搜不到目标,自然不会再死死盯住某个目标不放 了
 楼主| 发表于 2017-11-18 10:24:57 | 显示全部楼层
本帖最后由 空心1234 于 2017-11-23 13:31 编辑

继续更新,红警的ai脚本是很坑的,对于0号攻击代码,使用的时候都有以下问题:
0,1攻击任意最接近目标------》附近没有敌军目标,直接选取游戏中最早出现的目标锁定攻击。
0,4攻击任意最接近的士兵单位------》附近没有敌士兵单位,直接选取游戏中最早出现的士兵锁定攻击。(典型开局士兵)
0,5攻击任意最接近的车辆单位------》附近没有敌车辆单位,直接选取游戏中最早出现的车辆锁定攻击。(典型开局坦克)
0,8攻击任意基地威胁------》基地附近没有敌军目标,直接选取游戏中最早出现的目标锁定攻击。
以此类推。0号攻击代码执行时都有范围限定,这个范围的大小我水平有限不得而知。
结合ai选择集结点的脚本只有两个:53,0和54,0。只能在我方基地或者敌方基地附近集合,也就是说0号攻击脚本只能在这两个点附近发挥他最期望的作用,离开这两个点,玩家的单位就只能按照出生的先后顺序被电脑选取攻击。除非你把单位排成一字长蛇阵,让ai不停的杀,这样的话在每次击杀之后ai会在重新在范围内重新搜索合适的目标,但是显然这不现实。玩家不可能这么做,除非这个地图非常小,人口密度大,才能给予ai无限搜索附近目标的可能。
 楼主| 发表于 2017-11-18 14:07:07 | 显示全部楼层
接着跟,反正快要脱坑了。
所以一旦目标远离玩家或者ai的基地,ai将无法选取他们作为攻击目标。除非玩家的初始部队已经死亡。
这目前ai代码的限定下,ai的攻击脚本锁定的优先级依次是:基地集结点附近的敌人-----》最早出现的单位(通常初始单位)----》后面出现的单位。
如果你在开局在一个远离双方基地的位置投放一队伞兵,在你的初始单位被消灭之前,这只伞兵不会被当作攻击目标,无论你的ai.ini如何编写都无法避免这问题。除非ai的队伍恰好路过这里遭到伏击,ai才会因为反击的原因攻击他。
 楼主| 发表于 2017-11-18 14:21:52 | 显示全部楼层
以上的问题能对modder造成多大的影响,只能说仁者见仁智者见智。毫无疑问,由于ai脚本的限定,在选取目标的时候很大程度上会脱离编写者的期望。不过现在的mod或者ai补丁基本上都是大部队rush,很少会关注这种细节问题。ai能不能正确的选取编写者期望的目标进行攻击并不要紧,反正MultiplayerAICM=和AIVirtualPurifiers=这两个代码保证了ai经济的充裕,在加上多重工,ai在兵力上完全碾压玩家。哪怕ai锁定了一个不合适的目标进行攻击,凭着兵力优势,完全可以一波rush。在加上ai在遭受伏击时完全可以反击,可以很大程度上缓解这个问题。
发表于 2017-11-20 10:24:14 | 显示全部楼层
这位大佬的ID貌似之前没什么印象?
不知你何时入坑的 注册时间是今年五月 就要脱坑了吗
顺便 AI研究的人确实少 我倒是也有强化AI的想法 针对半路被玩家截杀而不还手或者不寻敌的情况 恐怕现有脚本难以完善?
如果你针对地图的AI写的比较多的话 会发现16,N(N为路径点序号) 能够让AI的单位在行进途中有类似于玩家CTRL+SHIFT的效果
但是全局的范式AI可不能用这条 因为每张地图的路径点都是不同的 我打算新增一条“巡逻到敌方基地” 的新脚本
 楼主| 发表于 2017-11-20 10:31:09 | 显示全部楼层
Zero_Fanker 发表于 2017-11-20 10:24
这位大佬的ID貌似之前没什么印象?
不知你何时入坑的 注册时间是今年五月 就要脱坑了吗
顺便 AI研究的人确 ...

我针对的都是遭遇战的ai.ini  地图我很少研究,不过地图ai功能视乎要多很多。
发表于 2017-11-20 10:54:13 | 显示全部楼层
空心1234 发表于 2017-11-20 10:31
我针对的都是遭遇战的ai.ini  地图我很少研究,不过地图ai功能视乎要多很多。 ...

确实多很多 而且很多确实局限于类似于任务地图的情况 无论是单人还是合作 有一些依赖于地图特殊的建筑摆放位置 有一些依赖于路径点 还有一些是用于展示花哨效果的 例如在单位身上播放一个动画 对AI没什么帮助
 楼主| 发表于 2017-11-20 11:40:59 | 显示全部楼层
Zero_Fanker 发表于 2017-11-20 10:54
确实多很多 而且很多确实局限于类似于任务地图的情况 无论是单人还是合作 有一些依赖于地图特殊的建筑摆 ...

地图的ai可以选择路径点,这样的话可以操控ai在高地或者路口进行驻扎埋伏。但是modder不可能为每个地图都适配一份ai,而遭遇战模式能让ai选择路径点的脚本号无非就是53,0 和 54,0  。所以功能非常简陋 ,导致modder发挥的空间非常有限。在就是ai很多参数作用不明,也没有人测试他们具体的作用。像这次的0号攻击代码,他的运行机制实际上跟大部分人的理解是有出入的,而且无论是哪个版本的ai教程,对于参数的解说都不够到位,可能我会单独出几个帖子,详解有些参数的作用,脱坑前对之前的教程做些添砖加瓦,微不足道的工作。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|Archiver|手机版|管理员邮箱|红警DIY官方论坛

GMT+8, 2018-4-20 10:51 , Processed in 3.272492 second(s), 14 queries , XCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表