news 2026/10/3 8:16:38

FGA 战斗脚本完全指南:从编队映射到支援选择的实战配置详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
FGA 战斗脚本完全指南:从编队映射到支援选择的实战配置详解
  • 移动开发
  • GUI 自动化
  • 计算机视觉

【免费下载链接】FGA

Auto-battle app for F/GO Android

项目地址:https://gitcode.com/gh_mirrors/fg/FGA
点击查看免费下载

导读

本文基于 FGA(Fate Grand Automata,F/GO Android 自动战斗应用)官方文档中的战斗配置章节,系统讲解如何为周回刷本编写可复用的战斗脚本。文章会先带你走一遍「创建脚本 → 编写命令」的完整流程,然后逐条拆解命令语法中每一项字母与符号的含义(技能、宝具、指令卡、御主技能、换人、敌我目标选择等),再深入讲解附加配置(素材、服务器、编队、卡优先级、支援选择)。读完本文,你将能独立为任意从者队伍编写、校验并调优一套完整可运行的 FGA 战斗脚本,并理解这些命令在底层是如何被解析执行的。

说明:本文以 Battle.md 为主体展开,命令语法、枚举与解析逻辑均以当前仓库 scripts 下的源码为准。


一、进入战斗配置界面并创建脚本

Step 1 - 进入 Battle Configs 菜单

在 FGA 主界面找到 "Battle Configs"(战斗配置)入口并点击进入。这是所有战斗脚本的管理入口,后续创建的每个脚本都会保存在这里。

Step 2 - 通过悬浮按钮新建脚本

点击右下角的悬浮按钮(Floating Action Button)创建新脚本。

Step 3 - 为脚本命名

为新脚本取一个便于识别的名称,例如按队伍或用途命名。还可以(可选)添加一条备注,例如记录"这个脚本用于哪套从者阵容"之类的信息,方便日后区分管理。

Step 4 - 编辑命令(Command)

命令编辑界面就是战斗脚本的核心编辑区,FGA 在战斗中会完全按照这里编排的"命令串"去执行操作。下一节将系统介绍命令串的语法。

从仓库源码看,每个战斗配置都被建模为 IBattleConfig,其中skillCommand: String字段正是这条命令串本身,此外还包含cardPriority(卡优先级)、servantPriority(从者优先级)、party(编队槽位)、materials(素材)、support(支援选择)等配置,并支持export()/import()进行导入导出。


二、命令(Commands)详解

命令串的本质是一串由字母、数字与符号组成的字符序列,最终会被解析为"波次 × 回合 × 动作列表"的二维结构。解析入口在 AutoSkillCommand.parse():命令先按波次分隔符,#,拆成波次,每个波次再按回合分隔符,拆成回合(见 WaveTurn),每个回合内再逐个字符解析成动作。

2.1 Party Mapping(编队映射)

编写战斗脚本前,必须记住从者位置非常重要:你的编队中每位从者会被按顺序编号 1 到 6(从前到后),脚本中所有技能、宝具、目标选择都基于这个编号。

  • 场上 1、2、3 号位是前排(战斗中的主力);
  • 4、5、6 号位是后排(通常在换人时被换上)。

2.2 Skills Mapping(技能映射)

技能的语法遵循"位置字母 + 技能序号字母"的规则。技能字母在源码中定义于 Skill.kt:

从者位置技能 1技能 2技能 3
1 号位abc
2 号位def
3 号位ghi

例如:a表示 1 号位从者的第 1 技能,f表示 2 号位从者的第 3 技能。这些字符在 AutoSkillCommand.parseAction() 中被逐个识别并构造为AutoSkillAction.ServantSkill(skill, targets)。

2.3 Targeting(技能目标选择)

可以指定目标的技能,需要在技能字母后追加目标从者的位置数字来指定施放对象:

目标代码
1 号位从者1
2 号位从者2
3 号位从者3

这些目标数字在源码中对应 ServantTarget 中的A('1') / B('2') / C('3')。例如a1表示"对 1 号位从者使用 1 号位从者的第 1 技能"(常见的场景如 C 呆、杀狐等单体辅助技能对自己或主力施加 buff)。

多目标技能:若技能可以同时指定多个目标,用括号包裹目标列表,例如e(12)表示对 1 号和 2 号位同时施放 2 号位从者的第 2 技能。对应解析在 AutoSkillCommand.getTargets(),支持(1)、(12)、(123)以及混合特殊目标(见下文 Special Skills)。

2.4 Special Skills(特殊技能)

部分从者的技能具有额外分支选项,FGA 在命令编辑器底部会显示对应的特殊按钮。这些特殊选项在源码中统一建模为 ServantTarget.SpecialTarget,语法上使用方括号包裹特殊目标代码,例如[Ch2A];解析器对未闭合的[或]会抛出 "Found [ but no matching ] in Skill Command" 之类的错误(见 AutoSkillCommand)。

Kukulkan / UDK-Barghest(二选一技能)
  • Kukulkan:第 1、3 技能是自身目标技能,可通过消耗暴击星获得可选附加效果。
    • Option 1(不消耗暴击星):对应[Ch2A];
    • Option 2(消耗暴击星):对应[Ch2B]。
    • 其第 2 技能是可指定目标的技能,同样可选择Option 1/2后再接目标数字,例如[Ch2B]1。
    • 编辑器中点击 "Kukulkan" 按钮可以替换按钮文字为更直观的说明(仅视觉效果,不影响脚本执行)。
  • UDK-Barghest:第 3 技能可以把她的宝具在群体(AoE)与单体(Single Target)之间切换。
    • 先点击Choices (2),再选Option 1(AoE)或Option 2(单体)。
    • 对应代码同样是[Ch2A]/[Ch2B]。
Emiya / BB Dubai(宝具类型二选一)

Emiya 与 BB Dubai 的技能可以把宝具切换为 2 种形态之一。在命令编辑器中点击第 3 技能后,底部会出现NP Type (2)选项,需要为这些从者选择。

  • 注意:只有三技能已满级强化(Lvl. 10)的 Emiya 才能使用NP Type (2)选项(BB Dubai 同理)。
  • FGA无法自动检测技能是否满级,但你可以利用"Preferred Friends(优先好友)"功能来确保选到正确的支援从者。
Space Ishtar(宝具类型三选一)

太空伊什塔尔的第 2 技能可在 Quick、Arts、Buster 三种宝具形态中切换。点击第 2 技能后会出现NP Type (3),进入新界面从 3 个选项中挑选;底部按钮可以预览每个选项对应技能的效果。

Mélusine / Ptolemaios(变身)

Mélusine 的第 1、2 阶段第 3 技能、以及 Ptolemaios 的第 3 技能会在战斗中改变从者的灵基形态(Ascension)。

  • 使用Transform选项(代码M)可以同时处理长动画与变更后的指令卡;若不用Transform,战斗剩余部分的 Servant Priority 会失效(因为灵基变化后卡片判定被打乱)。
  • Mélusine 警告:在 1、2 阶段使用过第 3 技能后,后续再次使用第 3 技能应使用普通第 3 技能命令(例如她在 1 号位时用c),而不是Transform;如果开局就是 3 阶段灵基,则完全不需要Transform。
  • Ptolemaios 相反:他每次使用第 3 技能都会改变形态,因此每次都需用Transform。
Soujuurou / Charlotte / Hakuno / Van Gogh(三选一技能)

这些从者的特殊技能有 3 个选项,需要点击Choices (3):

  • Soujuurou 第 3 技能:可以在一回合后改变指令卡;
  • Charlotte(强化后的第 3 技能):根据所选选项获得不同效果;
  • Hakuno 第 3 技能:3 回合内提升伤害;
  • Van Gogh (Miner) 第 1 技能:3 回合内提升指令卡性能。

对应代码为[Ch3A]/[Ch3B]/[Ch3C]。编辑器底部按钮可以预览每个选项的效果(仅视觉用途)。

提示:以上[Ch2A]、[Ch2B]、[Ch3A]等特殊目标代码与旧版Option1('K') / Option2('U')并存,但后者已被标记为@Deprecated(见 ServantTarget.kt),新脚本请使用[ChxA]形式。

2.5 Enemy Targeting(敌方目标选择)

与己方从者一样,敌方单位也有编号并可被指定为目标:

  • 敌人目标代码为t后跟数字:t1、t2、t3(定义于 SpecialCommand.EnemyTarget 与 EnemyTarget)。
  • 与 FGO 游戏一致,一次只能选中一个敌人。

例如ct1表示"3 号位从者使用第 3 技能,并指定 1 号敌人为目标"(常用于术呆宝具、杀狐技能等需要锁定敌人的场景)。

2.6 Noble Phantasm(NP)Order(宝具顺序)

宝具使用从者位置编号:

宝具代码
1 号位从者宝具4
2 号位从者宝具5
3 号位从者宝具6

代码定义于 CommandCard.NP,在 parseAction 中被解析为AutoSkillAction.Atk.np(np)。

宝具可以任意顺序使用,但请记住:它们会按你选择的顺序依次释放。例如46表示先放 1 号位宝具再放 3 号位宝具。

Cards before NP(宝具前使用指令卡)

如果需要在宝具前先出指令卡,使用n后跟卡牌数量:

  • n1:先出 1 张指令卡再放宝具;
  • n2、n3同理。

语法定义于 SpecialCommand.CardsBeforeNP,解析时把n后的数字转换为AutoSkillAction.Atk.cardsBeforeNP(count)。连续的攻击类动作(NP 与"卡+NP")会被合并为一次行动(见 AutoSkillCommand),例如45n1等价于"1 号位宝具前先出 1 张卡,随后接 3 号位宝具"这类复合指令。

2.7 Master Skills(御主技能)

所有御主礼装(Mystic Code)的技能处理方式相同(换人服除外):

  • j:御主技能 1(对应 Skill.Master.A)
  • k:御主技能 2(对应Skill.Master.B)
  • l:御主技能 3(对应Skill.Master.C)

技能后同样可接目标数字(如k2表示御主技能 2 指定 2 号位从者)。

2.8 Master Skills - Plugsuit(换人礼装)

使用换人礼装(Plugsuit)时不应使用l命令,而应使用专门的换人命令:

  • x后跟两个数字:x+ 场上成员编号 + 替补成员编号。

代码定义于 SpecialCommand.OrderChange,两个数字分别来自 OrderChangeMember.Starting(1/2/3,场上)与OrderChangeMember.Sub(1/2/3,替补)。

例如x31:把 3 号位从者换下场,换上一号替补(通常在场上 3 号位是插件、替补 1 号位是主手时使用)。执行时会触发换人礼装的"换人菜单"。

2.9 同一波次的下一回合与下一波次

这是命令串里两个重要的分隔符:

  • ,#,:下一波次(Next Wave)(见 WaveTurn.Wave);
  • ,:同一波次内的下一回合(Next Turn)(见WaveTurn.Turn)。
Next Wave(下一波次)

波次显示在战斗界面右上角。为一个波次编排完技能/宝具后,点击 "Next Wave" 按钮即可进入下一波次的编排。使用 Next Wave 意味着告诉 FGA:在此之前不需要做任何其他事。

⚠️警告:如果使用了 Next Wave 按钮,那么你之后编排的任何技能只会在下一波次激活。务必反复检查脚本,避免出现"技能排错波次"这种低级错误。

Next Turn in the same wave(同一波次的下一回合)

用于处理同一波次内需要跨回合操作的情况(例如敌方存活时间超过一回合、或需要先等 NP 条/指令卡刷新)。

Wave and Turn Indicator(波次与回合指示器)

自 FGA Build 2382 起,可以在命令编辑界面中实时跟踪当前所处的波次与回合位置,帮助你校验脚本编排是否正确。

Raid Battle(Raid 战)

Raid 战有时只有 1 个波次。此时必须选择"同一波次的下一回合"(Next turn in the same wave)选项,而不是"下一波次",否则脚本会认为战斗已经结束。

2.10 无操作命令

0表示本回合不做任何操作(No-Op),定义于 SpecialCommand.NoOp。例如在某回合需要等待(如敌方自充后开宝具、等 debuff 结束)时,可以在该回合写入0。


三、附加战斗配置(Additional Battle Config,可选)

3.1 Materials(素材)

需要刷取特定素材时,可以在配置中指定素材。选择后,素材会显示在列表顶部;点击OK后会显示前 3 个已选素材的摘要。素材枚举定义于 MaterialEnum,战斗结束后 FGA 会通过 MaterialsTracker 跟踪掉落情况。

3.2 Spam(重复释放技能)

Spam 选项用于在战斗中对特定从者反复释放技能。其行为定义见 ServantSpamConfig / SpamConfig,运行时由 SkillSpam 模块执行,具体讨论可参考 FGA 官方 issue #510(仓库内 Battle.md 的 Spam 小节引用了该链接)。

3.3 Server(服务器)

如果你在多个服务器(如日服、美服、台服)游玩,可以指定脚本只在对应服务器生效——这样游戏内弹出脚本选择菜单时,只会显示匹配当前服务器的脚本。对应配置字段为server: GameServer?(见 IBattleConfig,枚举见 GameServerEnum)。

3.4 Party Selection(编队选择)

可以为脚本指定一个编队槽位。这样启动 FGA 时,它会检查你当前使用的编队是否在正确的槽位上,如果不是则自动切换到正确的编队。对应字段为party: Int(IBattleConfig),切换逻辑见 PartySelection。


四、Card Priority(卡优先级,可选)

卡优先级是可选功能,不需要每次新建脚本都设置。

4.1 原理说明

卡优先级用来告诉 FGA 如何处理场上的指令卡(face cards):列表高位的卡拥有比低位卡更高的使用优先级。

符号含义(Symbols used in Card Priority)
符号含义
WB克制不利的 Buster(Weak Buster)
WA克制不利的 Arts(Weak Art)
WQ克制不利的 Quick(Weak Quick)
BBuster
AArts
QQuick
RB被克制的 Buster(Resist Buster)
RA被克制的 Arts(Resist Art)
RQ被克制的 Quick(Resist Quick)

典型用途示例:

  • Buster 优先:把 B 系符号排到列表高位,用于追求单卡伤害;
  • Arts 优先(冲 NP):把 A 系排高,用指令卡快速攒 NP;
  • Quick 优先(产星):把 Q 系排高,用于获取暴击星。

按波次差异化:可以为不同波次设置不同的卡优先级。如果只设置了 Wave 1 的优先级,其余波次都会沿用默认设置;因此只有当你确实需要差异化时才需要添加更多波次。

4.2 Servant Priority(从者优先级)

从者优先级优先于卡优先级。需要手动开启该选项,然后选择你要优先出卡的从者(位置遵循 Party Mapping 的编号规则)。对应源码为 ServantPriorityPerWave 与useServantPriority开关(IBattleConfig),运行时逻辑见 FaceCardPriority。

4.3 Brave Chain(Brave 连携)

Brave Chain 只有 3 种选项(除非启用了 Servant Priority)。对应枚举为 BraveChainEnum,应用逻辑见 ApplyBraveChains。

4.4 Rearrange Cards(重排指令卡)

在 FGO 中,指令卡的位置决定伤害与附加效果:Quick 卡产生更多星星,Arts 卡产生更多 NP,Buster 卡造成更高伤害;同时第 1 张卡会决定对所有指令卡施加的加成效果(例如第 1 张出 Buster,则所有卡获得伤害加成)。

Rearrange Cards 功能会把最强的 3 张卡重新排序,使"第 2 强的卡"放在最后使用,从而让第 1 张卡的加成覆盖到后续输出。

默认优先级下开启该功能后的实际效果示例(原文档示例):

  • 默认顺序:Jeanne Archer Buster(最强)→ Jeanne Archer Arts(第 2 强)→ Castoria Buster(第 3 强);
  • 重排后:Jeanne Archer Buster(最强)→ Castoria Buster(第 3 强)→ Jeanne Archer Arts(第 2 强,置于末位吃加成)。

对应配置字段为rearrangeCards: List<Boolean>(IBattleConfig),每个波次一个布尔值。


五、Support Selection(支援选择)

支援选择用于决定 FGA 在进本前如何挑选助战从者。

5.1 Class Selection(职阶选择)

如果不选择任何职阶,FGA 会选取当前屏幕上显示的职阶里的支援。务必点击你想要的职阶;All选项可以切换为全职阶筛选。

⚠️已知问题:未通关终局特异点(Solomon)的玩家,此功能可能不可靠——"Start Quest"按钮会变得无响应,直到你手动点击左上角的返回键。

5.2 三种选择模式(Support Selection Options)

支援选择有 3 种方式(对应枚举 SupportSelectionModeEnum:First / Manual / Preferred):

  1. First(第一个):FGA 直接选择支援选择界面中出现的第一个支援。
  2. Manual(手动):FGA 退出,由你手动挑选支援;选好后重新运行 FGA。
  3. Preferred(优先):FGA 按优先设置逐项匹配并选择支援。

5.3 Preferred Selection(优先选择设置)

点击 "Preferred Selection" 选项即可进入优先设置界面,可以分别配置:

优先从者(Preferred Servant)

点击 "Preferred Servants" 弹出对话框,选择你想要的从者,并可进一步指定:

  • 是否要求满破(max ascended);
  • 哪些技能要求满级(max level)。

重要限制:FGA 只能可靠地检测技能是否为满级Lvl. 10,无法检测当前技能的具体等级。

优先礼装(Preferred CE)

点击 "Preferred CE" 选择想要的礼装,并可指定是否要求满破(max limit broken)。

事件活动中,更推荐直接使用游戏内的礼装筛选功能,而不是用 Support Image Maker 为每个活动礼装制作识别图片。

优先好友(Preferred Friends)

开启该选项后,可以限定只使用来自特定好友的支援从者。

  • 适用场景:当 90 级 NP1 的从者不足以应付周回本时使用。因为 FGA 无法检测从者等级、宝具等级(NP 等级)与追加技能(Append Skill)等级,所以可以通过好友名字来做二次过滤;
  • 反过来说,能满足这些条件但不是好友的从者将无法被选中;
  • 如果support目录下的friends子目录中没有图片,列表会为空;用 Support Image Maker(入口见 support_img_namer)生成好友图片后即可勾选。
Fallback(兜底策略)

如果优先支援未找到,FGA 会按照More Options → Advanced → Fine-Tune → Support中的设置刷新支援列表。当刷新次数达到上限后,FGA 将根据兜底(Fallback)选项来决定下一步行为(例如继续等待、重试或放弃本次开始)。

相关实现散见于 supportSelection 目录,其中 PreferredSupportSelection 负责按从者/礼装/好友逐级匹配,SupportScreenRefresher 负责按 Fine-Tune 参数刷新列表。


六、命令语法速查表

将上文所有代码汇总为一张速查表,方便编写与校验脚本时查阅:

类别代码含义
技能a/b/c1 号位从者的技能 1/2/3
技能d/e/f2 号位从者的技能 1/2/3
技能g/h/i3 号位从者的技能 1/2/3
技能目标1/2/3目标为 1/2/3 号位从者
多目标(12)同时指定多个目标(如e(12))
特殊选项[Ch2A]/[Ch2B]二选一技能:选项 A / 选项 B
特殊选项[Ch3A]/[Ch3B]/[Ch3C]三选一技能:选项 A / B / C
变身MMélusine / Ptolemaios 灵基变换
敌人目标t1/t2/t3指定敌人 1/2/3 为目标
宝具4/5/61/2/3 号位从者的宝具
宝具前出卡n1/n2/n3宝具前先出 1/2/3 张指令卡
御主技能j/k/l御主技能 1/2/3
换人x+ 2 数字场上编号 + 替补编号(如x31)
下一波次,#,分隔符:切到下一波次
下一回合,分隔符:同一波次内切到下一回合
无操作0本回合不做任何操作

所有代码的权威定义可在以下文件中核对:Skill.kt、CommandCard.kt、ServantTarget.kt、EnemyTarget.kt、SpecialCommand.kt、OrderChangeMember.kt、WaveTurn.kt。


七、命令校验与常见错误排查

命令串写好后,FGA 在执行前会解析它;若语法有误,会直接抛出解析异常并停止战斗(AutoBattle.ExitReason.SkillCommandParseError,见 AutoSkillCommand)。常见错误包括:

  • 未知字符:出现语法表中不存在的字符,报Unknown character: X;
  • 括号不闭合:出现(却没有),报Found ( but no matching ) in Skill Command;
  • 方括号不闭合:出现[却没有],报Found [ but no matching ] in Skill Command;
  • 特殊目标不存在:方括号内填写了未定义的代码,报Special target "XXX" not found;
  • 空命令:括号/方括号内为空,报Command Can't be empty。

此外,AutoSkillCommand 在初始化时会校验所有SpecialTarget代码之间不存在互相冲突的前缀(例如Ch2A与Ch2B就不会冲突),这保证了新增特殊技能代码时的健壮性。


结语

掌握 FGA 战斗脚本的编写,核心就是理解"位置编号 + 动作字母 + 目标数字 + 分隔符"这套命令语言,以及围绕它的卡优先级、支援选择等辅助配置。本文覆盖了 Battle.md 中从创建脚本、命令语法到附加配置的全部内容,并补充了命令在仓库源码中的底层实现细节。对照速查表编写脚本、再结合波次/回合指示器校验,即可稳定复现你想要的打法。若想进一步了解支援图片制作、卡优先级调参等进阶主题,可继续阅读仓库中的 Support-Image-Maker.md 与 Fine-tune.md。

  • 移动开发
  • GUI 自动化
  • 计算机视觉

【免费下载链接】FGA

Auto-battle app for F/GO Android

项目地址:https://gitcode.com/gh_mirrors/fg/FGA
点击查看免费下载

相关推荐

上一篇:Flightmare高级技巧:自定义Unity场景与动态障碍物添加
下一篇:7步掌握Cucumber-JVM:用纯语言编写自动化测试的终极指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/3 8:15:10

猫抓扩展快速上手指南:把网页视频离线保存到本地

猫抓扩展快速上手指南&#xff1a;把网页视频离线保存到本地 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你点开一个网页视频&#xff0c;右键菜…

作者头像 李华
网站建设 2026/10/3 8:15:05

基于多阶段、多角色LLM协作的深度专业内容生成体系

我们如何将LLM生成内容的专业度提升至顾问级报告水平呢,可以通过引入更精密的控制、更明确的质量门槛、更细致的角色定义以及更强的风险管理意识&#xff0c;构建一个企业级、可扩展的“模拟专家协作网络” (Simulated Expert Collaboration Network - SECoNet) 内容生成协议。…

作者头像 李华
网站建设 2026/10/3 8:14:57

免费解锁 WeMod 专业版:Wand-Enhancer 本地补丁完整指南

免费解锁 WeMod 专业版&#xff1a;Wand-Enhancer 本地补丁完整指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 想用 WeMod 的 Pro 修改器却不…

作者头像 李华
网站建设 2026/10/3 8:13:01

华硕笔记本风扇控制:G-Helper 快速调好风扇曲线的完整指南

华硕笔记本风扇控制&#xff1a;G-Helper 快速调好风扇曲线的完整指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook…

作者头像 李华