# 前言
前阵子刚好以前玩过的某款老牌 2d 手游正准备过十周年庆,回坑之后发现新出的看板娘做的都不错,所以决定把她们全部都捞过来博客里给我打工卖萌
由于每个游戏的游戏引擎都可能不一样,碰巧这款游戏是用 Unity 制作的,而且有现成的解包工具,所以这篇文章仅供参考,非 Unity 引擎请自行搜索解包工具
顺便点名批评一下某二游公司的某伟某皓某宇某策划某天使,十周年刚回坑就是让我这个老萌新吃满一百连大保底,真忘记我当年是怎么弃坑的了是吧
# 关于 Live2d
据我局限的认知一般游戏里的看板引擎主要分为两种,Live2d 和 Spine
Live2d 比 Spine 有更强的互动性,比如触摸反馈等,如果你发现某个模型的目光会跟着玩家的鼠标进行移动,那么这个模型大概率就是 Live2d 制作的
关于 Live2d 的配置说明可以参考一下这篇文章
https://eikanya.github.io/post/live2d 配置
本文只讨论 Live2d,Spine 请查看下一篇文章
# 导出游戏资源
- 在 Mumu 模拟器上安装好游戏,等待所有游戏资源下载完毕(包括游戏内要另外下载的资源),在
Android/data
目录下找到游戏文件夹,然后复制到 Mumu 共享目录中提取出来
# 下载 AssetStudio
这个项目原名叫 AssetStudio,Github 上也有不少少类似的项目,比如 UnityStudio,GenshinStudio,CNStudio 等
由于这个项目自身比较特殊的原因,
或者涉及到 Unity 或者游戏公司的利益问题?,如果某一天链接失效了,就在 github 上重新找一下类似的项目吧下载地址:https://github.com/RazTools/Studio/releases
从 Release 中下载最新版本的 AssetStudio 后,解压打开里面的 AssetStudio.GUI.exe,启动这个程序需要安装对应的.net 运行时,初次启动如果没有安装会自动提示下载安装
# 提取模型文件
运行 AssetStudio.GUI.exe 后,在
Options
-->Specify Game
中选一下对应的游戏,比如某原选择 GI、某铁选择 SR、某零选择 ZZZ,由于我要解包的游戏不选也行,所以我这里选了默认的 Normal选择
file
-->Load folder
,选择刚才从 Mumu 中复制出来的游戏文件夹注意 AssetStudio 对内存的需求比较大,解包的内容越多需要的内存就越大,如果内存不够的话就将 *.unity3d, *.blk 等文件单独拎出来分批读取吧
加载以后搜索一下 moc,可以发现文件都放在这个路径下
assets\assetbundles\menusv2\partner\allpartnerlive2dsv4
- 选择
Options
-->Export options
,将Group exported assets by
设置为container path
,避免导出时按照素材类型分组导致同名文件被覆盖的问题
- 选择
Export
-->All assets
,将所有素材导出,等待导出完毕后,按照刚才的路径找到我们需要的素材
- 这里每个 live2d 模型都放在单独的文件夹里,可以按照文件夹里的
texture_00.png
来判断是否自己需要的模型,这里以 1833 这个红叶香水的模型为例
- 将下面的文件复制一份到一个单独的文件夹中,以后直接从这个文件夹里加载模型就行
# 提取 moc 文件
现在还缺少一个关键的
.moc3
文件,这个文件需要用另一种方法提取出来回到 AssetStudio 找到目标.moc 文件,或者对应的贴图,这里没有找到 moc 文件所以搜索了
texture_00
右键目标文件 -->
Show original file
,记录弹出路径中选中的文件名,比如这里对应的是assetbundle__103_8936e6a2275cdac7a85fa5b4d24ab640.unity3d
将这个文件复制出来单独放在一个文件夹中,比如我放在名字叫 103 的文件夹里
从 github 上下载另一个项目 UnityLive2DExtractor
下载地址:https://github.com/Perfare/UnityLive2DExtractor/releases
下载压缩包解压后,将刚才的文件夹拖放到解压目录的
UnityLive2DExtractor.exe
上,顺利的话会在拖动文件夹对应的目录中生成一个Live2DOutput
文件夹如果无法运行可以尝试安装一下对应版本的运行时,.config 文件中显示的运行时是.NETFramework,Version=v4.7.2
- 在生成的
Live2DOutput
文件夹中找到我们需要的moc3
,1833.physics3.json
,textures
,将这些文件也复制到前面创建的文件夹中
- 最终所有需要的模型文件如下
# 提取音频文件
- 音频文件一般打包在 pck 文件里,直接在 Mumu 导出的文件里搜
*.pck
,在里面找到这个带Partner
命名的大概率就是看板娘的语言包了,这里把它单独复制到一个文件夹里
这里图方便使用一个 UP 制作的音频解包工具 WwiseExtractor,下载链接需要到的 UP 的专栏链接里面找
链接:https://www.bilibili.com/read/cv5330096
打开压缩包里面的
WwiseExtractorConsole.exe
,第一次选择刚才的 PCK 文件夹,第二次选择输出目录,注意两次不要选同一个目录,第一个目录也不能包含第二个目录等程序跑完后可以得到一堆 ogg 文件,用格式工厂把这些音频文件全部转成 mp3 格式,再从 mp3 里面去找我们具体需要的文件
或许大概实装越早的看板命名的下标就越靠前???
- 将看板娘所需要的音频文件复制到模型文件夹的 sound 目录下,这下需要的文件就齐了
# 制作 live2d 模型
制作模型需要用到
Live2DViewerEx
,这个软件可以对 live2d 模型动作进行编辑,平时也可以将模型加载到桌面当作看板娘这个软件是要在 Steam 上购买的,大概二十多块钱左右吧,不想购买的话自己找破解版吧
启动
Live2DViewerEx
,启动后选EX工作室
-->Live2D编辑器
-->选择Moc或Json文件
如果是已经做好的模型直接选 model.json 之类的 json 文件就行,本文演示一下自定义,所以加载
.moc
文件打开后会提示创建 json 配置文件,把之前整理出来的 Moc、物理 json、贴图都给选上
这里先创建一个中文语音版的配置文件
1833_cn.model3.json
- 添加待机动画
Idle
- 添加出场动画
Start
- 接着添加触摸动画,首先找到触摸的区域,然后记录下来这个区域的名字
- 接着返回编辑配置文件,添加点击区域
- 点击区域绑定相应的动作和语音
到目前为止所有的配置都会保存在我们创建的
1833_cn.model3.json
文件中,下次继续编辑的时候只需要加载这个 Json 文件就行同理我们可以将这份配置文件复制一份改名为
1833_jp.model3.json
,然后加载这份文件将所有语音修改成日语
# 将模型加载到桌面中
- 重新启动
Live2DViewerEX
,这次启动选项选择启动 Live2DViewerEX
- 拔掉耳机,将音量调到最大,测试一下效果
# 部分模型的兼容性问题
- 有一部分模型在 Live2DViewerEX 加载后,无论怎么绑定 motions 都始终无法触发相应的动作效果,比如待机动画等都是无法执行的,但是默认开启的视线追踪是正常的,像这样
- 因此推测逆向出来的 moc 文件应该是没问题的,问题可能出现在 motions 动作文件上。在一番折腾后发现,两个不同版本之间的模型,它们的参数命名规范是不一样的,也就是说某游很可能使用了不同的 Cubism SDK 来制作不同的模型
http://live2d.pavostudio.com/doc/zh-cn/exstudio/live2d-editor/#_18
抱着试一下的心态将 motions 文件里的这类参数命名方式全给替换掉,但是这类型的参数实在太多了,无奈还是手搓了一个现成的替换工具
https://github.com/GardenHamster/MotionModifys
将替换后的 motions3.json 文件重新绑定到模型中,发现待机动作之类的都可以正常触发了,而且幸运的是还没有出现其他奇奇怪怪的问题
- 最后对比一下游戏的模型绑定台词和语音,却发现游戏里一些动作是也是加载不出来的,或许官方也卡在类似的版本兼容问题上了吧......
# 在网页上加载 live2d
在 web 上加载 live2d 模型需要用到官方的 SDK Cubism SDK for Web
由于 live2d 模型版本有区分 Cubism2/3/4/5,各个版本的模型加载方式或许各不相同,你可以使用 Github 上一个大佬的兼容项目 pixi-live2d-display
Github 上的 Live2dWeb 相关项目对点击事件等加载也各不相同,所以如果想要做出来最符合自己预期的效果,还是建议自己手搓代码吧
你也可以尝试使用我的一个魔改项目 live2d-web,使用方法清查看 Readme
理论上 Live2DViewerEX 创意工坊上的 Lpk 文件如果能解包成功也是能加载到 web 上吧
# 参考链接
# 模型提取
https://www.bilibili.com/read/cv5773529
https://www.maxstars.xyz/2023/09/24/bi-lan-hang-xian-chai-bao-ji-lu
https://www.bilibili.com/read/cv27390576/
https://eikanya.github.io/post/live2d 配置
# 音频提取
https://www.bilibili.com/read/cv5330096
https://www.bilibili.com/read/cv3027629
https://www.bilibili.com/read/cv5939682
# 模型兼容
https://github.com/guansss/pixi-live2d-display/discussions/143
http://live2d.pavostudio.com/doc/zh-cn/live2d/model-config
http://live2d.pavostudio.com/doc/zh-cn/exstudio/live2d-editor/#_18
https://intmain0.com/187
# web 加载
https://docs.live2d.com/zh-CHS/cubism-sdk-manual/cubism-sdk-for-web
https://github.com/guansss/pixi-live2d-display
https://github.com/GardenHamster/live2d-web
https://github.com/stevenjoezhang/live2d-widget
https://github.com/galnetwen/Live2D