一个面向安卓模拟器的 BanG Dream! 自动化程序骨架。结构沿用 ALAS 的核心思路:配置驱动的设备层、Button 资源、截图状态循环、任务模块和统一命令入口。首期任务是自动登录,以及使用游戏内自动演出功能重复游玩指定歌曲。
项目固定以横屏 1280x720、DPI 240 识别;设备参数不一致时会直接停止,避免误点。
- 已实现 ADB 连接、截图、点击、滑动、启动/停止应用。
- 已实现模板匹配、颜色匹配、资源清单与 ALAS 风格
appear_then_click。 - 已在雷电模拟器(
1280x720、DPI 240)真机验证自动登录和自动演出完整状态机。 - 登录可连续领取普通、回归和活动奖励;无按钮奖励动画会点击推进,剧情会通过右上角菜单跳过。
- 开始演出前必须识别到“自动演出已开启”,避免误入手动演出。
- 体力为 0 仍允许自动演出;自动演出剩余次数为 0 时会明确停止,且不会反复点击灰色开关。
- 结算按“确定/下一步/无按钮分页/剧情跳过”逐层处理,并始终优先识别“再次演出”。
- 活动奖励、角色升级、乐队升级和达成奖励的额外“确定”弹窗均可连续处理。
- 指定次数的最后一轮会停留在“再次演出”页,不点击右侧“确定”。
- 运行异常时会将最近 20 张截图写入
log/error/,便于复盘未知页面。
cd D:\Documents\workplace\BanGDreamAutoScript
py -m venv .venv
.venv\Scripts\python -m pip install -e ".[dev]"
Copy-Item config\default.yaml config\local.yaml编辑 config/local.yaml:
emulator.serial:模拟器 ADB 地址,例如127.0.0.1:5555。emulator.adb_path:若adb不在 PATH,填写其绝对路径。app.package:当前服务器版本的游戏包名。app.launch_activity:通常可留空,由 Android launcher 启动。automation.unknown_timeout:连续未识别页面多久后进入恢复,默认 60 秒。automation.escape_interval/escape_timeout:ESC 恢复间隔和最长时间,默认 1.5/30 秒。automation.max_restarts:ESC 无法回主页时最多自动重启次数,默认 2 次。
桌面配置中的“单次计划/每日计划”决定任务何时调度,“演奏次数”决定每轮实际演奏几次; 两者互不影响。演出结束处理支持三种模式:
重启游戏(推荐):每次演出结束后立即重启并重新登录,默认且最稳定。ESC 返回:演出结束后持续按 ESC,进入剧情或主页后继续恢复。正常结算并找再次演出:持续处理确定/下一步,并优先点击再次演出。
任何同一动作连续执行 60 秒仍未推进时,底层 watchdog 会统一改用 ESC 返回主页; 30 秒仍失败则重启游戏,最多重启两次。
# 设备与显示参数检查
bdas --config config/local.yaml doctor
# 采集页面截图
bdas --config config/local.yaml capture --name login-start
# 查看尚缺的模板
bdas --config config/local.yaml validate-assets
# 自动登录
bdas --config config/local.yaml login --restart
# 指定 SAVIOR OF SONG 自动演出 5 次;歌曲 key 配置于 assets/manifest.yaml
bdas --config config/local.yaml auto-live --song savior_of_song --count 5.venv\Scripts\python -m pip install -e ".[dev]"
.venv\Scripts\pyinstaller --noconfirm --clean BanGDreamAutoScript.spec生成文件位于 dist/BDASCLI.exe,包含项目图标、默认配置和全部识图模板。实际连接模拟器时可使用:
dist\BDASCLI.exe --config config/local.yaml doctor
dist\BDASCLI.exe --config config/local.yaml auto-live --song savior_of_song --count 5已完成一次真实 count=2 回归验证:第一轮结算点击“再次演出”进入同曲第二轮,第二轮结束后停在重演页。单曲演出等待上限为 300 秒,适配通常约两分钟的演出时长。
新增歌曲或游戏更新导致页面变化时,请提供模拟器原始 PNG 截图,不要缩放或经聊天软件压缩。常用页面包括:
- 启动后的“点击进入”页。
- 登录公告、奖励等每类常见弹窗。
- 游戏主页。
- 从主页进入演出的每一页。
- 歌曲选择页,以及目标歌曲在列表中清晰可见的页面。
- 演出准备页中自动演出关闭、开启两种状态。
- 开始按钮、演出结算、奖励弹窗、“再次演出”或返回选曲页。
- 体力不足、自动演出券不足、升级等异常弹窗(若会出现)。
若同一按钮带动画,请连续提供 2–3 张截图,以便选取稳定区域。
本项目以 GPL-3.0-only 发布。架构设计参考 AzurLaneAutoScript,业务代码为 BanG Dream! 场景的独立实现。
使用 Clash Verge 虚拟网卡时,参见 游戏域名直连配置。
桌面端是独立的 Electron + Python 后端应用,产品名为 BanG Dream! Auto Script,
默认端口为 22367。安装目录自带后端和运行依赖,不读取或启动本机 ALAS,能够与
使用 22267 的 ALAS 同时运行。自动登录是每次任务的前置流程,不需要单独配置。
构建完整便携目录:
powershell -ExecutionPolicy Bypass -File scripts/build_desktop.ps1成品入口为 webapp/dist/win-unpacked/BanGDreamAutoScript.exe。其 Web UI 提供总览、
任务抽屉、运行/队列/等待状态、自动保存配置和实时日志;“停止”会终止当前任务的
完整进程树。后端、任务进程和 ADB 均隐藏控制台窗口。架构和许可证说明见
docs/alas-webui.md。