翔鹰帝国网|古代战争游戏论坛|帝国时代系列|全面战争系列|0AD
 找回密码
 注册翔鹰会员(昵称)
搜索
查看: 728|回复: 21

[交流] 我发现HD版有个大BUG!

[复制链接]

4

主题

0

精华

1287

积分

侯爵

耕战
221
鹰币
1785
天龙币
0
帖子
28
附庸关系0
 楼主| 发表于 2019-5-2 19:59:03 | 显示全部楼层 |阅读模式
本帖最后由 凌果 于 2019-5-2 23:39 编辑

该说是游戏的BUG呢,还是AI的BUG呢?
简单而言就是up-jump-rule 负数,其效果跟up-jump-rule 正数是一样的!
也就是(up-jump-rule -1)等效于(up-jump-rule 1)
(up-jump-rule -2)等效于(up-jump-rule 2),以此类推。
原本up-jump-rule负数应该是循环/重复执行上面的规则才正确,然而现在变成了向下跳过规则。

这个BUG大到我怀疑是不是我的游戏出了什么诡异的错误,有没有人测试下你们的游戏是不是也有这个BUG?(HD版游戏)

拜这个BUG所赐,AI也就有问题。以HD的默认AI,Promisory.per2为例。
Promisory.per2共有3处up-jump-rule 负数,都与sn-focus-player-number有关,从而导致这三处本该循环的规则仅执行了sn-focus-player-number == 1的部分。且更重要的是使得这三处以外绝大部分的sn-focus-player-number都固定为2。

从而数百条应用focus-player这个百搭参数的条目都仅针对玩家2。(只有少部分例外,约5000~15000行和约30000行后的sn-focus-player-number有被重新赋值)
回复

使用道具 举报

4

主题

0

精华

1287

积分

侯爵

耕战
221
鹰币
1785
天龙币
0
帖子
28
附庸关系0
 楼主| 发表于 2019-5-2 20:02:44 | 显示全部楼层
本帖最后由 凌果 于 2019-5-2 20:07 编辑

除了这个BUG以外,我还发现Promisory.per2有不少小BUG。那些都还算比较好修复。
只是这个BUG大到我怀疑是不是只有我的游戏出了这个错误,想问一句是不是只有我一个人。

顺便一提,即使有这个BUG存在,Promisory.per2的AI表现大部分情况下还算正常,如果不是我在玩的过程中碰到一些情况我也许都没能发现

回复

使用道具 举报

17

主题

0

精华

1052

积分

伯爵

耕战
50
鹰币
1939
天龙币
0
帖子
482
附庸关系0
发表于 2019-5-2 23:02:53 | 显示全部楼层
Promi本来就是基于UserPatch编写的,移植到HD版后,官方又不好意思完全兼(chao)容(xi)UP的高级AI命令,难道对不兼容命令的处理都是这样直接跳过的?难怪HD早期版本AI经常犯傻
回复

使用道具 举报

685

主题

31

精华

8万

积分

教皇

耕战
10896
鹰币
541942
天龙币
512
帖子
7617

翔鹰建站十周年纪念章翔鹰十周年帝国Online纪念章特级帝国勋章特级翔鹰勋章特级嘉禾勋章特级皇家勋章鹰之王者雄鹰勋章第四届火箭筒杯最佳战役第五届火箭筒杯最佳战役第九届火箭筒杯最佳战役第二届战鹰杯单人赛季军第八届战鹰杯单人赛季军鸽子勋章

附庸关系12
发表于 2019-5-3 19:01:15 | 显示全部楼层
只能说HD被UP完全比下去了…照葫芦画瓢都能画错也是没谁了…
回复

使用道具 举报

20

主题

0

精华

324

积分

子爵

耕战
0
鹰币
110
天龙币
0
帖子
167
附庸关系0
发表于 2019-5-4 20:15:02 | 显示全部楼层
本帖最后由 chifeiyen 于 2019-5-4 22:26 编辑

HD官方AI是有不少问题,我在创意工坊上发布了个修改的Mod如下:
因为本人对AI不太懂,目前主要修改了以下几项:
1.楼上大大wongyuhua对投降条件的修改,让AI不会轻易投降;
2.AI远程单位不会放风筝走位;
3.AI不会再把一群兵围绕在一个建筑周围一圈发呆(这是个Bug,非洲DLC还没有的,蛮王DLC才有,原因是蛮王开始sn-gather-defense-units策略值设置成了1,我改成0就好了)。

除了楼主说的Bug外,还有以下希望修正的问题我不知如何实现:
1.柏柏尔从来不出骆驼射手;
2.印加从来不出投石兵;
3.缅甸和马来极少出象兵;
4.意大利从不出佣兵(反而维京马里哥特会出佣兵);
5.无法让AI会用步兵驻扎进冲车(AOC原版AI是会的);
6.坐中的AI在坐边盟友被攻击时不及时给予支援。

如果各位大大有兴趣,希望可以订阅我发布的AI试着修改修改,小弟懂得不多有点力不能及。

HD AI修改

HD AI修改
回复

使用道具 举报

4

主题

0

精华

1287

积分

侯爵

耕战
221
鹰币
1785
天龙币
0
帖子
28
附庸关系0
 楼主| 发表于 2019-5-4 21:47:16 | 显示全部楼层
本帖最后由 凌果 于 2019-5-4 22:53 编辑

关于1楼说到的BUG,我的修正方案是既然不能用循环,那就将其摊开来写。本应循环8次(1至8),我就分开8段来写。
总共三处有问题的地方,以下是第一处有问题的地方的原代码:

以下是我的修正方案:


第二处有问题的地方:

修正方案:


第三处有问题的地方:

修正方案:


都比较长,毕竟是大BUG。我自己测试后,涉及focus-player的方面,AI的表现确实是更正常了。
回复

使用道具 举报

20

主题

0

精华

324

积分

子爵

耕战
0
鹰币
110
天龙币
0
帖子
167
附庸关系0
发表于 2019-5-5 00:13:14 | 显示全部楼层
本帖最后由 chifeiyen 于 2019-5-5 00:18 编辑
HD官方AI是有不少问题,我在创意工坊上发布了个修改的Mod如下:
因为本人对AI不太懂,目前主要修改了以下几项:

@凌果


Promisory.per2

1 MB, 下载次数: 2

回复

使用道具 举报

4

主题

0

精华

1287

积分

侯爵

耕战
221
鹰币
1785
天龙币
0
帖子
28
附庸关系0
 楼主| 发表于 2019-5-5 01:04:36 | 显示全部楼层
本帖最后由 凌果 于 2019-5-5 01:23 编辑

我来慢慢回答一下吧。
首先关于训练某种兵种这类,直接相关的就是要找到(train xxxxxx),例如训练投石手就查找(train slinger),这是最直接相关的。
然后部分单位可能会有间接相关之处,就是民族策略,例如印加就查找#load-if-defined INCAN-CIV,一般第一条和第二条分别是民族策略相关常数和策略具体规则。

骆驼射手相关:
由于特种兵都是用(train my-unique-unit-line),所以搜索(train my-unique-unit-line)之后需要逐条细看,排除掉其它文明的特种兵的规则。
我找了,然后找到跟训练骆驼射手有关的是以下两条规则:



先讲第一条规则,训练的条件是必须要焦点玩家(即focus-player)有5个以上的骑射手或蒙古突骑才允许训练,有15个以上才允许训练超过15个骆射,有30个以上才允许训练30个骆射。
骆射作为克制骑射手的单位,这条规则看似没有问题(虽然没有考虑到克制象射手、马车、飞镖骑兵等),然而这里就关系到1楼所说的BUG了。1楼所说的BUG影响到focus-player,使得focus-player固定为玩家2。也就是只看玩家2是否训练了一堆骑射手。只要按6楼的方式修正之后,这条训练骆射的规则就没什么问题。(当然可以考虑加入克制象射手、马车、飞镖骑兵等)

讲第二条规则,第二条规则实现难点在于以下3行:
(or        (up-research-status c: my-unique-unit-upgrade >= research-pending)
(or        (goal unit-goal my-unique-unit-line)
        (goal control-goal my-unique-unit-line)))
即当骆射没有升级成精锐骆射之前,需要unit-goal或control-goal为特种兵才允许训练。unit-goal或control-goal(就暂称为目标兵种吧)需要去查柏柏尔的民族策略,查找#load-if-defined BERBERS-CIV,第二条。然后高亮my-unique-unit-line,能发现有以下三条规则涉及目标兵种为特种兵:

这三条规则要详细讲也挺麻烦的,简单来说就是
1.当弑君模式时;当柏柏尔位于居中位置时(左右侧有同盟);当地图是非快攻地图时(例如丛林竞技场、黑森林、堡垒什么之类的)这些情况下有一定概率将目标兵种定为特种兵。
2.人口很多时且目标兵种不为骑兵时将其定为特种兵。
3.焦点玩家骑射手较多时将目标兵种定为特种兵(这里又涉及1楼BUG了)。
总之这几条规则都没什么问题,就是第一条规则里的概率不够大,第二条由于柏柏尔最喜欢目标兵种是骑兵所以可能触发不多,第三条涉及了BUG。所以你见到骆射可能会比较少。
实际上我在游戏的过程中是有见到AI出骆射的,可能是你碰到得少了。

第一个问题写得稍微详细一点,你先看看能不能理解。后面的问题看情况我是写分析还是直接写代码吧。
回复

使用道具 举报

17

主题

0

精华

1052

积分

伯爵

耕战
50
鹰币
1939
天龙币
0
帖子
482
附庸关系0
发表于 2019-5-5 15:57:50 | 显示全部楼层
凌果大大请直接把改好的PER2分享出来吧?年纪大了,看得眼睛痛
其实骆驼射手不一定要设置为针对性出兵,没钱出标枪,有钱出骆射咯!
回复

使用道具 举报

17

主题

0

精华

1052

积分

伯爵

耕战
50
鹰币
1939
天龙币
0
帖子
482
附庸关系0
发表于 2019-5-5 16:23:25 | 显示全部楼层
本帖最后由 wongyuhua 于 2019-5-5 16:30 编辑
chifeiyen 发表于 2019-5-4 20:15
HD官方AI是有不少问题,我在创意工坊上发布了个修改的Mod如下:
因为本人对AI不太懂,目前主要修改了以下几 ...

前面3条我们讨论过,简化相关规则的前提,或者新增独立而简单的规则应该是可以解决的
4. 我要是意大利也不喜欢出佣兵,又没有步兵文明的加成优势
5. set-strategic-number sn-garrison-rams 0改为1可允许步兵进驻冲车,但不是100%有效,其实如果只驻扎1个的话也没卵用
6. sn-coop-share-attacking 1默认是开启的,但如果没有attack-now这种直接命令来响应同盟的求救,AI很难做到及时支援,用promi作者自己的话来说,就是usually helps ally too late, but better than nothing,你可以加一条规则(参考Boss):
(defrule
;    (strategic-number sn-maximum-town-size <= 30)
    (not(town-under-attack))
    (soldier-count >= 21)
    (taunt-detected any-ally 222)
    (strategic-number sn-percent-attack-soldiers != 96)
=>
    (chat-to-allies-using-id 22073)
    (set-strategic-number sn-percent-attack-soldiers 97)
    (attack-now)
    (acknowledge-taunt this-any-ally 222)
)

回复

使用道具 举报

0

主题

0

精华

11

积分

乡绅

耕战
1
鹰币
30
天龙币
0
帖子
9
附庸关系0
发表于 2019-5-5 16:58:40 | 显示全部楼层
HD是有个大BUG 我去电脑家塔爆, 就在城镇中心边上建 ,他们完全不会去反抗你了,农民也不会攻击你。
回复

使用道具 举报

4

主题

0

精华

1287

积分

侯爵

耕战
221
鹰币
1785
天龙币
0
帖子
28
附庸关系0
 楼主| 发表于 2019-5-5 17:31:10 | 显示全部楼层
本帖最后由 凌果 于 2019-5-5 17:38 编辑
wongyuhua 发表于 2019-5-5 15:57
凌果大大请直接把改好的PER2分享出来吧?年纪大了,看得眼睛痛
其实骆驼射手不一定要设置为针对性出 ...

是指六楼的修改方案吗,
查找到原代码的位置,把我列出整个部分的原代码都删了,把我给出的整段修正方案复制进去就OK


我晚点把我修正过的AI文件放上来吧,除了1楼说到的BUG,还有很多处小问题,我稍微整合一下并写一下注释。
回复

使用道具 举报

20

主题

0

精华

324

积分

子爵

耕战
0
鹰币
110
天龙币
0
帖子
167
附庸关系0
发表于 2019-5-5 17:45:18 | 显示全部楼层
本帖最后由 chifeiyen 于 2019-5-5 17:52 编辑
wongyuhua 发表于 2019-5-5 16:23
前面3条我们讨论过,简化相关规则的前提,或者新增独立而简单的规则应该是可以解决的
4. 我要是意大利也不 ...

驻扎冲车我改成1也不会驻扎,但原版AI又是可以驻扎的,因此一直觉得很奇怪。

点评

所以说不是100%有效,看AI心情  发表于 2019-5-5 20:55
回复

使用道具 举报

20

主题

0

精华

324

积分

子爵

耕战
0
鹰币
110
天龙币
0
帖子
167
附庸关系0
发表于 2019-5-5 17:47:51 | 显示全部楼层
本帖最后由 chifeiyen 于 2019-5-5 20:21 编辑
wongyuhua 发表于 2019-5-5 16:23
前面3条我们讨论过,简化相关规则的前提,或者新增独立而简单的规则应该是可以解决的
4. 我要是意大利也不 ...

第6条你说加的这条规则应该加在哪里?就加在AI文件最后就可以吗?HD的AI的攻击我看了貌似都是用TSA实现的,不是Attack now,野蛮人好像也是,但野蛮人能做到及时救援,难道是只有up 1.4以上的语句才能实现?
回复

使用道具 举报

20

主题

0

精华

324

积分

子爵

耕战
0
鹰币
110
天龙币
0
帖子
167
附庸关系0
发表于 2019-5-5 20:04:31 | 显示全部楼层
本帖最后由 chifeiyen 于 2019-5-5 20:09 编辑
凌果 发表于 2019-5-5 01:04
我来慢慢回答一下吧。
首先关于训练某种兵种这类,直接相关的就是要找到(train xxxxxx),例如训练投石手就 ...

第一条规则我能理解,第二条规则我对up的goal类的语句不太懂。不过根据你的分析,只要把你1楼的Bug解决,骆射的问题也就算迎刃而解了吧!
回复

使用道具 举报

17

主题

0

精华

1052

积分

伯爵

耕战
50
鹰币
1939
天龙币
0
帖子
482
附庸关系0
发表于 2019-5-5 20:52:30 | 显示全部楼层
本帖最后由 wongyuhua 于 2019-5-12 15:25 编辑
chifeiyen 发表于 2019-5-5 17:47
第6条你说加的这条规则应该加在哪里?就加在AI文件最后就可以吗?HD的AI的攻击我看了貌似都是用TSA实现的 ...

位置随意,我有的放最后,有的放最前,都可以,放后面最好
attack-now是最简单直接的攻击命令,但无法实现野蛮人那样高级的效果。TSA就是三光政策,从距离最近的打起,你在前线火烧眉毛,援军在外围悠哉的打它没人的伐木场和采矿场。不过TSA也有优点,那就是集中兵力一窝蜂上,而不会舍近求远
回复

使用道具 举报

17

主题

0

精华

1052

积分

伯爵

耕战
50
鹰币
1939
天龙币
0
帖子
482
附庸关系0
发表于 2019-5-5 20:57:37 | 显示全部楼层
凌果 发表于 2019-5-5 17:31
是指六楼的修改方案吗,
查找到原代码的位置,把我列出整个部分的原代码都删了,把我给出的整段修正方案复 ...

等着您修正的AI文件呢!谢谢啦
回复

使用道具 举报

4

主题

0

精华

1287

积分

侯爵

耕战
221
鹰币
1785
天龙币
0
帖子
28
附庸关系0
 楼主| 发表于 2019-5-12 22:43:32 | 显示全部楼层
本帖最后由 凌果 于 2019-5-13 01:39 编辑

文件搞好了,大部分改动是以前就做好的,最近加了一些规则并写了注释。
所有的改动都写了注释并以“改”开头,打开文件搜索“改”可以查到所有的改动,大概一百条吧。
Promisory20190512.per2 (1.03 MB, 下载次数: 15)
回复

使用道具 举报

4

主题

0

精华

1287

积分

侯爵

耕战
221
鹰币
1785
天龙币
0
帖子
28
附庸关系0
 楼主| 发表于 2019-5-12 23:00:55 | 显示全部楼层
本帖最后由 凌果 于 2019-5-13 16:19 编辑

另外我顺便传一个我自己用的Notepad++的帝国2语法高亮方案:
AIper.xml (9.83 KB, 下载次数: 6)
回复

使用道具 举报

4

主题

0

精华

1287

积分

侯爵

耕战
221
鹰币
1785
天龙币
0
帖子
28
附庸关系0
 楼主| 发表于 2019-5-12 23:03:08 | 显示全部楼层
wongyuhua 发表于 2019-5-5 20:57
等着您修正的AI文件呢!谢谢啦

来啦,最近沉迷于某小说导致这个晚了
回复

使用道具 举报

本版积分规则

排行榜|小黑屋|翔鹰帝国 ( 京ICP备18029055号-1 )

GMT+8, 2019-6-17 22:02

Powered by Hawk Studio  QS Security Corp.® Licensed

© 2001-2018 Hawkaoe.net All Rights Reserved

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