看板 FireEmblem 關於我們 聯絡資訊
※本文參考自: 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的影片也還沒出完 或許等他出完了我再來寫最後那部分吧 感謝大家的閱讀 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.224.0.1 ※ 文章網址: https://www.ptt.cc/bbs/FireEmblem/M.1528292457.A.34F.html
stkissstone: 推 06/06 21:44
changm: 基本上沒再動都很好算 06/06 21:48
changm: 有再動還沒交手也很好算 06/06 21:49
changm: 交手後有再動整個順序就會亂掉了 06/06 21:50
salamender: 推,對謀策放置點有幫助 06/06 21:51
momojj: 這程式碼一定一堆if 06/06 21:51
arbalest712: 推,很有趣的研究 06/06 21:54
arbalest712: 我方AI的規則就簡單多了:紅撞藍 藍撞綠 綠撞紅 XD 06/06 21:55
salamender: 這是敵方ai的寫法,我方ai只有 cat roll 06/06 21:56
weii: 推 06/06 21:59
tkigood: 敵方的判斷是工程獅寫的 我方的判斷是攻城貓寫的 06/06 22:01
stkissstone: https://imgur.com/3DW0T9j.jpg 06/06 22:03
stkissstone: 可是 貓很可愛 06/06 22:04
gekisen: 挖對面有個+10妮諾 我一定要用魔防最低的那隻去撞他 06/06 22:12
stkissstone: 在幫你考驗腳色強度 06/06 22:15
TrueTears: AI多V多會有更多複雜的行動方式 06/06 22:22
TrueTears: 特別是牽扯倒 救援技能/再動角時 實在太難算.. 06/06 22:26
S404NotFound: 弄個NN把data丟進去給他分析 06/06 22:28
lidingufo: 飛兵自以為很屌(筆記 06/06 22:43
ghostlywolf: 遇到有牆那種的外加再動根本不知道該怎麼算... 06/06 22:48
ghostlywolf: 所以我超恨那個雙方各四排牆四排防禦地形的地圖... 06/06 22:48
joe199277: 看不懂 06/06 22:54
※ 編輯: saulesmeitas (61.224.0.1), 06/06/2018 23:02:29
Icarus00004: 我只會入門級技巧 想辦法把敵方切割開來 剩下就是祈 06/06 23:25
Icarus00004: 禱了 06/06 23:25
kataraxia: 地板編號那個,可以直接當作順序是依上右左下來看 06/07 00:16
Wolfmon: 杖:打了我會死 不過還是打 06/07 00:27
kyle87222: 我看到一半就放棄了 06/07 00:36
mingchee: 有遇過只有在再動的攻擊範圍內,她再動別人來打死我的 06/07 00:59
mingchee: 這個不知道怎麼計算的 06/07 01:00
diefish5566: 因為那個被再動的帶XX支援吧 06/07 01:04
diefish5566: 會變成舞孃要打你->隊友身上有buff技過來幫他上buff 06/07 01:04
diefish5566: 順便進了攻擊你的範圍->再動角再動->衝臉翻船 06/07 01:05
alen3822: 沒想到竟然有優先級這種公式 06/07 03:23
gekisen: 一定有啊 你把綠色和無色放到紅劍攻擊範圍 兩隻都是被一 06/07 08:08
gekisen: 刀死 但他就是會砍爆你的無色杖讓你死透一點 06/07 08:08
gekisen: 不過也有可能是杖不會反擊優先砍就是了 06/07 08:15
CloseFeather: 在攻擊範圍內沒有一定攻擊喔 如果角色帶有輔助技能 06/07 08:41
CloseFeather: 可能會替隊友放輔助技 06/07 08:41
arbalest712: AB敵如果都打得到我方,但會被反死,好像會有A幫B放 06/07 08:58
arbalest712: 輔助增益後,B再過來被撞死的情形,不會一起上 06/07 08:59
NormcoreV: 有輔助技能會先放再攻擊 06/07 09:01
NormcoreV: 所以會有死魚大說的那種狀況 06/07 09:02
mushrimp5466: 放棄看完但給推 06/07 10:36
aurorahuangh: 推有趣分析! 06/07 10:57
ailio: 蠻好理解的,但是難以實用,本人腦容量跟即時運算會當機 XD 06/07 11:40
qiaffvvf: 快推以免被發現我頭昏腦脹有看沒懂QQ 06/07 13:36
kevin0125: FEH的AI設計的大原則就是 "硬上 能殺越多人就殺越多" 06/07 16:01
kevin0125: 畢竟競技場和部分關卡都是只要讓你死一隻就達成目的了 06/07 16:04
kevin0125: 也不可能不硬上 和玩家玩無盡躲貓貓只會超無聊 06/07 16:05
saulesmeitas: 大家應該還是比較想看敵方角色的行動順序 不過Verve 06/07 17:39
saulesmeitas: 大神很久沒更新了 可能真的很難吧 06/07 17:40
Ensidia: 沒錯 競技場通常會意外死都是死於再動手上 很難預測 06/07 22:57
unzap: 好猛的研究 06/10 01:23