ssm

command module
v0.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 20, 2025 License: GPL-3.0 Imports: 28 Imported by: 0

README

(WIP) ssm - Star Stone Miner

(开发中) BanG Dream! 少女乐团派对! 星石挖掘机

简介

  • 自用项目
  • 仅适用于支持 Android开放配件(AOA) 2.0 协议的Android设备
    • 2011年以后出厂的Android设备基本都支持AOA 2.0
优势
  • 内置资源解包模块,可以提取游戏中的图像资源和乐谱数据
  • (一定程度上)规避检测
    • 非侵入式设计,不会干预游戏进程
    • 无需root权限
    • 无需启用USB调试
    • 无需修改游戏安装包或游戏数据
    • 触点可以通过“显示点按操作反馈”显示
  • 采用图着色算法分配指针ID,使用尽可能少的触点完成演奏
    • 理论上95%以上的谱面可仅使用两根手指完成
  • 使用golang编写
    • “可以和我GO!!!!!一辈子吗”
缺陷
  • 目前只有命令行界面
  • 必须使用USB数据线连接游戏设备(暂不支持无线连接)
  • 必须手动触发打歌

使用

使用步骤与phisap类似,如果你用过的话

准备工作
  1. 准备一台计算机,用于运行本程序以及连接游戏设备
    • 对配置没有硬性要求,台式机、笔记本甚至树莓派均可
  2. 测量游戏设备的屏幕分辨率
    • 这里约定屏幕的短边为宽,长边为高
    • 一些手机可以直接在设置中看到屏幕参数,或者也可以截一张图,测量截图的尺寸
  3. 进入游戏,随便选一首歌 ,进入打歌界面,测量:
    • 判定线到屏幕顶端的距离(单位:像素),记为Y
    • 判定线上最左侧的点(下图中左侧圈中的点)到屏幕最左端的距离(单位:像素),记为X1
    • 判定线上最右侧的点(下图中右侧圈中的点)到屏幕最左端的距离(单位:像素),记为X2
    • 如下图所示,允许±20个像素的误差,结果保留到整数 测量数据示意图
  4. 从游戏设备中导入所需素材(乐谱数据)
    • 将游戏设备中的/sdcard/Android/data/{游戏包名}/files/data/整个文件夹导入到计算机中,存储的位置随意
      • 例如日服的包名是jp.co.craftegg.band
      • 可以开启USB调试功能然后使用adb命令导入,比如adb pull /sdcard/Android/data/jp.co.craftegg.band/files/data/
      • 每次游戏更新(加入新歌或新的难度等级)后都需要重新导入数据
  5. 解包素材
    • ssm可执行文件(Windows平台为ssm.exe)传入-e{导入的数据文件夹}参数,即可自动开始解包过程,解包后ssm将在可执行文件所在的文件夹内生成assets文件夹,为解包结果
开始打歌

在准备工作完成后,即可开始打歌

  1. 在bestdori或类似网站上查阅需要打的歌的歌曲ID,歌曲ID是一个整数,例如《EXIST》的歌曲ID是325
  2. 将游戏设备连接到计算机
  3. 启动游戏,此时游戏设备会进入横屏模式
  4. 使用命令./ssm -d {难度} -n {歌曲ID} -r {旋转方向}启动ssm
    • 如果是第一次使用ssm,ssm会询问游戏设备的相关信息,例如屏幕尺寸、判定线的X1, X2Y,需将准备工作中测量得到的数据输入程序,ssm会保存这些数据(保存到ssm所在文件夹内的config.json文件中)
    • {难度}为要打的曲目难度,可选的值有easy(简单)、normal(普通)、hard(困难)、expert(专家)和special(特殊)
    • 示例:如果要打《EXIST》的专家难度,则对应的命令为ssm -d expert -n 325
    • {旋转方向}为设备的旋转方向,可选值为leftright。横屏时屏幕的顶边(前置摄像头最靠近的那条边)在左侧则为向左旋转(逆时针旋转),在右边则为向右旋转(顺时针旋转)。若旋转方向为左,-r选项可以省略
    • 如果一切正常,控制台(或命令提示符)会输出Ready. Press ENTER to start autoplay.
  5. 在游戏设备中选中对应的曲目和难度,进入打歌界面
  6. 当第一个音符快到判定线时,在运行了ssm的控制台内敲下回车
  7. 若一切正常,ssm会自动完成曲目剩余的部分。若希望中断自动打歌,可以直接在控制台(或命令提示符)中输入Ctrl-C(Windows下是Ctrl-Z)强制终止程序

TODO

  • 图形化控制界面
  • 把用scrcpy-server进行控制的功能抄过来
    • 读取游戏设备屏幕内容
      • 识别选中歌曲及难度
      • 自动开始
      • 自动重复

参考及引用

开源协议

GPLv3

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
etc

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL