Skip to content
forked from kvarenzn/phisap

[for android] Semi-automatic player for the rhythm game "Phigros"

License

Notifications You must be signed in to change notification settings

RaTaiHok/phisap

 
 

Repository files navigation

phisap

phisap

PHIgros(-like) Semi-Automatic Player

✨ 适用于(类)Phigros音游的半自动打歌器 ✨

仅支持安卓设备

最高支持

phisap的图标由@ShintoKosei制作,授权给phisap项目使用,ShintoKosei保留所有权利


你现在所在的分支为stable,该分支目前仅包含2023/06/28以前的更新内容

如果你想体验此后的更新,请切换到dev分支

目录

免责声明

  • 本项目属于个人兴趣项目,与厦门鸽游网络有限公司无关。
  • 本项目内不含任何版权素材,且本项目并非商业项目
  • 项目的服务端借用自Genymobile/scrcpy,在此感谢scrcpy的作者和维护者们。
  • 截止目前,项目作者从未在任何除GitHub以外的平台上以任何方式宣传过本项目。

灵感来源

Tip: sudo 板子自己打歌

成果展示

两张手机截图

AT Complete

IN Complete

如何使用

准备

  1. 请安装Python 3.11
    • 请使用正式版,不要使用开发者预览(early developer preview)版
      • 如果你非要用,请使用3.11.0a5及以后的版本,否则你可能会遇到一些问题,见issue#71
  2. 使用pip install -r requirements.txt安装依赖
  3. 请安装Android Debug Bridge要求版本号至少为1.0.41,并确保相应的环境变量已经配置好。
  4. 请准备Phigros的游戏安装包/通用数据包。目前支持的游戏版本为2.0.0至3.1.0
    • 如果你的phigros是taptap版,那么只需要游戏安装包即可
      • 如果你使用*nix系统(如Linux或Mac OS),则你可以使用如下的bash shell命令从安卓设备上提取安装包
        adb pull $(adb shell pm path com.PigeonGames.Phigros | cut -f2 -d:) ./Phigros.apk
      • 如果你使用Windows操作系统,那么你可以在powershell中运行下面的命令
        adb pull (adb shell pm path com.PigeonGames.Phigros).Split(":")[1] ./Phigros.apk
    • 如果你的phigros是Google Play版,那么不要提取安装包,请提取数据包(后缀为.obb),因为谱面数据并不在安装包内
      • 这个数据包一般在游戏设备的/sdcard/Android/obb/com.PigeonGames.Phigros/目录下
      • 名称类似于main.82.com.PigeonGames.Phigros.obb
      • 大小约为1.3GB
      • 使用adb pull或者文件管理器直接复制出来即可
    • 当然,如果你不想手动提取,也可以直接去网上下载一个phigros的安装包或数据包,注意版本对应即可
  5. 准备服务端。请去scrcpy的releases页面 下载scrcpy-server-v2.0,不要下载成别的版本。下载完成后,请将文件直接放置在phisap的根目录(与main.py之类的文件在同一文件夹即可),不要更改文件的名称(比如添加后缀),否则phisap将无法识别。
    • 如果你使用*nix系统,且安装有wget,那么下面这段命令与上面描述的操作等效:
      cd phisap  # 定位到phisap的根目录下
      wget https://github.com/Genymobile/scrcpy/releases/download/v2.0/scrcpy-server-v2.0

运行

cd phisap # 将CWD(Current Working Directory,当前工作目录)设置为phisap的根目录,以便phisap查找服务端文件
python main.py

工作原理

  • 读取并缓存游戏安装包中的所有谱面文件
  • 解析谱面文件,分析出每个音符的击打位置、击打方式和击打时间
  • 将这些击打操作转换为触控事件序列
    • 即按下(DOWN)、移动(MOVE)和抬起(UP)
  • 开始操作后,逐一向设备发送这些触控事件

注意事项

  • 虽然phisap的灵感来源为sudo 板子自己打歌 ,不过本程序并不依赖root权限工作
  • 一些情况下有可能因误触发三指截屏或通知中心而导致miss,不是每台设备都会触发,视厂商和设备型号而定
  • phisap当前完美支持的最高版本为3.1.0,所有的曲目/任意难度均可以打出金φ,除了一些特殊类型的谱面(不用担心,不会影响rks)。这些谱面详见暂不支持的谱面。不过,在使用phisap时可能会发现一些谱面无法AP,那么这时你需要
    • 确保计时器同步的精确程度满足要求,如果你发现phisap打出了FULL COMBO,但并没有AP,这一定说明你的计时器同步没有做好
    • 如果计时器同步没有问题,那么你可以试试换一个规划算法。目前一些谱面只能由algo1达成AP,而另一些只能由algo2达成,当然,大部分的谱面使用algo1和algo2都可以完成
    • 如果你发现还是不行,那么你可以考虑开一个issue,跟我说明这个问题

PS: 如果你知道怎样实现不root的前提下精确获知当前曲目进度,且愿意帮助本项目的话,请开issue告知我做法

暂不支持的谱面

单曲精选集中的《Random》

暂时没有找到什么可以自动化判断当前谱面的办法,如果你有好的想法,请开issue。或许图像识别是一个可行的方式

不过目前phisap可以解包出全部的随机谱面(ID为Random.SobremSilentroom.<n><n>从0到6),所以理论上,如果你的手速够快,完全可以应对随机谱面

愚人节谱

这些玩意太逆天了,不在phisap的全p目标范围内。phisap作者并不会针对愚人节谱面进行规划算法的改进

课题模式

phisap并没有对课题模式做特殊的支持,将来也许会有

不过现有的功能完全可以使你拿到彩48标签,但是需要一点点技巧

我推荐的配置是

  • 迷宫莉莉丝 (AT16)
  • 狂喜兰舞 (AT16)
  • DESTRUCTION 3,2,1 (AT16)

也就是下面这三个,顺序任意 推荐彩48配置 这三个谱面的特点是开局没有过分的判定线演出,便于手动同步定时器,同时相比于其他AT16,这三个谱面在课题模式下也算是判定比较宽松的

然后按照如下步骤操作phisap

  1. 使用algo1规划这三个谱面(注意难度选AT)
    • 计时器同步方式选手动同步,选定曲目ID和难度之后点开始,按钮变成“开始操作”后关掉phisap,再打开,重复这一步骤
      • 这个操作逻辑确实有点蠢,不过新UI正在设计了(
  2. 同步方式选手动,曲目ID选择第一首的,难度选AT,规划算法选不规划,然后点开始
  3. 在游戏设备上设置课题模式并开始
  4. 看着游戏设备,在note快落到判定线时点击“开始操作”按钮或者按下空格键
  5. 观察note被击打时相对判定线的位置,调整“微调”,确保note在击打时跟判定线重合
    • 如果你开局就蓝线了那也就甭微调了,直接重开罢
  6. 在phisap自动游玩当前谱面时,调整曲目ID为下一首的曲目ID
  7. 在phisap的按钮重新变回“开始”/看到控制台输出“操作结束”后,点击“开始”按钮。此时你的游戏设备应该还在加载下一首曲目
  8. 为剩下两首曲目重复步骤4到7
  9. 如果运气好的话,你应该能得到一个彩48

遇到问题?

请开issue,并在issue中包含如下内容

  • 你的操作系统版本
  • 你遇到的问题
  • 能反映遇到的问题的日志、记录或者截图

如果之后的更新解决了你的问题,请关闭自己开的issue

如果一百度就能找到解决方法的问题,不要开issue,例如依赖安装问题,如果你开了也会被我关上甚至删除

对Arcaea的支持

项目闊靛緥婧愮偣/文件夹下的文件实现了最简陋的对音游韵律源点(arcaea)的支持,原理完全相同。

需要您手动提取谱面文件(比phigros简单,网上搜索一下就能找到),再运行闊靛緥婧愮偣/main.py,按照程序提示输入。

支持的谱面声明包括:

  • 函数:arc()arctap()timing()hold()scenecontrol()会被忽略
  • easing:bssisosisisososisososi
  • 其余均不支持,尤其是对camera的操作

致谢

感谢上述优秀的项目和创造或维护它们的个人或企业。

  • 感谢@ShintoKosei为phisap设计并制作了图标、美化了README的排版

开源许可

除图标(public/img/phisap_s.pngpublic/img/Phisap.png)外,phisap的其他内容以WTFPL协议开源

图标仅限phisap项目本身使用,其他任何人或团体不得以任何方式使用,原作者 @ShintoKosei 保留所有权利

更新日志

(2023/08/02)

  • 最近的更新导致了一些问题,比如在部分设备上,原本可以AP的曲目全部AP失败
  • 因此,现将2023/06/28之后的所有提交移动到开发分支上,不推荐普通用户使用
    • 当然,如果你感兴趣的话可以切换到dev分支上尝试一下,不保证可用
  • 原有的main分支改名为stable分支,并设置为默认分支,确保新用户(如果存在的话)点进来后看到的是旧版本
  • 此后新功能将先在dev分支上进行测试,待确保稳定可用后,会逐步下放到stable分支上

(2023/06/28) v0.1

  • 为phisap加入版本号,并设定初始版本号为0.1
  • 在README中加入更新日志
  • 修复此前遇到的一些问题

About

[for android] Semi-automatic player for the rhythm game "Phigros"

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%