Skip to content

AboutDynamite

楓 edited this page Oct 21, 2022 · 1 revision

安装 Dynamite 游戏

因为需要修改服务器后端的地址,我们需要安装特别修改过的客户端。你可以在群文件或者 Discord 频道里获得 空白服 修改后的安装包,或者你也可以自己动手修改

排除错误

1. Cannot connect to destination host

这是无法连接到服务器导致的。如果你可以尝试使用浏览器直接连接服务器后端,如果有返回错误代码(如:404,502)或者能够直接看到页面,说明服务器没问题,请再次检查安装的客户端是否正确,确认无误,请将问题报告给服主;如果无法访问页面,请尝试使用 VPN 等方式连接,并且向服主确认服务器运行状态。

2. Invalid Username

说明服务器没有开启自动注册功能,你需要联系服主注册账号。

3. Exception while fetching data (/r)...

这个是后端程序的问题,请将这个问题截图报告给服主,由服主带上日志向项目提交 Issue

其他技术性内容

这部分内容仅提供给相关开发和维护人员,普通的玩家可以结束辣。

如果遇到下面没有提及的问题,可以联系枫糖,在有空的时候可以尝试帮你解决一下。

怎么改绑后端地址?

如果你有自己开服的需求,可以通过以下方式将后端地址改到自己的服务器上。

因为游戏使用了 il2cpp 打包,所以代码内容会被编译到 c++ 上,但是同时也会产生一个叫 global-metadata.dat 的文件,记录一些类名,属性名,字符串等。这给我们带来了一条骚路,我们可以通过修改这个文件里的后端地址来达到目的。来源:Unity il2cpp global-metadata.dat 加密方案,以及最早群里的 Errno 等大佬。

通过 MetaDataStringEditor,我们可以很轻松的将相关字段修改成我们想要的。所以下面是需要修改的数据的表格。

字段原数据 字段修改后数据 解释
https://api.tunergames.com:10443/graphql http://example.com/graphql 这是后端 API 请求地址,炸药使用 GraphQL 作为后端引擎,所以只需要修改一处地址即可。一般来说是以 graphql 结尾。
https://dynamite.tuenrgames.com http://example.com 这是资源站的地址,资源请求地址格式参照这里

将修改完成的 global-metadata.dat 放回安装包里,并且需要重新签名

关于签名

IPA 在使用 Sideloadly 等软件安装时会帮你签名,所以可以暂时跳过。

安卓开发文档 为应用签名

资源请求格式

请求内容 请求地址
音乐 /download/music/encoded/{setId}
封面 /download/cover/encoded/{setId}
预览 /download/preview/encoded/{setId}
铺面 /download/chart/encoded/{chartId}
用户头像 /download/avatar/256x256_jpg/{userId}
谱面商店预览图 /download/cover/480x270_jpg/{setId}

小提示:因为游戏使用的是 UnityWebRequest,默认是支持重定向的,所以可以使用这个特性来达到一些特别的效果。

将客户端加密禁用

众所周知 TunerGames 给资源添加了加密机制,避免盗用(?),导致我们无法导入新谱。

但是阴差阳错下,我们发现将 global-metadata.dat 中文件名里的 .rnx 后缀去掉后即可避免游戏以加密的格式读取文件,同时也会带来一些奇怪的问题。

经过几次试错我们发现,如果将谱面文件 xxxxxxxx.xml.rnx 的 .rnx 去掉后会导致上传数据时丢失谱面ID的后四位,所以这里要特别注意。

最后测试得到的加密相关字段如下:

字段原数据 字段修改后数据 备注
a.mp3.rnx a.mp3 只需要去掉 rnx 后缀
b.mp3.rnx b.mp3 只需要去掉 rnx 后缀
c.jpg.rnx c.jpg 只需要去掉 rnx 后缀
.xml.rnx 0000.xml 因为读取谱面ID时会丢失后四位,所以额外补上4个字符