[心得] AI行为模式研究(上)

楼主: saulesmeitas (太阳女)   2018-06-06 21:40:52
※本文参考自:
Verve-FEH这位Youtuber的“FEH AI Mechanics”系列影片
以及英文wiki的“AI”页面
前言:
AI的行为模式非常复杂 而且还不是每位角色每张地图都一样
要把通则和特殊情况全部列出来的话
大概写到总选举3.0出来了都还写不完
而且大部分的关卡都可以重复挑战
难关甚至都不用体力
所以我将重点放在斗技场的敌方AI上
希望能帮助那些 整天被再动+骑马远程搞得快崩溃的人
当然也可能你看了这篇文章之后
觉得反正斗技输了再多交几把剑就好…
因为真的很复杂
不过呢 从目前的研究来看
FEH的AI行为是“完全”可以预测的
完全相同的情况 一定会得到完全相同的结果
包括有时候会遇到的
明明角色技能圣印都装一样 为什么敌方的行动还跟作业影片里的不一样
那个其实也是有原因的(很多人可能都知道了 就是队伍顺序的因素)
所以说 若把AI的行为模式摸到滚瓜烂熟的话
在攻略关卡和发作业的时候其实也会有点帮助
可以省去不少retry的时间 但脑细胞可能会死得更多就是了
以下就由最简单的情况开始
慢慢往复杂的情况迈进
上面说“把重点放在斗技场AI”的意思是
这篇文章中的敌方AI都会在第一回合时立刻行动
和大部分的大英雄战中 需要我方角色先进入敌方攻击范围内的模式不同
但其实在此之后好像都没什么差别就是了
一、1V1
一名我方单位对上一名敌方单位
敌方单位的行为模式:
1.若持有武器,而我方单位处于攻击范围外,“敌方单位可移动并攻击到”的位置
则将沿着最短路径朝我方单位前进。
◎定义“最短路径”:从敌方单位前方一格起算,沿该单位所能行走的格子
到我方单位所处的格子处,花费最少格子数所行走的路径。
举例:https://imgur.com/Qqfd5tl
上图中 斯尔特(绿斧)跟阿尔冯斯的距离是“5格”
跟安娜和冰姬的距离都是6格 跟夏蓉的则是7格
1)要注意的是,无论敌方单位是近、远程,计算最短路径的最终目的地都是
“我方单位所站的格子”而非“可攻击到我方单位的格子”
听起来挺奇怪的但他就这么设计
2)对步兵来说 森林视为2格
对骑兵来说 阶梯视为2格 森林当然就要绕过去
2.当没有攻击目标,且移动范围内有复数格子时,将按照以下优先级来选择:
1)离我方单位最近的格子
这个大家都知道
2)在我方单位的攻击范围之外的格子
这个很容易理解
3)在我方单位的对角线上的格子
□ □
□ □

□ □
□ □
◎=我方单位 □=对角线上的格子
设计原因不明 有可能是为了方便躲谋策
但这游戏刚开服的时候应该是没有十字方向技能的吧?
4)特殊地形
特殊地形的优先级如下:
①防御地形
②兵种优势地形
飞兵觉得自己能上山下海很屌 他们就会优先飞到那上面去
森林和阶梯次之
步兵优先走阶梯
5)地板编号
如图 https://imgur.com/Nzmkrnh
数字越大 优先级越高
也就是说 当前四项条件都检查过 却仍然有复数格子可选择时
AI会优先朝上方和右方走 再来才是下方和左方
3.再来就是大家都知道的
若我方单位处于攻击范围内 则无论战斗结果如何必定攻击
若我方单位处于无法接触到的格子(如飞兵逃到海上)
则直接PASS
4.承上 若有复数格子可供选择 则按照以下顺序
1)防御地形
2)我方单位攻击范围之外
3)其他特殊地形
4)站在原地
5)地板编号
来选定
二、2V1
两名我方单位对上一名敌方单位
1.每当敌方单位准备移动时,都会选定一个我方单位做为目标
选定目标的方法主要是计算伤害
此计算伤害的方法和战斗中计算伤害的方法不同
首先 他只管“自己造成的伤害”
所以他不在乎我方单位会不会反击、杀不杀得了他
只在乎自己能否造成最多的伤害
这“最多伤害”的计算方法 会包括:
1)三角互克及特效武器
2)速度高于我方单位5以上时 追击的伤害
3)蓝字BUFF及红字DEBUFF
4)我方单位身上的远/近距离防御、架势系技能
5)敌方单位身上的武器杀、风薙等 及我方单位身上的防御队形等技能
6)角色间的支援
7)防御地形的加成
但不会计算:
1)纹章系技能
2)枭书系武器
3)羁绊系技能(攻击防守的羁绊等)
4)我方单位身上的防御系奥义
5)敌方单位身上的月系奥义
你可能会觉得这真是见鬼了 有的要算有的不算
嗯…我也这么觉得
伤害算好了 但事情还没完
目标的选定还跟距离有关 也就是上面提到的“最短路径”
其公式如下:
敌方单位为近战时 优先级=伤害-5x┌最短路径/移动格数┐
优先级最高者为攻击目标
◎┌X┐=X小数点以下无条件进位
移动格数指该敌方单位每回合的最大可移动格子数
如骑兵=3 步兵=2 重甲没行军=1
受到重压系技能的影响 则会变成1
举例:敌方君特距我方阿尔冯斯6格 可对其造成5点伤害
距我方夏蓉7格 可对其造成15点伤害
则阿尔的优先级为5-5x┌6/3┐=-5
夏蓉的优先级为15-5x┌7/3┐=0
0>-5 故君特的目标为夏蓉
当敌方单位为远程时,情况又更复杂了
公式变成:优先级=伤害-5x┌(最短路径-1)/移动格数┐
此处的“最短路径”会随着地形而改变
当我方单位面前只有一个障碍物时
远程敌方单位对最短路径的计算会穿过该障碍物
用Verve所举的例子来说明(但图是我自己拍的)
https://imgur.com/vyWW5MU
上图中,马尔斯和神威一样都是8速5抗
对里昂(左上红马法)来说 若按照一般的路径来看
神威要比马尔斯远得多 所以他应该会去找马尔斯才对
但因为神威上方只有一棵树 所以里昂在算最短距离时就会直接穿过它
如下图所示:
https://imgur.com/1sET4ln
里昂到两人的最短路径都是6格
所以就要用到另一条规则
若优先级相同,则队伍编号较大者有较高优先级
所谓队伍编号就是你在进关卡前队员排列的顺序
由左到右是1、2、3、4
上面的例子 队伍顺序是马尔斯-神威
所以里昂会去找神威 https://imgur.com/nTPHo5F
不过要注意的是
即使在选定目标时用了穿过障碍物的最短路径
实际行走时仍然会以我方单位所处的格子做为目的地
另外,装备救援路线之类的敌方单位
即使能靠该技能移动至原本的移动范围之外
从而缩短与我方单位的距离
他仍然会用上面的方法计算最短距离以及优先级
2.敌方单位的攻击范围内没有我方单位时,其移动规则基本上同1v1的情况
只是把 2)在我方单位的攻击范围之外的格子
这一条改成“会受到最少数量的我方单位攻击的格子”
3.若两名我方单位都在敌方单位的攻击范围内
则他将按照以下优先级选择攻击目标:
1)可击杀目标
①会被暗器系武器及封印系技能(攻击防守封印等)降低2点以上防守魔防者
暗器包括:
盗贼暗器(+)、秘毒暗器(+)、小猫暗器(+)
其他暗器则没有
你或许会问:为什么只有这些暗器?
Verve表示:啊灾别问我
你或许又会问:啊人都死了debuff他要干嘛
嗯…我还是不知道 但是下面的情况就会有差了
大概是为了统一顺序吧
②hp最高者
③会对敌方单位造成最少伤害者
④可使其奥义计量增加者
意思大概是 优先选会发动奥义的我方单位
因为发动奥义会让奥义计量的数字增加
⑤队伍编号最高者
2)双方都存活
①同上
②计算优先级公式:(敌方单位)造成的伤害x3-受到的伤害 所得最高者
③同上面的④⑤
3)会被击杀
①同上
②造成最多伤害
③同上
在这里,所谓的“伤害”已经是实际战斗算出的数字
也就是你把角色拉到敌人身上时 系统帮你算出的双方hp的变化
好了 这篇就先写到这里吧 我已经快不行了
由于Verve应该都是自己研究的
所以他也不能百分之百确定这些都是对的
他都有用实际的例子来证明
但也可能有隐藏的要素是没有被检查出来的
这就是设计实验的困难之处吧
如果大家有做出什么跟本文内容不合的状况
欢迎提出来 虽然我不一定能解答XD
或是也可以去Verve的影片下面跟他交流
那系列的观看人数都超少的
之后就是用1v2以及1v3来研究行动顺序
以及弄一些4v4的实例之类的
不过Verve的影片也还没出完 或许等他出完了我再来写最后那部分吧
感谢大家的阅读
作者: stkissstone (浅涧远秋)   2018-06-06 21:44:00
作者: changm (我是路人..借我过一下)   2018-06-06 21:48:00
基本上没再动都很好算有再动还没交手也很好算交手后有再动整个顺序就会乱掉了
作者: salamender (banana king)   2018-06-06 21:51:00
推,对谋策放置点有帮助
作者: momojj (momojj)   2018-06-06 21:51:00
这程式码一定一堆if
作者: arbalest712 (鸡蛋里没骨头)   2018-06-06 21:54:00
推,很有趣的研究我方AI的规则就简单多了:红撞蓝 蓝撞绿 绿撞红 XD
作者: salamender (banana king)   2018-06-06 21:56:00
这是敌方ai的写法,我方ai只有 cat roll
作者: weii (迷惑失道)   2018-06-06 21:59:00
作者: tkigood (提谷德)   2018-06-06 22:01:00
敌方的判断是工程狮写的 我方的判断是攻城猫写的
作者: stkissstone (浅涧远秋)   2018-06-06 22:03:00
作者: gekisen (阿墨)   2018-06-06 22:12:00
挖对面有个+10妮诺 我一定要用魔防最低的那只去撞他
作者: stkissstone (浅涧远秋)   2018-06-06 22:15:00
在帮你考验脚色强度
作者: TrueTears (真实之泪)   2018-06-06 22:22:00
AI多V多会有更多复杂的行动方式特别是牵扯倒 救援技能/再动角时 实在太难算..
作者: S404NotFound (silence)   2018-06-06 22:28:00
弄个NN把data丢进去给他分析
作者: lidingufo (ET-SIX)   2018-06-06 22:43:00
飞兵自以为很屌(笔记
作者: ghostlywolf (影特狼)   2018-06-06 22:48:00
遇到有墙那种的外加再动根本不知道该怎么算...所以我超恨那个双方各四排墙四排防御地形的地图...
作者: joe199277 (~卡摩君~)   2018-06-06 22:54:00
看不懂
作者: Icarus00004 (Icarus)   2018-06-06 23:25:00
我只会入门级技巧 想办法把敌方切割开来 剩下就是祈祷了
作者: kataraxia (KKK)   2018-06-07 00:16:00
地板编号那个,可以直接当作顺序是依上右左下来看
作者: Wolfmon (野狼兽~~究极进化)   2018-06-07 00:27:00
杖:打了我会死 不过还是打
作者: kyle87222 (kyle)   2018-06-07 00:36:00
我看到一半就放弃了
作者: mingchee (大叶)   2018-06-07 00:59:00
有遇过只有在再动的攻击范围内,她再动别人来打死我的这个不知道怎么计算的
作者: diefish5566 (LOL板李奥纳多皮卡丘)   2018-06-07 01:04:00
因为那个被再动的带XX支援吧会变成舞孃要打你->队友身上有buff技过来帮他上buff顺便进了攻击你的范围->再动角再动->冲脸翻船
作者: alen3822 (人)   2018-06-07 03:23:00
没想到竟然有优先级这种公式
作者: gekisen (阿墨)   2018-06-07 08:08:00
一定有啊 你把绿色和无色放到红剑攻击范围 两只都是被一刀死 但他就是会砍爆你的无色杖让你死透一点不过也有可能是杖不会反击优先砍就是了
作者: CloseFeather (克洛斯.菲勒)   2018-06-07 08:41:00
在攻击范围内没有一定攻击喔 如果角色带有辅助技能可能会替队友放辅助技
作者: arbalest712 (鸡蛋里没骨头)   2018-06-07 08:58:00
AB敌如果都打得到我方,但会被反死,好像会有A帮B放辅助增益后,B再过来被撞死的情形,不会一起上
作者: NormcoreV   2018-06-07 09:01:00
有辅助技能会先放再攻击所以会有死鱼大说的那种状况
作者: mushrimp5466 (吃了虾子的蘑菇)   2018-06-07 10:36:00
放弃看完但给推
作者: aurorahuangh (摩利支天洞玄)   2018-06-07 10:57:00
推有趣分析!
作者: ailio (Ailio)   2018-06-07 11:40:00
蛮好理解的,但是难以实用,本人脑容量跟即时运算会当机 XD
作者: qiaffvvf (鸑鷟)   2018-06-07 13:36:00
快推以免被发现我头昏脑胀有看没懂QQ
作者: kevin0125 (BZ)   2018-06-07 16:01:00
FEH的AI设计的大原则就是 "硬上 能杀越多人就杀越多"毕竟竞技场和部分关卡都是只要让你死一只就达成目的了也不可能不硬上 和玩家玩无尽躲猫猫只会超无聊
楼主: saulesmeitas (太阳女)   2018-06-07 17:39:00
大家应该还是比较想看敌方角色的行动顺序 不过Verve大神很久没更新了 可能真的很难吧
作者: Ensidia (要宅的这么神是有难度的)   2018-06-07 22:57:00
没错 竞技场通常会意外死都是死于再动手上 很难预测
作者: unzap (小洋)   2018-06-10 01:23:00
好猛的研究

Links booklink

Contact Us: admin [ a t ] ucptt.com