StarRailCopilot/README.md
2020-04-26 16:29:15 +08:00

7.2 KiB
Raw Blame History

AzurLaneAutoScript

Alas, an Azur Lane automation tool with GUI (CN server only).

Alas, 一个带GUI的碧蓝航线脚本 (仅支持国服).

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 a 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.exenox_adb.exe , 备份它们. 把自己的 adb.exe 复制两份进来, 其中一份改名为 nox_adb.exe .

这并不会影响模拟器运行, 还会带来方便. 每次打开模拟器的时候, 模拟器就会自动连接至ADB, 相当于执行了

adb connect <your emulator address>

安装 uiautomator2 Install uiautomator2

uiautomator2, 是一个自动化测试的库, 可以加快截图和点击的速度. AzurLaneAutoScript 也可以使用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_HOUREMOTION_LIMIT 就不会红脸出击, 或者保证一直处于经验加成状态.
  • 演习可能SL失败 演习看的是屏幕上方的血槽, 血槽可能被立绘遮挡, 因此需要一定时间(默认1s)血量低于一定值(默认40%)才会触发SL. 一个血皮后排就有30%左右的血槽, 所以别以为在1s内被打掉40%是不可能的. 另外如果后排立绘过大且CD重叠严重, 建议增大确认时间(比如3s), 或者换皮肤, 这样可以减少误判.
  • 极少数情况下ADB和uiautomator2会抽风
  • 拖动操作在极少数情况下无效

文档 Doc

海图识别 perspective

海图识别 是一个碧蓝航线脚本的核心. 如果只是单纯地使用 模板匹配 (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 ++ ++

参与开发 development

  • 如何添加一个按钮 How to add a button
  • 如何适配一张新的地图 How to adapt to a new map

参考 Reference