|
|
楼主 |
发表于 2021-4-15 20:49:38
|
显示全部楼层
本帖最后由 ys19971023 于 2021-4-25 16:06 编辑
终章:
做完以上工作,你的AI工作正式开始
- Rules中的AI部分:首先大多数东西在教程里写的很清楚,而且您可以在ModEnc网站上搜AI,找到相关AI加强的推荐设置,我只是在这里写几个其他的我个人推荐的值,仅供参考,不喜勿喷
- AISafeDistance=35 ;AI执行53号指令时的集结点与敌方基地的距离。
- AIFriendlyDistance=20;AI执行54号指令时的集结点与己方基地的距离。
复制代码 以上两个数值,一个是电脑在自己家聚兵的时候,减轻交通堵塞;另一个就是这个地方基地的距离,这个距离设置成这个我只能说是巧了,这个距离在原版地图一般都是家门口的高地,或者家门口的桥头,电脑聚在这里会直接跟你的进攻部队交火,会大大增加作战难度。 - AI部分:首先我建议你直接把旧的AI文件清空,做MOD完全就自己重写就好了。AI部分有很多借鉴了@Mamamia 的MLP AI
- [AITriggerTypes]
- [TeamTypes]
- [ScriptTypes]
- [TaskForces]
复制代码- 首先,建议先写脚本[ScriptTypes](ST),因为脚本在很多情况下是通用的,写的时候头脑风暴,按照你写的部队类型,想想电脑该做什么。直接把想法先一行行地码上,然后再注册命名,命名的时候最好是自己根据脚本类型按照一种格式命名,并把相应的注释简要写上,这样有助于你在引用脚本的时候直接找到需要的脚本,下面给出我脚本的一部分以供参考然后直接在AI最下面部分按照你的注册表,一项项的写就可以了,写的时候就体现出之前整理的建筑列表的作用了,具体怎么写就要看你的MOD了,如果改了建筑列表,用的ID肯定不一样了,我只晒一条参考吧
- (上方是AI其他部分)
- ;-----------脚本--------------
- ;防御
- [ADEFST1-G]
- Name=1巡逻
- 0=58,131072
- 1=5,5
- 2=58,131073
- 3=5,10
- 4=58,196608
- 5=5,10
- 6=58,196609
- 7=5,10
- 8=49,0
- 9=6,5
- (下方是其他的脚本)
复制代码 注:写脚本的时候多使用49号动作,以保证触发分量调节AI的功能

- 写完脚本之后,我们开始写特遣部队[TaskForces](TF),因为特遣部队也有一定的通用性,比如你间谍不管是偷什么,都是几个间谍。还是先头脑风暴,想想电脑应该用什么样的部队打,这时候之前列的三种梯度的部队类型就有用了,比如之前的防空部分直接对照着写。对于进攻的,因为只是写混坦克进攻,所以拿出注册名表来,自己挨个注册单位思考,他可以怎么组合,要做什么。以下仅供参考,因为我是5个阵营,这里只给盟军阵营的,其他的差不多,用省略号代替了,其他的只列框架
然后根据组合,在AI底部按照上方的列表一个个地写好单位,这里只拿一个作说明(其实也没必要说明)- (上方为AI其余部分)
- ;--------------部队-----------------
- ;防空
- [ADEFTFAA1-G]
- Name=5防空兵
- 0=5,GGI
- Group=-1
复制代码

- 特遣部队写完之后,开始写AI触发[AITriggerTypes],我建议触发与作战小队[TeamTypes]一起写,即触发使用了这个作战小队,接着把这个作战小队写出来。因为这部分比较复杂,我单独详细说明:
- AI触发的设计关键有两点,一个是触发条件,另一个就是触发分量,我们先来说触发条件,设计触发条件的时候要考虑一下难度梯度,并结合你的之前特遣部队进行设置,我只举部分例子:
例1.对于断电偷袭:简单难度不断电偷袭,中等难度电力红时偷袭,困难难度电力黄时就专门过来打你电厂并在电力红时进行偷袭。例2.对于反应防御:简单难度发现你屯了10辆天启后买5个天启等着守家,中等难度发现你屯了8辆后买8个天启等着守家,而困难难度发现你屯了6个就开始买8个天启等着守家。注:千万不要太过分,否则游戏体验差,我曾经设计成玩家每屯5个电脑也跟着屯5个,一个是触发条件不好调,再一个就是这样根本没法打,差不多电脑屯8个守一下就得了!
- 触发分量的合理分配,注意在分配触发分量时先弄明白要达到什么效果,分量说白了就是一种影响电脑出兵概率的问题,其中有几个特殊值0-永不触发和5000-必定触发。用于电脑在失败多少次后换另一种出兵方式。这里我在底下拿我的分量做举例说明。
- AITriggerSuccessWeightDelta=20;5
- AITriggerFailureWeightDelta=-50;-5
复制代码 这是rules部分,分别控制触发成功和失败后的权重变化,可见我目前的设置是成功一次分量+20,失败一次分量-50 - 目前对于困难难度的几种AI种类,我是这样设计分量的(排序与AI触发格式排序相同),仅供参考,简单难度的我就不说了,无脑都是600,600,600。
- 先来一些非进攻性的AI,因为涉及的情况比较简单,分量也比较单一
| | 基础分量 | 最小分量 | 最大分量 | | 补基地 | 5000 | 5000 | 5000 | | 常驻防空与反应防空 | 700 | 700 | 700 | | 常驻防地 | 600 | 550 | 600 | | 反应防地 | 650 | 600 | 650 | | 防间谍 | 5000 | 5000 | 5000 | 以上的设计理念:- 补基地是基地炸了相关的肯定要求快点触发
- 防空比防地优先,这是考虑到一般电脑防空力弱
- 反应防地比常驻防地优先,因为这部分是根据敌军屯兵数量来的
- 防间谍,有间谍触发一次买狗巡逻就完事了
- 接着说进攻类,单独列出进攻类,因为进攻类情况实在是多,我设计了很多种分量,只列举盟军,仅供参考
| | 基础分量 | 最小分量 | 最大分量 | | 步兵/间谍骚扰类(海豹、恐怖分子) | 300 | 300 | 350 | | 步兵正常进攻类(狙击手,光棱) | 250 | 0 | 350 | | 步兵偷袭类(飞行兵、超时空兵) | 5000 | 5000 | 5000 | | 单一坦克/海军进攻 | 650 | 600 | 650 | | 多种坦克/海军混合进攻 | 600 | 600 | 700 | | 步兵+坦克进攻 | 620 | 550 | 660 | | 飞机乱炸 | 100 | 100 | 100 | | 飞机特定炸 | 200 | 200 | 200 | | …… | …… | …… | …… | 在谈设计理念之前,先说一下,之前经过跟群友的讨论,谈一下自己的触发分量的新发现
- 分量是按工厂类型发挥作用的,所以上面飞机虽然用了100,比步兵的300,坦克的600要低很多,但是仍然会正常使用飞机,即在不同工厂生产的单位,分量是不会互相影响的(至少目前我看上去是这样子)
- 设计理念:
- 步兵骚扰,既然是骚扰用的,当然要一直骚扰了啊,所以即使失败也会不断骚扰,成功那就会更起劲地骚扰
- 步兵进攻,前期好用,后期防御起来后就成炮灰了,所以最小分量是0,基础是250,连续失败5次后就不单独派兵当炮灰了,如果成功的话电脑就继续用兵打,但是上限只有350
- 步兵偷袭,这些是之前说的断电和黄电的时候用的,趁火打劫肯定是必须的,不管怎样都掏你一波,毕竟你断电了怎么牛逼也得难受
- 坦克/海军类,可见,刚开始单一坦克类型分量是650,比另外步坦的620和混合坦克600都要高,因此这样设计会使前期电脑冲单一种坦克,玩家初期也比较好对付。随着电脑的失败一次,分量会变成600而且会就此固定,这时步坦分量高,也就是对应游戏中期阶段,会变成步坦混合进攻。但是步坦的缺点就是其中的步兵容易死,所以后期还是混合坦克比较好。因此步坦进攻失败,那么会使其降低分量到570,这时多种坦克和单一坦克分量相等都是600,会随机抽取进行进攻,失败的话已经降低到600的下限不会再降低,成功则会增加分量,而且总的混合坦克进攻上限是700,比其他两种都高,因此最终会达到电脑后期进攻主要靠混合坦克来进攻。这样设计,前期中期后期分配比较合理,前期玩家可以轻松应对,中期稍微有点难度,后期难度比较大。
- 空军类,平时就是乱炸的是骚扰,100的分量,需要炸特定建筑的分量是200,所以空军优先完成炸特定的任务,比较合理。

- 最后一部分,就是写作战小队[TeamTypes],作战小队写的时候,之前的注释就很有作用了,你想用什么部队,想用去做什么,直接去搜索你注释的特遣部队和脚本就可以了,写这一部分关键的地方就是对于优先级(Priority)和重组(Recruiter)方面的设定
- 首先,我在设计的时候,根据触发条件,要每隔一段时间就来的(比如上面的骚扰小队)设定成Autocreate=yes
- 其次,偷袭之类的,设定成AvoidThreats=yes
- 最后,就是关于优先级和重组了,这一部分比较复杂,单独说一下,进攻参考
- 先看rules中关于状态的,让一部分状态支持重组,防止他没事干因为伞兵是默认Hunt状态,被电磁脉冲解除也是这个状态(这个可以在Ares设置成别的),所以我把这个设置成了可重组
- 然后就是作战小队的优先级和重组了,基本上,我所有的都设置的可重组AreTeamMembersRecruitable=yes和Recruiter=yes状态,私以为重组不重组,由优先级决定即可,都设成可重组可以避免AI出现闲置单位的情况。这里面我设置的优先级顺序是这样的:单一进攻类<混合进攻类<常驻防御类<反应防御类<紧急类
- 上面顺序只是我个人的设计理念,防御类要偏重一些,这个各人有各人的爱好,您觉得我这个好的话参考着设置一下即可

最后是MLP AI给我带来的灵感,简单的说一下,想学习还是去看看大佬的MLP AI比较好- 多用Ares的初始载客功能,让电脑产出来的如战斗要塞就是装满步兵的,这有多处有点,一是我们写脚本好写,不用写装载之类的;二是避免电脑塞兵卡顿;三是AI节奏更好
- 使用空投超武,完成AI对来犯单位的快速反应,这里面学问比较大,要用好指示者等模拟好建筑的范围。大佬使用了一个假建筑,还用反向的建筑动画当做是建筑的破坏动画来模拟了变卖,真的是很高明
- 这是我自己的观点,配合上面的第2条,当自己家出现上面的假建筑时(即说明有东西靠近基地了),配合一个触发,将部分防空和防地单位主动聚集到这个假建筑附近攻击来犯敌人
- 可以通过给电脑一些加钱的超武,让AI的资金不断,因为AI用矿车实在是太垃圾了,还是直接给钱好一点
- 个人觉得,2和3配合起来AI感觉就真的很像真人了,试想你自己PVP的时候,有没有提前就绪好一个防御塔,等对面攻过来之后突然建起来,然后将别的地方的部队拉过来打。大佬完成了第2点,给我们留下了思路,我们也应该多思考!

最后,说一下效果,自从我按以上思路重写了AI,说一下变化。
- 原先的电脑:无脑暴兵流,疯狂暴兵暴到没钱,然后任由你欺负,虽然难打,但是没意思,就算输了觉得也没啥,因为纯靠数量压制,只要撑住,等他没钱你必赢,平均游戏时间(凉:1min,赢:30min)
- 现在的电脑:细水长流式,每次派兵数量适中,但是非常多样化,每次AI的进攻都能给你带来新的防御体验,让你自认为能打过,然后最后却打不过,有挑战性,进攻也比较有意思,电脑会过来主动迎战,不是被动挨打,平均游戏时间(凉:5min,赢:1h30min)
祝大家都能设计出好的AI!
|
|