From 1439b2663f199ef4f4e65a30dbae39e088699d31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=93=E4=B8=B6=E6=A2=A6=E4=B8=B6=E4=BB=81?= <74444214+Daydreamer114@users.noreply.github.com> Date: Mon, 21 Oct 2024 00:41:11 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0=E8=82=89=E9=B8=BD?= =?UTF-8?q?=E6=96=87=E6=A1=A3=20(#10807)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../protocol/integrated-strategy-schema.md | 98 ++++++++++++++----- 1 file changed, 71 insertions(+), 27 deletions(-) diff --git a/docs/zh-cn/protocol/integrated-strategy-schema.md b/docs/zh-cn/protocol/integrated-strategy-schema.md index 2e532bd5e1..3c49dbf754 100644 --- a/docs/zh-cn/protocol/integrated-strategy-schema.md +++ b/docs/zh-cn/protocol/integrated-strategy-schema.md @@ -12,7 +12,7 @@ icon: ri:game-fill ## 肉鸽资源存放位置 - `resource/roguelike/` 下按照主题存放各个肉鸽的作业资源 - - 主题文件夹:`Phantom/` 为傀影肉鸽资源,`Mizuki/` 为水月肉鸽资源, `Sami/` 为萨米肉鸽资源 + - 主题文件夹:`Phantom/` 为傀影肉鸽资源,`Mizuki/` 为水月肉鸽资源, `Sami/` 为萨米肉鸽资源,`Sarkaz/` 为萨卡兹肉鸽资源 - `autopilot/` 内是各个关卡的作战 json - `关卡名.json` 关卡的作战逻辑 - `encounter/` 内是不期而遇类(所有非战斗和商店节点)事件逻辑 @@ -21,15 +21,16 @@ icon: ri:game-fill - `recruitment.json` 干员招募逻辑 - `shopping.json` 商店购买藏品逻辑 -- 特别地,在`Sami/`下的 - - `foldartal.json`表示萨米肉鸽密文板的使用逻辑 - - `collapsal_paradigms.json`表示萨米肉鸽坍缩范式的类型 +- 特别地,在 `Sami/` 下的 + - `foldartal.json` 表示萨米肉鸽密文板的使用逻辑 + - `collapsal_paradigms.json` 表示萨米肉鸽坍缩范式的类型 - `autopilot/关卡名_collapse.json` 关卡的作战逻辑(刷坍缩范式模式) - `encounter/collapse.json` 刷坍缩范式模式不期而遇逻辑 ## 肉鸽第一步——干员招募 `resource/roguelike/主题名/recruitment.json` 描述了干员招募的逻辑 +在 `tools/RoguelikeRecruitmentTool` 和 `tools/RoguelikeOperSearch` 中有辅助工具来帮助查看和编写 ```json { @@ -94,7 +95,7 @@ icon: ri:game-fill | :--- | :--- | :--- | :--- | | **_地面阻挡_** | 站场和清杂 | 重装、近卫 | 奶盾、基石、羽毛笔、山、M3、令和稀音的召唤物、斑点、重装预备干员 | | **_地面单切/处决者_** | 单独对战精英怪 | 处决者特种 | 史尔特尔、异德、麒麟 R 夜刀、M3、红 | - | **_高台 C_** | 常态和决战输出 | 狙击、术士 | 假日威龙陈、澄闪、艾雅法拉、肥鸭 | + | **_高台 C_** | 常态和决战输出 | 狙击、术士 | 维什戴尔、逻各斯、假日威龙陈、澄闪 | | **_高台输出_** | 对空和常态输出 | 狙击、术士 | 空弦、能天使、克洛丝、史都华德 | | **_速狙_** | 物理输出,标准射程 | 狙击 | 艾拉、能天使、跃跃、克洛丝 | | **_术师_** | 法术输出,标准射程 | 单法 | 艾雅法拉、逻各斯、史都华德 | @@ -138,7 +139,7 @@ icon: ri:game-fill | 情报官 | 晓歌、伊内丝 | 既可以回费、又可以侧面输出、还可以单切 | | 浊心斯卡蒂 | 浊心斯卡蒂 | 低压时奶量尚可,但是范围特殊,一些图有比较适配的位置 | | 焰苇 | 焰影苇草 | 萨米肉鸽常用开局干员,兼具治疗和输出,一些图有比较适配的位置 | - | 银灰 | 银灰、玛恩纳 | 地面大范围决战输出,可以针对 boss 进行部署 | + | 玛恩纳 | 玛恩纳、银灰 | 地面大范围决战输出,可以针对 boss 进行部署 | | 史尔特尔 | 史尔特尔 | 由于精二后固定携带 3 技能,这时站场能力几乎为零,需要阻挡位的部署优先度极低 | | 骰子 | 骰子 | 水月肉鸽中的骰子需要单独操作 | @@ -146,6 +147,11 @@ icon: ri:game-fill 目前固定将未识别到的地面干员归入倒数第二个编组后面(其他地面),未识别到的高台干员归入倒数第一个编组后面(其他高台) ::: +::: tip +新实装的干员需要手动加入各个肉鸽的 `recruitment.json`,而开发者不一定能想起来要做适配 +如果你发现了的话可以发 issue 提醒开发者,也可以直接进行 pr +::: + ### 预设阵容——阵容完备检测 在你预计能够通关或者打到高层的队伍中,哪些干员属于基本核心阵容?是比不可少的?又需要几个? @@ -154,11 +160,15 @@ icon: ri:game-fill 目前脚本的招募逻辑是在阵容未满足阵容完备度之前,只招募 0 希望(暂时只有三星)和 key(可以理解为白名单)干员,存希望给高星 key 干员 (目前的实现方式是给高强度干员和三星干员手动标为 key 干员,招募的时候只招 key 干员)(TODO: 识别 0 希望干员) -作战编队时也会优先编入满足阵容完备度的干员,剩下的空位按鹰序。这里因为没有验证干员是否重复(有重复会点两下反而不编入),所以阵容完备度检测的组中尽量不要有重复干员 - -所以不要将完备度数字设置太高,建议所有需要的干员数量(基本核心阵容,一般是 1 核心,2 地面,1-2 奶,1 高台)加起来在 4-8 位 +所以需要尽量让完备度总数合适,建议所有需要的干员数量(基本核心阵容,一般是 1 核心,2 地面,1-2 奶,1 高台)加起来在 4-8 位 在队伍满足阵容完备度检测之后,每次拿到招募券会按照干员的评分和精二优先度进行招募,所以为了避免希望浪费,不希望招募的干员可以不设置评分或者设置在同职业三星/预备队员评分以下 +(对于一定要和完全不想要的干员,可以特殊地赋予极高和极低的分数,详见 `Sami` 中的 `止颂` ) + +作战编队时会先对干员选择界面的默认排序(从上到下、从左到右)进行有序读取和存储 +基于这个顺序,保持相对顺序地将最先出现的满足阵容完备度的干员提到开头,直到阵容完备度被全部满足或不存在满足阵容完备度的干员 +然后将预备干员移至最末,形成新的顺序,按照新的顺序进行选择 +特别地,由于六星临时招募干员在编队时默认位于最开头,所以实际编队中很容易编入六星临时招募干员(TODO:排除无法使用的精一临时招募干员) 对于萌新号:在 10 次招募没有满足半队 key 干员的情况下,会放弃完备度检测,按照评分有啥用啥,所以没练三星的萌新号会出现只拿了两三个六星,剩下拿了一堆预备干员的情况 ::: @@ -170,13 +180,13 @@ icon: ri:game-fill ... ], "team_complete_condition": [ //阵容完备度检测 - { + { //一个策略组 (condition) "groups": [ //需要哪些群组中的干员 - "高台C" + "高台输出" //(这里表示需要高台输出组的干员1名) ], "threshold": 1 //这些干员需要多少数量 - }, //(这里表示需要高台C组的干员1名) - { + }, + { //可以有多个策略组 "groups": [ "棘刺", //(这里表示棘刺、地面阻挡、地面单切、炮灰分组的干员最少需要2个) "地面阻挡", @@ -185,14 +195,28 @@ icon: ri:game-fill ], "threshold": 2 }, + { + "groups": [ + "奶" //(这里表示需要奶组的干员1名) + ], + "threshold": 1 + } ... ] } ``` +::: caution +当一个干员出现在多个干员组时,只进行一次计数 +比如:干员 `棘刺` 可能同时出现在干员组 `棘刺` 和 `地面阻挡` 中,在这个策略组内,只对干员 `棘刺` 计入一次 + +但每个策略组分别计数 +比如:干员 `焰影苇草` 可能同时出现在干员组 `高台输出` 和 `奶` 中,此时两个策略组都可以计入干员 `焰影苇草` +::: + ### 调整干员招募参数 -1. 群组内的顺序代表部署该组时的优先度 +1. 群组内的干员顺序代表作战部署该干员组时选择干员的优先度 2. 临时招募干员会在原有的评分基础上加 600 分 @@ -221,7 +245,8 @@ icon: ri:game-fill "promote_priority": 600, // 进阶优先级,数字越大优先级越高,900以上属于有希望就精二,400以下招募优先级低于招募普通三星干员 // 小技巧:当你将招募优先度压低或者不写,拉高一些精二优先度,实际上就是在拉高临时招募到这些干员的精二优先度 "is_key": true, // true为key(关键)干员,false或省略为非key干员。在阵容完备检测未通过时,仅招募key干员与0希望干员,保存希望。 - "is_start": true, // true为开局选择干员,false或省略为非开局干员。在队伍中没有start干员时,仅招募start干员与0希望干员,用户填写的干员会强制未start干员 + "is_start": true, // true为开局选择干员,false或省略为非开局干员。在队伍中没有start干员时,仅招募start干员与0希望干员 + // 与用户图形界面的开局干员绑定,且用户手动填写的干员会强制设为start干员 "auto_retreat": 0, // 部署几秒后自动撤退,整数,大于 0 时生效,主要用于特种干员和投锋,由于肉鸽一般是2倍速,推荐设置为技能持续时间/2 "recruit_priority_when_team_full": 850, // 无需单独设置,满足阵容完备度时,招募优先级,默认招募优先级-100 "promote_priority_when_team_full": 850, // 无需单独设置,满足阵容完备度时,进阶优先级,默认精二优先级+300 @@ -262,18 +287,21 @@ icon: ri:game-fill `resource/roguelike/主题名/autopilot/关卡名.json` 描述了每个关卡的作战策略 -### MAA 肉鸽基本战斗逻辑——牛牛高血压之源 +### MAA 肉鸽通用战斗逻辑——牛牛高血压之源 + +(在关卡名对应作战逻辑文件不存在时生效) 1. 根据地图上格子类型进行基本的战斗操作 - MAA 会根据地图上的格子是蓝门还是红门,是高台还是地面,能不能被部署来进行基本的战斗操作 - MAA 仅根据地图名称或者编号决定使用哪份作业,不会判断地图的**普通**、**紧急**、**路网**、**密文板使用**等情况 + - MAA 不会判断**作战中地图上无法确定的格子的情况**,比如`驯兽小屋`的祭坛位置,`从众效应`是从左边还是从右边出怪 所以在后面,你需要尽量设计一套能够应付一个地图名**所有不同情况**(上面提到的几种情况)的战斗逻辑,小心被大家挂到 issue 上说这张图操作高血压哦(笑) -2. MAA 的基本作战策略--堵蓝门 +2. MAA 的通用作战策略--堵蓝门 1. 地面干员会优先部署在蓝门的格子上(为什么是格子上,请往下看)或者周围,方向朝向红门(自动计算), @@ -312,6 +340,10 @@ icon: ri:game-fill ], ``` + ::: tip + 蓝门替代方案会在 `deploy_plan` 全部完成但待部署区仍有干员的情况下生效,逻辑同通用作战策略 + ::: + 2. 部署格子黑名单 有优先防守的点就有优先不部署干员的点,比如大火球经过的位置,boss 脚底下,一些不好输出的位置, @@ -350,7 +382,7 @@ icon: ri:game-fill 使用`"deploy_plan"`和`"retreat_plan"`实现定制化操作 -定制化策略优先与基本战斗策略,当定制化策略中的所有步骤都尝试执行完毕后,省下的干员或者倒下再部署的干员会按照基本战斗策略不断部署 +定制化策略优先于通用战斗策略,当定制化策略中的所有步骤都尝试执行完毕后,剩下的干员或者倒下再部署的干员会按照通用战斗策略不断部署 有时候不需要设置太多的定制策略,完成关键步骤后再交给 MAA,二者结合可能效果更好 @@ -380,6 +412,8 @@ icon: ri:game-fill MAA 会将所有部署指令扁平化后,执行最优先级部署操作 例:在[6,4]部署[ "百嘉", "基石", "地面 C"],在[6,3]部署[ "基石", "地面 C"],那么 MAA 会将部署指令扁平化成附带坐标的[ "百嘉", "基石", "地面 C","基石", "地面 C"] 如果在战斗中[6,4]位置的"百嘉"组干员倒下,手里有有可部署的“基石”组干员,会优先布置到[6,4]而不是[6,3] + + 这意味着从宏观上来看,每次执行完部署动作之后都会从头开始检查可执行的策略(当前步骤的位置没有已经放置的干员,且待部署区有干员属于此步骤的干员组) ::: ::: tip @@ -393,9 +427,9 @@ icon: ri:game-fill ::: 2. 在某个时间点部署干员 - ::: tip - 适用于某些单切干员或者需要炮灰的使用场景 - ::: + ::: tip + 适用于某些单切干员或者需要炮灰的使用场景 + ::: ```json "deploy_plan": [ @@ -416,8 +450,8 @@ icon: ri:game-fill ``` 3. 在某个时间点撤退干员 - ::: tip - 有时候炮灰过强站住场或者需要部署位腾挪阵容怎么办,撤退! + ::: tip + 有时候炮灰过强站住场或者需要部署位腾挪阵容怎么办,撤退! 同一位置的部署和撤退命令的 condition 数字尽量不要重叠,否则会秒上秒下 ::: @@ -481,6 +515,12 @@ icon: ri:game-fill ], ``` +::: info 注意 +当 maa 无法找到当前关卡对应的定制作战策略时,会自动执行通用作战策略 + +当 maa 对当前关卡名称识别失败后,不会执行任何作战逻辑 +::: + ### 对某个干员打法有特殊理解?——精细化操作特定干员 请将这位干员单独分组 @@ -491,7 +531,7 @@ icon: ri:game-fill 仅使用一位干员也是可行的!使用 MAA 来凹单人通关吧(由于其他逻辑的不完善,可能性很低) -参考例子:1.傀影肉鸽的棘刺 2.水月肉鸽的异德 3.萨米肉鸽的焰苇 +参考例子:1.傀影肉鸽的棘刺,2.水月肉鸽的异德,3.萨米肉鸽的焰影苇草/维什戴尔,4.萨卡兹肉鸽的维什戴尔 ## 肉鸽第三步——不期而遇类节点逻辑 @@ -503,9 +543,11 @@ icon: ri:game-fill OCR 识别不期而遇事件名称,但是选项是操作固定的位置 -没有识别到时间的话会点最下面的选项 +事件名识别失败的话会点击选项类型图标(若有),或点最下面的选项 -一般只需要微调或者不调整(大佬都写好了嘛) +一个常见的卡死原因就是选项类型的图标存在但选项不可选(TODO) + +改进肉鸽逻辑时,一般只需要微调或者不调整(大佬都写好了嘛) ### 优化不期而遇选项的优先度 @@ -700,7 +742,7 @@ OCR 识别不期而遇事件名称,但是选项是操作固定的位置 - 焰影苇草 + 梓兰 + 泡普卡; - 提丰 + 斑点 + 史都华德。 -## 希望实现的逻辑(todo) +## 希望实现的逻辑(TODO) ### 自动编队逻辑 @@ -712,6 +754,8 @@ OCR 识别不期而遇事件名称,但是选项是操作固定的位置 比如可以实现前三层多战,后面的少战,这样发育会更好 +比如识别节点间的连线来判断更优路径 + ### 技能保留 某格部署的干员,技能转好后等待 x 秒再开,方便对轴;可以写 Deploy_plan 下的 Skill_hold,也可以写 Skill_hold_plan