修缮雀魂Plus

前段时间想在打麻将的时候 用自定义的角色, 于是去下回来一个雀魂Plus, 然后发现这个项目年久失修, 已经跑不起来了, 上一次commit还是21年(现在是22年底), 于是自己拉下来代码修一修, 也附上自己对这个项目的思考

大体介绍

雀魂是一个二次元麻将游戏, 看上去是unity开发的, 发布有桌面端/网页端/app端

打麻将会使用二次元角色, 这个角色是要花钱抽的, 于是雀魂Plus出现了, 可以替换资源文件(资源包功能)或者在游戏里加载自定义js(扩展功能)

雀魂Plus是一个electron给雀魂的web端套了层壳, 来方便控制雀魂的一些行为

雀魂Plus下称雀P

雀P替换资源流程

雀魂在打开游戏时, 会加载一个resversion.json文件, 内容是资源文件的加载路径, 雀P替换资源 选择了更改这个文件里的路径的方式

如何替换文件就成了问题, 雀魂采取本地起一个http服务的方式, 网页加载localhost, 然后将请求转发到雀魂

雀P失效的原因

这个其实比较艹

雀魂的游戏在线服务的域名, 应该是lb-v2.maj-soul.com这种格式的, 雀魂官方拿到这个域名的做法估计是这样的:

1
2
// 拿了当前页面的url, 拼上的前缀
"lb-v2." + window.location.host

然后由于雀P在它的electron的渲染端加载的是localhost, 于是这个域名就变成了lb-v2.localhost

雀P的问题

要替换资源文件, 拦截请求, 可以说是弄一个代理, 但是雀P直接加载了localhost…

按说应该起一个代理服务, 然后控制electron渲染进程的代理就行了