作者mimikuX (加油!)
看板FireEmblem
标题[心得] 飞空城相关之AI研究
时间Fri Mar 22 21:26:48 2019
大家好,又到了周末发废文时间,今天要来谈的是飞空城的AI研究。
因为飞空防守队的关系,越来越多人在问为什麽再动会跑去打人,不会再动队友。为什麽
A会先动,而不是B...等等
之前有版大分享AI 行为模式研究,不过原文实在太长了所以很难看得下去,而且那时没
有飞空城大家不是很在意,小弟去年底飞空城跨季17连败的时候,真的受不了仔细的去给
他研究了一番,从此飞空城直上21阶,考试都考100分了呢,所以不要再问为什麽了,来
看看 AI的行动原理吧!
我的知识都是根据Verve大推算出来的规则来的,原来Verve大的已经写得很清楚了(我最
下面有大概中译)
也感谢 saulesmeitas 之前的AI研究文章,我就是从那边开始的
这篇我试着把大家比较关心的重点节录出来,讲的越简单浅显越好,要细节的再自己拉到
最後
。
1. 首先AI的行动原理是好几个回圈,他会把每一个角色,针对每一个队手,造成的伤害
都先计算出来,也会把每一个角色针对每一个队友进行的辅助结果也计算,根据的规则决
定他要走哪一步(哪一个角色,做哪一个动作-可能是攻击,辅助或移动),然後做完该动
作後,再全部重来一次,再重新依走完的状况分析一次,再决定一个动作,再重头分析,
以此类推。
所以AI不会去考量他下一步後要怎麽走用这一步来布局,完全是根据现况规则决定他这一
步怎麽走,走完再重新用一样的规则,再全部评估一次,一直循环,直到所有人走完。
2. AI 回圈评估行动的顺序,会先根据现况评估一次
『I. 移动顺序评估』-->
『II.评估攻击范围』-->
『III.评估战斗结果』
然後进行行动,行动的顺序是:
-->
『IV. 战斗前辅助』-->
『V. 攻击』-->
『VI. 战斗後辅助』-->
『VII. 移动』
也就是说 :
IV 能战斗前辅助的会先辅助,然後回到II, 再评估,再看看有没有能辅助的
V. 再来能攻击的先攻击 打完回到II, 找下一个
VI 没有能攻击的了 再来战斗後辅助
VII 没有能辅助的了 再来移动
最後回合结束
(注:每一次的行动,就只会走一个人,不管是辅助、攻击,那人走完後,就会回到 II
-> III -> IV….再重走流程一次)
接下来讲细节:
3. 『IV. 战斗前辅助』 (摘录重点):战斗前辅助指还至少还有一个队友,攻击范围内有
对手的。
谁会先辅助对友,谁又会自己冲上去打?
3.1 首先要符合资格的人才会在战斗前辅助, 资格包括
i 自己战斗无法打死对方。
ii 自己战斗中无法至少给与对方 5 点伤害。
iii 支援对象还未行动,而且支援对象范围内有敌人,或是在敌人范围内。
iV 而且Buff至少能给与2点Buff(单项)。
否则这个角色就不会进行支援。完整的支援者资格,跟被支援者资格,可以看最下面
Chart A / B。
3.2 如果同时有几个人可以支援,谁会先支援?根据下列顺序决定辅助者优先顺序:
i. 非移动系辅助技能>移动系
ii. 无武器 > 有武器
iii. 与最近敌人距离:最远最优先
iv. 非移动系辅助技能顺序:再动>补血 = 休息 = 应援
v. 位置编号:越低越优先 (编队最左边的)
也就是说,如果打不死打不痛人的,带支援技能的,会先支援范围内有敌人的队友,让他
们吃了再上。
如果同时有复数可以支援的,会依3.2的顺序支援。
要注意一旦第一个人支援後,全部就要依照支援後的情势重新评估(回到步骤II),而不是
第一个人支援完第二个马上支援,因为第一个支援後,第二个可能就可以打死对手,或伤
5滴以上,那第二个就不会再支援,会攻击。
4. 『V. 攻击』 (摘录重点) 攻击时谁会先上,谁又会打谁?
攻击时,每角色每一个范围内的对手对战结果都会先计算出来。
假如有2个角色,范围内各有3个对手,那2x3=6种对战结果都会计算出来。
根据对战结果,选出最佳的来决定哪个角色对哪个对手。
根据下列顺序,决定攻击者优先顺序:
i. 战斗结果:胜>平>输 (赢=打死对方, 输=被打死, 平 = 双方都没死)
ii. 能够debuff对手至少2点防或抗 或给予额外伤害(死息 疼痛)
iii. 攻击比例: 越高越优先 (攻击比例 = 对方失血x3 - 自己失血)
iv. 自身移动范围: 越大越优先
v. 战斗後对手奥义CD增加: 是>否 (对手发动奥义後CD还原也算增加)
vi. 对手队伍顺序:越高(後面)越优先
vii. 队伍优先顺序:越高(後面)越优先
也就是说,能打死人的会先走,能打死人又能debuff的会更先。
如果都可以,打最多血自己失血最少的先,如果都一样,那移动范围大的先...以此类推
。
一样要注意,最先的那个人打完之後,战况改变,一切回到II.重新评估(有可能变成又要
战斗前辅助,然後重新评估後,才会再攻击)。
5. 『VI. 战斗後辅助』(未行动的队友攻击范围内没有敌人了)
这时Buff上完了,打也打完了,主要是AI会把在敌人攻击范围内队有拉出来。
要特别注意的是弓女儿的未来之瞳(等同替换),是在战斗後才会发动的辅助技,
发动的条件是范围内的队友必须:
‧ 已经行动过
‧ 在敌人攻击范围内
‧ 而且可以被该移动辅助移动到更少敌人的范围内
要设计弓女儿的行动的,可以参考。
6. 最後是『VII 移动』:
当能辅助、能打的都打完了,最後就是纯移动了。移动的条件如下。
依下列顺序决定『移动顺序』:
i. 无辅助 > 有辅助技能
ii. 近战 > 远程 > 无武器
iii. 距离敌人 近 > 远
iv. 位置编号:越小越优先
很重要的一点,近战会比远程先走,也就是说 比如范围内都没敌人,比如飞空城对方杀
了一只之後全军彻退,结果你就看到你的再动(舞娘)先走了,然後你的主攻手(法师)才走
。两个都变箭靶。原因就是舞娘是近战,法师是远程。
如果要让主攻先走,舞娘再走,就要拔舞娘武器,或是换法师再动(如果两个都远程,那
就要比距离跟队伍编号)
基本上根据这些逻辑大概可以解释你飞空城的猫AI,也可以根据这些做调整。
比如你想让谁先打,谁再上,有问题的话,我相信提出来,套上面的逻辑都可以解释得了
。
至於有一些细节的,可以去看原文的Plain Text,或是我自己打(到一半)的中译本…
原文:
https://vervefeh.github.io/FEH-AI/textguide.html
中译:
https://drive.google.com/open?id=1Gm8nMOmFBfEAlLjVI-IOXUrrjoAHD_OK
还有一些有趣的知识,我补充一下:
比如AI在攻击或辅助时,会选择站哪一格进行?答案是:
i. 防御地形:有>无
ii. 被敌人威胁:最少的位置最优先
iii.是否需要"传送": 是>否
iv. 特殊地形:高山>森林>马沟>一般
v. 移动格数:越少越优先
vi. 格子优先顺序:越高越优先
也就是他会挑有防御地型的先走,再来挑被最少敌人攻击范围重叠的位置,如果是要传送
的位置跟不需要传送的位置比,会优先挑要传送的(浅蓝格 - 空导、飞导、救援、特技飞
行...),然後再来是地形….
这些在安排飞空城的阴人流的时候,很多人已经在用了,不知道为什麽,这就是原因。
然後这篇文章我打了两个小时 = = 明明我之前就整理过了。希望至少传承换我欧= =
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 106.104.101.98
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/FireEmblem/M.1553261211.A.712.html
1F:推 drefly: 先推以免别人以为我们看不懂…03/22 21:29
2F:推 diefish5566: 猛03/22 21:30
3F:→ mimikuX: 其实没有很复杂啦 看过一轮之後 有点概念後 越看AI 你03/22 21:35
4F:→ mimikuX: 会越懂03/22 21:35
5F:推 arbalest712: 推,整理得更简要了03/22 21:35
6F:推 kyle87222: 先推03/22 21:40
7F:推 Radisu: 推 03/22 21:41
8F:推 kramasdia: 推 03/22 21:43
9F:→ mimikuX: 我好像太强调回圈的观念 重复了好几次 变得很繁琐呵呵03/22 21:46
10F:→ mimikuX: 待会来修饰一下 03/22 21:47
※ 编辑: mimikuX (106.104.101.98), 03/22/2019 21:49:35
11F:推 momojj: 推,经历飞空城的摧残看了有感觉 03/22 22:25
12F:推 beckwon: 我总觉得传承水的AI跟其他再动不一样 他的攻击优先权好像 03/22 22:32
13F:→ beckwon: 设的比较低 就算放个红色不会反击的角色在他攻击范围内他 03/22 22:33
14F:→ beckwon: 都有可能不理会 03/22 22:33
15F:推 killerj466: 会不会是她没装武器(X 03/22 22:35
16F:→ mimikuX: 基本上比较特别的辅助技能 就是治癒之手(蓝米妈) 跟休息 03/22 22:36
17F:→ mimikuX: + 因为状态异常会触发 传水悠悠摇曳我看来就跟跳舞一样 03/22 22:36
18F:→ mimikuX: 简单说你希望传水不要打人要再动 就是要拔武器不然就是 03/22 22:39
19F:→ mimikuX: 压攻到打人不到5滴 她就不符合战前辅助的条件 03/22 22:39
20F:→ mimikuX: 对方会不会反攻不是重点 重点还是在能打几滴 不过传水 03/22 22:41
21F:→ mimikuX: 攻44 如果红色要被打5滴以内抗要48左右 你是不是遇到光 03/22 22:41
22F:→ mimikuX: 伊敦之类XD 03/22 22:41
23F:推 aurorahuangh: 简单来说我方AI就是猫在操控的就能理解了﴿ 03/22 23:18
24F:推 KingOfAsk: 推 03/22 23:36
25F:推 a000000000: 移动那边可以用i2来钓弓角走出再动范围 03/22 23:41
26F:推 kisakisa: 不好意思 有几个不懂的 第4点vi和vii队伍顺序 是指 03/23 00:39
27F:→ kisakisa: 编队最右边的优先吗? 03/23 00:40
28F:推 kisakisa: 还有最後补充的地方 vi. 格子优先顺序 这个是指什麽呢? 03/23 00:41
29F:→ kisakisa: 感谢麦特大发文教学 03/23 00:42
30F:→ mimikuX: vervefeh.github.io/FEH-AI/glossary.html 03/23 00:46
33F:→ mimikuX: 格子优先顺序Tile Priority 最右上的(数字大的)优先 03/23 00:49
35F:→ mimikuX: 队伍顺序Slot Order 通常前面的先动 後面的先被支援 先 03/23 00:51
36F:→ mimikuX: 攻击 不过这是在其他条件都一样情况下 必须用Slot Orde 03/23 00:51
37F:→ mimikuX: r 来决定的时候 才会成立 03/23 00:51
38F:→ mimikuX: 教主你讲什麽我怎麽看不懂@@ 03/23 00:52
39F:→ a000000000: 啊我的意思是说 我都用i2之类的飞角 03/23 01:14
40F:→ a000000000: 骗马琳之类的走出对方再动的范围 03/23 01:15
41F:→ a000000000: 例如再动一开始站马琳右边 然後i2放左下角 03/23 01:15
42F:→ a000000000: 开打的时候马琳往左边跑 再动就摸不到马琳 03/23 01:16
43F:→ a000000000: 大概4这种概念 03/23 01:16
44F:推 kisakisa: 原来格子还有这样的优先顺序@@ 感谢麦特大 学到好多 03/23 01:33
45F:推 saulesmeitas: 我之前也有想翻译那网站 但就懒病发作XD 03/23 01:37
46F:推 turelord: 推整理 03/23 10:36
47F:→ mimikuX: 我去年底就翻译好了 也是懒病发作 昨天突然心血来潮QQ 03/23 10:39
48F:→ mimikuX: 教主i2不会被马琳射爆吗@@ 现在飞空城防守应该很少这种XD 03/23 11:14
49F:→ mimikuX: 大家都会算好好的 一定会再动到的(拿出你的洛基) 03/23 11:14
50F:推 k820109x: 用打带跑的话还是会有这种喔 03/23 11:24
51F:→ k820109x: 被克的角色的位置会影响AI移动方向 03/23 11:25
52F:→ k820109x: 激化被克的话更明显 一定选最短路径往脸上冲 03/23 11:26
53F:推 a000000000: 就还在马琳射程外 03/23 11:39
54F:→ a000000000: 应该这样讲 例如对方有中二妹再动马琳 03/23 11:39
55F:→ a000000000: 胖鸡去中二妹打的到但是马琳打不到的地方 03/23 11:40
56F:→ a000000000: 如果马琳目标是胖鸡的话会被在动然後去打胖鸡 03/23 11:40
57F:→ a000000000: 但是i2在反方向 马琳会想去抓i2 就跑到再动范围外 03/23 11:41
58F:推 unzap: 只能推 03/23 12:09
59F:推 ratadune: 大推 03/23 12:12
60F:→ mimikuX: 喔教主的意思是利用对手会『朝最短距离往敌人前进』的特 03/23 12:23
61F:→ mimikuX: 色 在攻击范围外 把马琳跟再动分别调开 03/23 12:23
62F:→ a000000000: 应该是朝伤害最大的敌人前进这事 03/23 13:14
63F:→ a000000000: 我也不确定我对不队 可是看到马琳就想这样干@@ 03/23 13:15
64F:→ bubunana: 请问胖鸡是谁呢? 03/25 05:54
65F:推 a000000000: 圣诞法 03/25 09:45