其实一个游戏的精髓之一就是它的图片资源,最近有点迷着《梦幻模拟战》;几乎算是白piao了,也算是氪了一张旅团券和1元打折的羊毛,稍微付点费用赞助一下这款良心游戏(还是让更富有的同志们贡献更大的力量吧 )。
突然想起来原来要给family写些小游戏,正愁没有资源呢。原来冒险岛的资源抽取工作已经基本完工了,只是要研究如何把所有图片还原成动态的帧还是得花些时间。不过从那时起,算是看了n多冒险岛各个版本的资源,其中有一个就是以atlas后缀结尾的文件引起了我的兴趣。是了,就是spine,这个工具确实让游戏的交互变得更有意思。
当然,这里暂时还不会直接公布具体的细节操作(比如源代码),毕竟这样会导致盗版太容易…等紫龙不太更新《梦战》了再全额发放吧。所以下面要说的是一个大致的方法,让大家失望了。
百度一下“梦幻模拟战 资源提取”,真的可以找到一篇文章:https://tieba.baidu.com/p/5952278050 话不多说,就直接去下载了Unity的工具包。把《梦战》的Android的apk下载后改zip解压就能拿到里面的资源文件夹啦(其实安装Desktop版直接就是解压好的unity文件);里面东西可全了,全身图,战斗娃娃系统贴图,告白~用工具就可以看~查阅了一下这些文件的meta
,里面有个License
写着Free
——感谢紫龙的美工!我当然不会拿去商用,就是自己玩儿,搞搞同人~琢磨了几个小时,本来想自己分析纸娃娃系统的数据文件skel.bytes
,等把最初的几个list分析出来,发现文件后期是大量的float数据,这眼花缭乱的,我就是一个WinHex怎么去把数据都弄出来……
然后我想这个文件总是有个格式的,而且spine那么火,会不会有specification呢?于是Google一下,就定位了这个github: https://github.com/EsotericSoftware/spine-runtimes 里面有个spine-ts的canvas版本,里面的例子是readSkeletonJson
的,然后我就在那里把已知的数据弄成了json让它读,基础纸娃娃的各个部分都是画出来了;正愁怎么动态呢?发现这个库里有SkeletonBinary
,简直就是救星啊!
开开心心地使用,好了能读,但是啥数据也没有……看看版本,最新的github上是3.8,而紫龙用的是3.3.05,搜索一下3.3.05,github上并没有保留支持这个版本。那我从commit回溯呢,回到merge 3.4
之前的那个commit git reset --hard
,然后发现里面还是spine-js
并且没有读取binary的方法……果然是enterprise付费版本啊…
怎么办?那只能开启疯狂调试模式了;是了,把example改成SkeletonBinary
读取文件,然后在Chrome里下断点,结合刚才几个小时得到的一些文件信息删删改改,从bones调试到slots,再到skins,把所有的错误都改pass了(比如3.8用的都是readStringRef
而3.3.05还都是readString
),yes,可以玩儿了~最终SkeletonBinary
返回了满意的object
~来看看《樱花大战》樱和罗莎莉亚新皮肤的行走图吧~
开启同人模式~BTW,如果紫龙觉得侵权了,记得ping我哈,我就把这篇删啦~
J.Y.Liu
2020.03.15