建议与调试
1.开发与反馈
1.1 自动战斗开发
自动战斗的配置文件,可以在 config/ 文件夹下翻找到对应文件夹。
战斗助手底层都是指令的配置,可以参考以下文档编写适合自己配队的指令。 如果有自己修改了觉得好用的配置,欢迎提交PR。
1.2 闪避助手开发
闪避助手的配置文件,放置在 config/dodge 文件夹下。
| 配置文件 | 作用 |
|---|---|
| 切换角色-下一个 | 黄光切换下一个角色后进行普通攻击;红光闪避切普通攻击 |
| 切换角色-强攻 | 黄光切换强攻角色后进行普通攻击;红光闪避切普通攻击 |
| 智能格挡 | 不会主动攻击的全配队通用,按照通配来帮你反制敌人 |
| 本-格挡 | 本·比格 专用,使用特殊攻击进行格挡 |
| 闪A切下一个 | 黄光闪避后普通攻击,切换到下一个角色;红光闪避切普通攻击 |
| 闪A切强攻 | 黄光闪避后普通攻击,切换到强攻角色;红光闪避切普通攻击 |
| 闪避 | 闪避后切普通攻击 |
闪避助手详细说明
| 配置文件 | 作用 |
|---|---|
| 闪A切下一个.sample.yml | 黄光时闪避 -> 普通攻击 -> 切换到下一个角色 -> 普通攻击;红光时闪避之后进行一次普通攻击 |
| 闪A切强攻.sample.yml | 黄光时闪避 -> 普通攻击 -> 切换到强攻角色 -> 普通攻击;红光时闪避之后进行一次普通攻击 |
| 智能格挡.sample.yml | 不会主动攻击的全配队通用,按照通配来帮你反制敌人 |
| 本-格挡.sample.yml | 本·比格 专用,使用 特殊攻击 进行格挡 |
| 切换角色-下一个.sample.yml | 黄光时切换到下一个角色后进行一次普通攻击;红光时闪避之后进行一次普通攻击 |
| 切换角色-强攻.sample.yml | 黄光时切换到强攻角色后进行一次普通攻击;红光时闪避之后进行一次普通攻击 |
| 闪避.sample.yml | 闪避之后进行一次普通攻击 |
1.3 漏判误判反馈
相关情况可以到 这里 反馈。
请注明副本方便作者复现,并使用脚本的「开发工具」-「截图助手」,截取有问题的游戏截图后打包发给作者,截图会保存在 .debug/images 中。
- 漏判 ( 出现了黄光/红光,但脚本没有识别到 ) : 可以在出现后使用手动按钮触发截图保存。
- 误判 ( 没有出现黄光/红光,但脚本误认为出现了,造成乱闪避 ) : 打开
「闪避检测」,脚本会自动把认为有光的图保存下来。
2.编写建议
2.1 触发条件
- 偶尔突发的事件,适合用作触发条件,例如 闪避识别、连携技、快速支援、终结技 等。这可以让你的指令在特殊情况下立刻响应。
- 高频出现的事件,不建议在触发条件中使用。例如
前台-安比,因为高频的触发判断会引起性能问题,后续也不方便维护。 - 不需要事件触发的场景,代表平时没有事件来打断操作的场景,用来做角色的连招。
后续脚本框架的发展优化也会以这个为基础思想。
关于嵌套触发和优先级打断的详细说明,参考 触发条件。
2.2 攻击按键
游戏中的默认按键,攻击是鼠标左键点击,连携技也有鼠标左键点击。建议单独给脚本分配一个普通攻击的按键,避免脚本使用鼠标左键进行普通攻击时把连携按掉了。
2.3 指令长度
由于是采取模拟按键的方式去执行指令,执行过程稍有偏差就会导致角色"呆呆"的,因此不建议一个状态判断里执行过多的指令。
2.4 长按按键
部分角色可能可以通过一直长按攻击键能打出连招,但不推荐使用过长(2s以上)的按键时间。
因为这种操作会一直占据某个按键,甚至一直占据着运行资源,容易在事件触发时造成按键冲突,或无法立刻对事件做出响应。例如闪光时按的闪避无效。
你可以拆分成多个 按下 指令,每个指令是较短的时间,这样脚本能更好打断当前运行。更多示例参考 操作指令-示例。
2.5 切换角色后的状态判断
连携、快速支援、格挡、手动换人等切换角色后,建议加入对应状态判断用于过渡。
例子
handlers:
- states: "[前台-朱鸢]"
sub_handlers:
# 格挡出场后
- states: "[自定义-黄光切人]"
operations:
- op_name: "按键-普通攻击"
pre_delay: 0.2
post_delay: 1.5
- op_name: "清除状态"
state: "自定义-黄光切人"
- op_name: "设置状态"
state: "自定义-临时站场"
- states: "[自定义-快速支援换人]"
operations:
- op_name: "等待秒数"
seconds: 0.5
- op_name: "清除状态"
state: "自定义-快速支援换人"
- op_name: "设置状态"
state: "自定义-临时站场"这么写的作用有
- 可以控制换人后摇动作的时间,在后摇结束后才开始正常连招,防止占用了正常连招的时间导致正常连招卡顿。
- 可以给脚本时间识别切换角色后的状态,例如终结技是否可用、朱鸢子弹数是多少等。因为切换角色的瞬间是没有下一个角色的这些状态的,切换角色后立刻开始正常的状态判断的话,就会出现类似有终结技但不使用,连招一轮后再使用的情况。
更多内置自定义状态(如 自定义-黄光切人、自定义-连携换人 等)的详细说明,参考 架构解析-附录。
3.调试
3.1 指令模板调试
要让你的配置能流畅在自动战斗中使用,建议先对角色的连招进行调试,即先保证你的每一套连招,都能流畅运行。
你可以将你的连招指令,写成一个指令模板,保存在 config/auto_battle_operation 文件夹中,不要使用 .sample.yml 后缀。
项目中已经包含部分角色的指令模板可以使用,你也可以使用。同时希望大家在完成自己的连招模板后共享出来。
弄了指令模板后,进入 「战斗助手」-「指令调试」,然后进入游戏训练场,按 F9 开始调试。
一个好的指令模板,应该能自己流畅循环,所以建议在训练场中,开启敌人无敌,关闭失衡,单纯循环指令不卡顿即可。
比较容易的调试方式是,最开始只在模板填写 2 个指令 + 1 个等待时间,调节等待时间让角色能做出第 2 个动作后,再增加下一个等待时间和指令。直到一套连招都填入后,追加一个最后的等待时间处理角色僵直。最后就可以让这套连招顺畅循环。
3.2 场景调试
在你的每一套角色连招都能流畅循环后,就可以进入场景调试了。入口在 「战斗助手」-「自动战斗」 上方的调试按钮。
原理是,对游戏画面进行一次截图和识别,然后再运行状态判断和执行指令。
如果调试时候脚本没有按预期做出动作,那你可以只保留部分 states 进行调试。
在所有场景都调试通过后,你的配置文件基本就能顺畅运行了。
部分场景有前置依赖,可以通过新建另一个测试配置文件,只写入需要测试的场景进行测试。