找回密码
 点一下
楼主: 金皮蛋

可移植智能AI对战系统+万能对战AI模板

[复制链接]
发表于 2023-4-2 19:57:20 | 显示全部楼层
为什么用不了呢
回复

使用道具 举报

发表于 2024-2-8 22:16:11 | 显示全部楼层
我把大佬的AI用在重置版,但是发生的情况很很奇怪,我按照大佬的方法对Egg.ai文件进行了设置,但是新种族只会不停采矿,连祭坛都不会造,所以我进行了下列测试:
1.使用原种族并导入对应.ai文件的情况:没有问题,可以正常应用ai
2.修改EGG.ai文件对应新种族的情况,开局后电脑会把所有农民拉去采矿,别的啥也不干
3.使用替换功能,将hum.ai文件中的部分单位替换成其他单位(包括在物品编辑器里修改对应单位到相应建筑,比如将hum.ai中所有人类步兵的ID:hfoo替换成战役单位剑士的ID:hess,并在物编里把人类兵营生产列表的步兵替换成剑士),电脑会正常开始建造并生产剑士
4.使用替换功能,将hum.ai中的人类农民ID替换成新种族农民ID,并使用触发将对战初始单位的农民替换成新种族农民,开场只会把新种族农民拉去采金(这个正常,新种族农民只会造新种族的建筑,但新种族的建筑不在AI的考虑范围内)
5.将hum.ai里的祭坛、房屋ID均替换成新种族对应建筑ID,电脑会建造祭坛,但人类基地不会建造新种族农民(因为没有建造列表),也不会建造房屋(这个搞得我有点懵,不过想了想AI的建造顺序可能是祭坛-农民-房屋,也就是说可能存在没造农民因此不造房子的情况,而不是会造祭坛却不会造房子)
6.在上一条的基础上,人类基地建造列表添加新种族农民,基地不会建造原本的人类农民,也不会造新种族农民(这一步是问题的关键之一,新的农民无法被建造)
7.在上一条的基础上,把人类基地用触发删除后重新创造,结果同上(之所以做这一步是为了排除“删除基地后重新创造基地”这个行为的影响)
8.同样在6的基础上,把人类基地用触发删除后创造新种族基地,电脑只会采金子
9.在7的基础上,把hum.ai里人类基地的ID替换成新种族基地的ID,结果同上
10.在9的基础上,在新种族的基地建造列表中添加普通人类农民,电脑只会采集金矿
11.在9的基础上,把hum.ai里的农民ID改回正常的人族农民,则新基地会建造人族农民,并且会在金和木足够的情况下建造人类基地,随后正常开始建造,这时祭坛和房屋的ID是新种族的,兵营的ID是原来的,电脑会先后分别使用两种农民建造祭坛(新)、兵营(旧)、房屋(新),也就是说建筑物不受影响

这样一来,我做出的判断是,根据情况3,判断ai能够正确识别并建造被替换的单位(也就是说,对电脑来说,普通单位是可以“任意替换”的,会不会按情况使用另说,至少建造是没问题的)
根据情况4到9,电脑是知道“我的农民是什么”的,替换ai文件中的农民代码并不会影响电脑的这个判断,也就是说,即使替换了ai代码里的农民,电脑也无法识别新的农民,因而不会建造,同时由于电脑判断“我没有农民”,所以会彻底卡住不进行建造
根据情况5,电脑对建筑的判断和普通单位一样,并且在建造新建筑的时候,是能够识别新种族农民的
根据情况6,开局删除并重建基地的情况不影响电脑的判断
但是根据情况6和10,即使给了电脑相应的建造列表,在替换了ai文件中的农民ID后,电脑既不会造原本的农民也不会造新种族的农民,按我的理解,应该是电脑建造单位需要同时满足“建造列表”和“ai中的建造指令”两个需求,此时电脑“只会造新农民”(即使给了建造列表,但ai文件里没有旧农民的指令,电脑建造单位的条件不满足)但“只想造旧农民”,也就是电脑的判断是需要下达建造旧农民的指令,但这个指令并不存在,于是除了采金外什么都做不了
根据情况11,即使给了电脑新种族的基地(不要问我是不是没设等价物,这种基础的错误我肯定会排查的),电脑依旧会判断自己没有基地,而重新建造旧种族的基地

总的来说,这个ai在我实际应用中,出现了两个问题:
一是在判断自己拥有的农民数量时,无法识别新农民的存在,在建造农民时也不会下达建造新农民的指令,只会不断尝试下达建造原本农民的指令
二是在判断自己拥有的基地数量时,同样无法识别新基地
回复

使用道具 举报

发表于 2024-2-8 23:49:52 | 显示全部楼层
为了便于理解,我把测试结果再简化一下
初始条件:所有初始单位农民用触发替换成新种族农民,对ai的建造ID、建筑物的建造列表进行修改
1.只要修改过农民ID,就无法建造农民,只有在满足“拥有旧基地”和“修改过祭坛ID”的情况下,初始新农民会修建祭坛
2.只要满足旧农民的建造条件(列表和ID),就会建造旧农民,不轮拥有的是旧基地还是新基地
3.只要有旧农民,就会优先确保拥有旧基地(即使基地ID改成新基地的),在有旧基地的情况下会继续发展
4.除了农民和基地,其他建筑物会按照修改过的ID进行建造,电脑会根据两种农民的建造列表选择用哪种农民修建

点评

研究了几天,我终于发现问题的所在了 其实很简单,就是因为我做了新种族后,使用了0.01秒后进行选择种族的触发 当时为了方便,直接把电脑使用新种族的判定也放到一起了 然后在导入新种族AI的时候也放在了这里 但是同  详情 回复 发表于 2024-2-11 22:09
回复

使用道具 举报

发表于 2024-2-11 22:09:54 | 显示全部楼层
volerlm 发表于 2024-2-8 23:49
为了便于理解,我把测试结果再简化一下
初始条件:所有初始单位农民用触发替换成新种族农民,对ai的建造ID ...

研究了几天,我终于发现问题的所在了
其实很简单,就是因为我做了新种族后,使用了0.01秒后进行选择种族的触发
当时为了方便,直接把电脑使用新种族的判定也放到一起了
然后在导入新种族AI的时候也放在了这里
但是同时,地图开始后的初始化触发里,我加入了AI初始化的触发
于是导致电脑先应用了对战初始化的AI,然后在后续触发时适用新AI无法覆盖原有的AI
解决的方法就是对战初始化后先进行电脑使用乱数新种族判定,在完成该判定的行为的最后根据判定结果适用原AI或新种族AI。。。

点评

牛牛牛牛牛牛牛牛牛牛  详情 回复 发表于 2024-3-9 16:33
回复

使用道具 举报

发表于 2024-3-9 16:33:35 | 显示全部楼层
volerlm 发表于 2024-2-11 22:09
研究了几天,我终于发现问题的所在了
其实很简单,就是因为我做了新种族后,使用了0.01秒后进行选择种族 ...

牛牛牛牛牛牛牛牛牛牛
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-5-2 17:36 , Processed in 0.217264 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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