7.3 KiB
AzurLaneAutoScript
Alas, an Azur Lane automation tool with GUI (CN server only).
Alas, 一个带GUI的碧蓝航线脚本 (仅支持国服).
功能 Features
-
主线图出击 暂时仅支持前六章和7-2
-
活动图出击 支持复刻苍红的回响, C2和D3有单独优化, 支持开荒
-
每日任务 半小时左右一套做完, 重复运行时会跳过当天做过的
每日任务(不支持潜艇每日). 困难图(暂时仅支持10-4). 演习, 自动SL.
-
活动图每日三倍PT 半小时左右A1到B3一套做完
-
委托收派 出击时每20分钟切出去收获, 支持收委托, 收科研, 收任务, 派委托
-
特定模式出击 7-2三战拣垃圾, 12-4练级.
碧蓝航线不就只有两张图吗? 最多再算上12-2和1-1( -
其他小功能
心情控制, 计算心情防止红脸或者保持经验加成状态
血量监控, 低血量撤退, 先锋血量平衡
整队换装备
掉落截图记录
自动退役
开荒模式
安装 Installation
-
Clone 本项目
-
安装依赖, 最好使用虚拟环境
pip install -r requirements.txt
安装模拟器 Install an emulator
设备 | Device | 模拟器版本 | 安卓版本 | adb截图 | u2截图 | adb点击 | u2点击 |
---|---|---|---|---|---|---|---|
逍遥模拟器 | NemuPlayer | 7.1.3 | 5.1.1 | 0.308 | 0.275 | 0.294 | 0.146 |
雷电模拟器 | LDPlayer | 3.83 | 5.1.1 | 0.329 | 0.313 | 0.291 | 0.146 |
夜神模拟器 | NoxPlayer | 6.6.0.0 | 5.1.1 | 0.339 | 0.313 | 0.505 | 0.141 |
MuMu模拟器 | MuMuPlayer | 2.3.1.0 | 6.0.1 | 0.368 | 0.701 | 0.358 | 0.148 |
一加5 | Oneplus5 | 7.1.1 | 1.211 | 0.285 | 0.447 | 0.160 |
这里给出了一些常见模拟器的性能测试结果, 测试平台 Windows 10, I7-8700k, 1080ti, nvme SSD, 模拟器分辨率1280x720, 碧蓝航线 60帧开启, 进入地图 7-2, 执行100次取平均, 单位秒.
由于海图识别模块对截图质量有很高的要求, AzurLaneAutoScript
暂时不支持手机, 必须使用模拟器. (Alas其实是支持手机的, 远古版本的Alas也是在手机上测试的, 但是长时间运行会发热和假死, 就放弃了)
- 安装一款安卓模拟器
- 模拟器分辨率设置为
1280x720
.
配置ADB Set up ADB
-
获取 ADB
-
将ADB配置于系统的环境变量中, 并测试是否配置成功.
adb devices
调教国产模拟器 Dealing with chinese emulator
国产模拟器一般会使用自己的 ADB, 而不同的ADB之间会互相结束对方, 这里提供一个一劳永逸的方法: 直接替换.
- 前往模拟器的安装目录, 搜索
adb
, 备份这些文件 - 将自己的
adb.exe
复制进安装目录, 并且把名字改成刚才备份的文件的名字.
比如说夜神模拟器的安装目录有 adb.exe
和 nox_adb.exe
, 备份它们. 把自己的 adb.exe
复制两份进来, 其中一份改名为 nox_adb.exe
.
这并不会影响模拟器运行, 还会带来方便. 每次打开模拟器的时候, 模拟器就会自动连接至ADB, 相当于执行了
adb connect <your emulator address>
安装 uiautomator2 Install uiautomator2
uiautomator2, 是一个自动化测试的库, 可以加快截图和点击的速度. AzurLaneAutoScript
也可以使用ADB来执行截图和点击, 就是慢一点而已.
出于性能优化, 建议使用ADB截图, uiautomator2点击. (u2截图稍稍快于adb截图, 但是cpu占用翻倍, u2点击则全方位碾压adb)
- 执行
python -m uiautomator2 init
会在所有连接的设备上安装 uiautomator-server , atx-agent, minicap, minitouch . 如果设备是模拟器, uiautomator2 将跳过 minicap 的安装.
-
检查 uiautomator2 是否安装成功
修改
module.dev_tools
下的emulator_test.py
中的SERIAL
, 并执行.一些模拟器的默认 serial:
设备 Device serial <A4><9C>神模拟器 | oxPlayer | 27.0.0.1:62001 | uMu模拟器 | uMuPlayer | 27.0.0.1:7555 | <80><8D>遥模拟器 | emuPlayer | 27.0.0.1:21503 | <9B><B7>电模拟器 | DPlayer | mulator-5554 |
使用方法 Usage
- 双击 alas.pyw, 通过图形界面(GUI)运行
- (不推荐) 通过命令行运行. 虽然alas使用了 Gooey, 一个将命令行转为GUI的库, 但是Alas并不是先有命令行方法运行再用gooey的, Alas是为了使用gooey快速编写GUI而去拼凑命令行参数的. 因此使用命令行会很难受.
- (不推荐) 修改配置文件
config/alas.ini
, 在alas.py
中调用相关函数 - 多开运行, 复制 alas.pyw, 并重命名, 双击运行即可. 首次运行时会复制template.ini的设置. 脚本运行时会使用同名的ini配置文件.
已知问题 Known issue
按出现频率排列
- GUI启动慢, uiautomator2启动慢
- 无法处理网络波动 重连弹窗, 跳小黄鸡
- 处理夜间委托的弹窗可能出错 有捕捉, 但是可能会在一些奇怪的时间弹出来
- 会显示绿脸黄脸红脸, 红脸出击确认 这个是瓜游心情值更新BUG的锅了, 只要填对了
RECOVER_PER_HOUR
和EMOTION_LIMIT
就不会红脸出击, 或者保证一直处于经验加成状态. - 演习可能SL失败 演习看的是屏幕上方的血槽, 血槽可能被立绘遮挡, 因此需要一定时间(默认1s)血量低于一定值(默认40%)才会触发SL. 一个血皮后排就有30%左右的血槽, 所以别以为在1s内被打掉40%是不可能的. 另外如果后排立绘过大且CD重叠严重, 建议增大确认时间(比如3s), 或者换皮肤, 这样可以减少误判.
- 极少数情况下ADB和uiautomator2会抽风
- 拖动操作在极少数情况下无效
文档 Doc
海图识别
是一个碧蓝航线脚本的核心. 如果只是单纯地使用 模板匹配 (Template matching)
来进行索敌, 就不可避免地会出现 BOSS被小怪堵住 的情况. AzurLaneAutoScript
提供了一个更好的海图识别方法, 在 module.map
中, 你将可以得到完整的海域信息, 比如:
2020-03-10 22:09:03.830 | INFO | A B C D E F G H
2020-03-10 22:09:03.830 | INFO | 1 -- ++ 2E -- -- -- -- --
2020-03-10 22:09:03.830 | INFO | 2 -- ++ ++ MY -- -- 2E --
2020-03-10 22:09:03.830 | INFO | 3 == -- FL -- -- -- 2E MY
2020-03-10 22:09:03.830 | INFO | 4 -- == -- -- -- -- ++ ++
2020-03-10 22:09:03.830 | INFO | 5 -- -- -- 2E -- 2E ++ ++
- 如何添加一个按钮 How to add a button
- 如何适配一张新的地图 How to adapt to a new map
参考 Reference
-
(Not open source) http://asaiq2.lofter.com/
现成的碧蓝航线脚本, 实现很蠢运行很慢, 但是完成度很高. 参考了主要的功能和设置.
-
https://github.com/Egoistically/ALAuto
(Archived) https://github.com/perryhuynh/azurlane-auto
EN服的碧蓝航线脚本, 模仿了脚本架构.