前段时间想在打麻将的时候 用自定义的角色, 于是去下回来一个雀魂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 | // 拿了当前页面的url, 拼上的前缀 |
然后由于雀P在它的electron的渲染端加载的是localhost, 于是这个域名就变成了lb-v2.localhost
…
雀P的问题
要替换资源文件, 拦截请求, 可以说是弄一个代理, 但是雀P直接加载了localhost…
按说应该起一个代理服务, 然后控制electron渲染进程的代理就行了