标题: 关于攻击最近敌类型的移动问题
性别:未知-离线 clubjack

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 11
编号 544597
注册 2021-5-11


发表于 2025-2-5 23:59 资料 短消息 看全部作者
关于攻击最近敌类型的移动问题

在信都之战里, 底下的贼兵和步兵, 从 3 回合起变为了攻击最近敌类型. 参考周瑜或者月亮的 2699 攻略, 刘备在第 4 回合原地不动时, 步兵在刘备左, 他的行动却是左 4. 类似地, 在第 5 回合结束时, 贼兵在刘备左, 他的行动也是左 4. 根据孝直兄的移动型 AI 算法 ( https://www.xycq.org.cn/forum/vi ... horuid=0&page=1 ) 对于攻击最近敌类型的 AI, 他们显然可以直接攻击到刘备, 却选择了左 4, 令人百思不得其解...

关于左 4 的行动, 唯一合理的解释是他们把上方我军当作了最近敌 (因为左 4 连防御地形都不是), 而刘备堵住了桥头, 导致他们决定从左边绕上去. 但奇怪的是, 只要他们没挨着刘备, 就能正确识别攻击刘备. 例如第 5 回合的行动, 步兵左 1 下 1 进森林, 我理解这里是因为 AI 判断移动+攻击范围有敌人 (刘备), 但因为贼兵卡住了左攻刘备的位置, 因此步兵选择了最短的可以进防御地形的坐标. 当然, 此时贼兵的行动还是存在上面的问题, 没有直接攻击刘备, 而是左4.

[ 本帖最后由 clubjack 于 2025-2-6 10:30 编辑 ]


图片附件: 4回合结束.png (2025-2-5 23:59, 588.22 K)



图片附件: 5回合开始.png (2025-2-5 23:59, 587 K)



图片附件: 6回合开始.png (2025-2-6 00:06, 585.36 K)



顶部
性别:未知-离线 clubjack

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 11
编号 544597
注册 2021-5-11


发表于 2025-2-6 20:33 资料 短消息 看全部作者


QUOTE:
原帖由 漫漫苦短 于 2025-2-6 19:19 发表
我也看着孝直的AI算法进行这方面研究的,我想你应该大致对常见的几种AI类型和行动有所了解,所以就简单地对你的推论进行分析。

你是分析大部分没有问题,但“堵住了桥头”需要重新斟酌一下,应该要换一种说法,也就是“堵住了 ...

感谢漫漫苦短兄的提示! 其实, 我也正是近期看到了您关于英杰传代码的研究, 才又提到了相关问题. 我对汇编代码一窍不通, 所有相关机制和走位, 参考的都是龙吟、孝直、周瑜、月亮等几位前辈的研究成果. 正是看到您近期开始研究汇编代码, 才希望能有机会解答当前以及几年前心中的疑惑.

孝直的移动型 AI 算法帖子 (https://www.xycq.org.cn/forum/viewthread.php?tid=220902), 已经把机制描述得较为详尽, 并给出了伪代码. 但可能是考虑到源码的复杂和晦涩, 孝直兄已经将其翻译成了可读语言. 在这过程中, 难免有一些边缘情况是中文描述/伪代码没法覆盖的. 仅就本帖的例子而言,  它和原帖中 “以(A)为中心,如果移动范围+攻击范围内有敌人,则按照AI=3(休息)的方式操作” 的描述相关, 对应着伪代码 “最近敌代码=search(当前(x,y),8,移动力,(-1,-1))” 的部分.

我的第一感觉是, 在搜索移动+攻击范围内最近敌时, 确实没考虑当前位置. 并且, 在搜索不限范围的最近敌时, 也没有考虑当前位置. 目前在信都之战能够复现这一现象的位置有 3 个 (这里就不贴图了), 是桥上的两个位置, 和桥右边的位置. 这些位置的共同点是, 当敌人紧挨我方时, 无法以任何移动>=1的方式找到任一个可以攻击到我方的位置 (无所谓这一新位置是否已被其他敌方占位).

但这样的解释也诚如仁兄所说, 无法令人感到满意. 类似的“一夫当关, 万夫莫开”地形并不难找. 我会再找机会验证类似的猜想. 但需注意, 可能需要同时验证拓扑结构为环形的地图, 和一格可以卡住另半张地图的地形. 因为后一种情况下, 别的我方人员不可能是最近敌, 但显然 (?) 敌人不会原地不动任我方卡住 (需要找例子证实).

这个现象让我联想到 2 个问题 (和本问题可能无关). 一个是敌人被围时, 只能停在原地, 但不会用策略, 并且按固定的攻击顺序攻击我方. 另一个是移动时的亮格和暗格 (https://www.xycq.org.cn/forum/thread-305686-1-2.html) (另注, 这游戏还真的有城墙地形, 不过不是武将, 就是地形) 他们的共同点是, 明明貌似可以沿用简单的机制 (被围了就直接计算行动价值; 使用相邻格子是否有敌军来设置 ZOC ), 但结果却是必须通过打补丁的形式来描述行动机制. 这些机制的形成, 可能是游戏创作者的刻意为之; 但我相信应该有较为简明的实现 (尤其是暗格和亮格的机制: 有容易的地形, 有难的地形, 容易的地形是停止格或者只有一本道的出路时, 难的地形就不能多走; 有必要搞这么复杂吗...?). 一个另外和原地机制相关的例子是, 任何情况下, 停留在原地的行动价值+1. 亦即, 若原地的原始行动价值为 x, 移动后的行动价值为 x+1, 则敌方总是会停在原地.

因此回到本问题, 我相信关于移动型 AI 的算法, 还有些细节可以完善. 例如, 在孝直的贴子中, search 函数既用来寻找最近敌, 又用来判断目标坐标是否可达. 关于可达性, 使用上右下左确实没问题. 但关于 (叠加攻击范围后的) 最近敌判断, 其实是依赖兵种的攻击范围 (或者, 也包括策略范围?). 我在原帖的 15 楼也给了一个使用了攻击范围判断最近敌后, 因为下邳桥头的特殊地形导致攻击最近敌类型的敌军原地休息的例子.

[ 本帖最后由 clubjack 于 2025-2-7 00:38 编辑 ]


顶部
性别:未知-离线 clubjack

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 11
编号 544597
注册 2021-5-11


发表于 2025-2-8 17:32 资料 短消息 看全部作者
回复 #4 漫漫苦短 的帖子

看到这一贴, 我的心情同样溢于言表! 看来真的很有必要入门一下汇编语言, 同时认真拜读一下兄台近期的技术贴.

说来惭愧, 小时第一次 (好像也是唯一一次) 通关, 啥也不懂, 靠着各种丢炸弹通了关. 前些年见识到了各种高端玩法, 重新捡起了英杰传, 但已不似年少时有大把自由时间, 至今尚未通关 N99. 最近一年参考月亮的全兵种 2699 开始重打, 也只刚打到了长坂坡. 鉴于人选和走位已经不需要动太多脑子, 乐趣重在“打谱”时的理解和感悟, 以及对少量关卡的精益求精 (虽然影响不到大局).

但正如亚马逊雨林中的蝴蝶扇动了两下翅膀, 少量人员经验的微量增加可能会在不经意的某个回合导致敌方走位大变, 不得不对整关的走位和顺序进行微调. 在理解游戏数值和机制设计的基础上, 找到可行或最优解的过程着实令人激动. 而反复 SL 过程中, 不符合预期的敌方行动和概率也让人百般费解.

相信在漫漫兄的技术贴加持下, 能给英杰传的微观机制描述画上一个圆满的句号. 与此同时, 几位前辈关于整个游戏的 planning 也愈加完善. 感觉英杰传即将在近年迎来真正的技术巅峰~
顶部

正在浏览此帖的会员 - 共 1 人在线




当前时区 GMT+8, 现在时间是 2025-8-27 14:56
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.011377 second(s), 10 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP