请帮帮我,关于一款名为《DotAbyss》的游戏。

一款名为"DotAbyss"的游戏已在"Fanza"平台上线。

URL: Now loading...

我正在尝试分析这款游戏,希望得到您的帮助。

我已经获取了"catalog.bin"文件。

URL:https://drive.google.com/file/d/1ddwwZHRoSUW5arGlYMLSANmYo4gMl0ZX/view?usp=sharing

我还创建了一个解密工具,可以批量下载。

工具:

问题在于,这款游戏在场景回放中使用的"Live2D"文件(我认为它们不是"Spine"格式,但如果我错了请指正)并没有分组,导致很难找到它们。

我使用 ASGui 时无法提取语音文件。我不确定这是采集方式的问题,还是 acb 文件提取不正确。

我需要您的帮助。以下是我的需求:
请确认所需文件已下载。
提取文件时,我希望重命名场景回放文本文件和 Live2D 文件,并将它们整理到各自的文件夹中。

我也不确定语音回放方式(是从"acb"文件提取的,还是从其他格式提取的)。

请问您能帮我解决这个问题吗?

r'^.*(l2d_\d{4}\d{2}\d{3}\d{2}\.asset.*bundle)' 这个 pattern 得到的就是包含 moc3 资产的 bundle 。

用 UnityPy

import UnityPy
from pathlib import Path

env = UnityPy.load(bundle)
assert env.objects[1].type.name == 'MonoBehaviour'
tree = env.objects[1].parse_as_dict()
assert '_bytes' in tree
data = tree['_bytes']
assert data[:4] == list(b'MOC3')
Path(filename).write_bytes( bytearray(data) )

语音在 r'^.*hmr_\d{4}\d{2}\d{3}\d{2}\.acb.*bundle'

env = UnityPy.load(bundle)
assert env.objects[1].type.name == 'MonoBehaviour'
tree = env.objects[1].parse_as_dict()
data = tree['references']['RefIds'][0]['data']['data']
assert data[:4] == list( b'@UTF' ) # acb magic
Path(f'{name}.acb').write_bytes( bytearray(data) )

得到 .acb 格式的文件。一个 acb 文件解压出来会得到多个语音文件,解压出来的文件是 .bin 后缀改 .wav 即可。

acb用楼上说的unitypy导出比较方便,要用ASGUI导出也行,加载名称带有acb的bundle后对monobehavior 导出形式为export raw 也行,但是需要额外去@UTF之前的文件头,所以没有那个必要那么麻烦。然后扔进vgmtoolbox里面解压acb然后批量改wav后缀就能使用。或者也可以简化一点不用软件用acb-py,直接相当于把vgmtoolbox这部分功能塞进脚本处理流程里面实现从bundle开始进行一键式处理。

谢谢。

得知 moc3 是正确的方向,我松了一口气!

不过我有个问题。我以为除了 moc3 和 texture00、texture01 之外,还需要 model3.json 等文件。我可以假设这个游戏里也有这些文件吗?

我没找到。

我现在要去试用一下ACB。

model3 自己重建也行,以下是 l2d 官方 sdk 的示例,有 moc3 跟 texture 就已经可以让画面显示出来

{
	"Version": 3,
	"FileReferences": {
		"Moc": "Koharu.moc3",
		"Textures": [
			"Koharu.2048/texture_00.png"
		],
		"Motions": {
			"": [
				{
					"File": "Animation/body.motion3.json"
				},
				{
					"File": "Animation/face01.motion3.json"
				},
				{
					"File": "Animation/face02.motion3.json"
				}
			]
		}
	},
	"Groups": [
		{
			"Target": "Parameter",
			"Name": "EyeBlink",
			"Ids": [
				"PARAM_EYE_L_OPEN",
				"PARAM_EYE_R_OPEN"
			]
		}
	],
	"HitAreas": []
}

motion3 我还没有研究但应该也是同理,数据在 AnimationClip 里可以还原。
l2d 动画只需调节 Parameter 就可以让画面动起来,掌握细节之后你甚至可以自定义一些你特别中意的动作:face_with_hand_over_mouth:

感谢您的回复。

我不是在寻找示例;我想知道如何才能让它正常运行。

因为我是从资源文件中获取的,所以我认为它运行所需的必要文件应该已经存在。

*我在其他游戏中也只创建过 moc3 文件。

我想要获取这些文件。

10080100022.zip (3.7 MB)

看看。

重建肯定不完整的,不过该有的动作都有了。

代码乱七八糟的需要再说。

谢谢您的回复!

图片可以显示,但动画无法播放。

我以为会有一个类似".anim"的文件,但我找不到…

游戏保存文件时,文件名是"r18-only-novel_assets_assets_project_lazyassets_r18-only_novel_mainchara_hmr_10120100012_l2d_10120100012_addanimations_blush00.fade.asset_72519a55f133b51e4130384938cd030b.bundle",这是个重复的文件名,所以需要重命名。我遇到了问题。

虽然我已经将包含"acb"和"l2d"的文件分离并保存,但我仍然遇到以下问题:

  1. 下载后重命名

  2. "L2D"的文件结构

  3. 运行"L2D"

这些是我目前遇到的问题。我真的束手无策…

如果有人可以更新我上传的、支持下载的py文件,并添加重命名和文件排序功能,请告诉我!文件名需要更改,因为它使用了重复的文件名,例如"only_novel_mainchara_hmr_10120100012_l2d_10120100012_addanimations_blush00.fade.asset_72519a55f133b51e4130384938cd030b.bundle"。

包含"acb"和"l2d"的文件已经分离并保存,但仍然存在以下问题。

  1. 下载后重命名文件

  2. “L2D” 文件的结构

  3. 运行"L2D"

我目前遇到了这些问题,完全不知所措。

如果有人可以更新我上传的 Python 文件,添加下载、文件重命名和排序功能,请与我联系。

动画当然可以播放 MP4

选中 scene 开头的动画, 我用的是官方的 Cubism Viewer

AnimationClip 在 r'^.*l2d_\d{4}\d{2}\d{3}\d{2}\.prefab.*bundle'

不过我不打算继续下去了。既然资源没有鉴权我觉得破解客户端解锁全资源比较方便(虽然我还没有这种技能)。

从 AnimationClip 重建 motion3.json 难度相当不低,如果你连 python 都还不熟悉我建议你放弃。

anim2motion3.zip (2.5 KB) 代码

import anim2motion3
import os

in_folder = ''
out_folder = ''

anim_files = [ 
    os.path.join(in_folder, anim_file) for anim_file in os.listdir(in_folder)
]

anim2motion3.batch( anim_files, out_folder )
1 个赞

奇迹出现了,我随手一拉的这段动画居然刚好可以完美循环,完美循环!!!

是录屏不是导出!

你好。
我一直尝试对catalog.bin进行解析,但能力不足。
刚刚我发现了您的这个帖子,看起来需要"AddressablesTools"。
而我对这方面了解极浅,可否为我指点一下?
在此打扰,抱歉万分。

我这边写了个程序用来自动导出texture,moc3,animationClip并自动创建对应的moc3.json和AnimationClip的motion3.json发现有的角色资源bundle文件只有1kb,里面没有内容,你那边下载也是一样的情况吗

您好。

为了进行分析,我上传了一个工具,请查看一下。

我已经确认整个文件集中有好几个文件的大小都在 0kb 或 1kb 左右。

我觉得我的情况也一样。

这有点让人担心。

我想知道有没有人能正常保存文件?

我这边确认过了,那些0kb或1kb的应该都是游戏里还没放出来的角色或者皮肤,不过今天出的两个新角对应的寝10090100012,1009010002,10090100032和10100100012,10100100022,10100100032这六个寝用你上面的catalog下下来也还是空的,可能bundle文件位置变动了,得重新拿catalog资源文件了

我写的这个小程序就是在你原本的工具上加工的,下载的部分是一样的,应该就是catalog的问题了 可能新出的要重新刷新的log文件

https://api.abyss-prod-r18.dotabyss.dmmgames.com/resources/android/r18/aas/3998/aa/catalog_1.bin

嗯…是的,在使用了您的工具后,因为No module named 'AddressablesTools’才会有关于其的疑问。

最新版应该是4014吧,问了私底下问了大佬因为这个游戏的live2d的组件名字还是被索引替代了要dump出dll还原所以问问到底咋使用

很高兴您在使用这个工具,但您是否查看过它的内容?

如果您遇到类似"找不到名为’AddressablesTools’的模块"的错误信息,它应该还会提示"请使用以下命令安装:pip install addressablestools"。

如果您仍然不明白,可以咨询AI。