【Unity游戏文件修改教程】以赛马娘为例的Live参数设置

您所在的位置:网站首页 如何修改游戏内的数据 【Unity游戏文件修改教程】以赛马娘为例的Live参数设置

【Unity游戏文件修改教程】以赛马娘为例的Live参数设置

2024-07-12 23:24:22| 来源: 网络整理| 查看: 265

前言:虽说是教程,不过其实更像是个思路流程分享,以遇到什么问题解决什么问题为主。本篇专栏主要是介绍如何达成下述视频的效果:

当然,如果能触类旁通的话,下方视频的制作方法估计也能摸索出一二:

而且说不定还能弄出什么更好玩的东西,总之如果想试试的话,让我们开始吧!

第一节:前置准备与目标确立

问题是这么产生的:“赛马娘的Live做的好棒,我好想知道如果从别的视角看会是什么效果!”

比如说这首

那么要怎么做到呢?我能想到的大概有三种方法:

基于内存修改器的对控制摄像机的内存基址的查找与修改

对控制摄像机的函数进行Hook控制

找到控制Live摄像机运行的文件,并进行对其修改

经过一段时间无果的尝试,我发现前两种方法对我来说难度和繁琐度挺高的,所以只能尝试第三种方法碰碰运气了。

但问题在于,我手头只有一个DMM版的赛马娘啥别的工具都没有,连游戏怎么把资源提取出来都不清楚,如果要修改文件,第一步必须要想办法获得文件。

第二节:游戏数据在哪?

DMM版赛马娘的游戏数据文件默认保存在:C:\Users\你的用户名\AppData\LocalLow\Cygames\umamusume中,如果你第一次打开这个文件夹,里面的内容大概长这样子

如果点进dat探索一番的话,会发现里面的文件名是以杂乱无章的字母形式存在的

事实上这些就是赛马娘的游戏数据了,如果有办法解析的话就可以获得里面的内容了吧

第三节:查看游戏资源

用二进制文本查看器随便试着打开一个文件,会发现赛马娘的资源文件有着UnityFS的文件头

这也就意味着本资源是以Unity的AssetBundle形式保存的,如果对AB包有疑惑的话推荐看看这个视频

目前已有很多现成的工具可以对AssetBundle里的文件进行查看和提取,我们以AssetStudio为例:https://github.com/Perfare/AssetStudio

下载好后打开,并载入我们打算解析的文件:

然后我们就可以从Asset List处看到这个AssetBundle所包含的资源文件名了,比如说这个的类型是AnimationClip,也就是动作文件,如果有幸找到了图片或模型文件,就可以从右侧预览或者提取出来了。

而且AssetStudio不单支持读取单个AssetBundle,也支持读取选定文件夹下所有的AssetBundle

我们可以尝试直接读取整个2A文件夹

所以,只要按着这个气势,绝对可以找到目标Live相关的文件的!

第四节:真的能找得到吗?哈希文件重命名

事实上我们对Live的编号以及其他相关信息一概不知,没有一点相关线索的话无疑是大海捞针。

如果一堆奇怪字母的文件名能更加简洁易懂一点,如果这些文件能以更加直观的方式整理起来就好了

看着这些文件名就头大

如果这些文件名都有一个清晰对应的索引的话...

幸运的是,对赛马娘这个游戏来说,索引确实是存在的

让我们回到赛马娘的游戏资源文件夹

用二进制文本查看器(我用的是UltraEdit)打开meta这个文件,看看能不能发现什么

文件头是SQLite,是否意味着这个文件也是可以被读取的呢?

在网上搜个SQLite数据库的读取软件,打开

可以发现dat文件夹中的每个文件都对应到了一个真正的路径+文件名,而这个对应关系被完整地保存到了meta这个SQLite数据库中。

我们可以写个脚本将所有文件按路径和名称重新保存一遍(代码会在后面给出,用的是Python)

非常清晰的文件架构,之后找数据将会变得特别轻松。

第五节:Live数据在哪里

回到我们的目标——找到控制Live的相关数据,经过上一节的整理后,不难发现Live的控制数据是储存在cutt文件夹下的

具体来说,是sonxxxx_camera这个文件,我们可以用AssetStudio查看一下

文件类型是Monobehavior,可以将这个理解成文本形式的数据记录格式,可以看到控制摄像机的参数就在这里

当然,这里面控制的可不止是镜头,除此之外灯光、景深、模糊、角色动作序列的控制、角色表情等等,都是在这个文件里控制的,具体可以用AssetStudio导出json文件查看。

总之就是,只要有办法对这一个文件进行修改,我们就可以控制/调试Live的大部分内容了!

第六节:等等,我怎么知道哪个文件是对应哪个Live的?

记得这个控制Live的文件名是有sonxxxx的么?也就是说我们只要弄明白sonxxxx指的是什么就行了。

“但...我怎么知道sonxxxx指的是什么,除非有办法听一下...”

对,解决方法就是去听一下。

赛马娘Live音频文件的位置位于sound/l处

chara是角色清唱,oke是伴奏

awb文件就是音频文件的储存位置,比较遗憾的是,这些文件是由密钥加密过的所以一般的软件无法正常打开。

好在还是有社区对这些加密游戏音频的密钥进行了解析,并做成了方便解析的插件分享了出来。

也就是vgmstream:https://github.com/vgmstream/vgmstream

可以看到赛马娘的文件密钥

我用的是foobar2000+vgmstream插件,安装好后将指定的awb文件拖进来就可以听到相关的Live音频。

第七节:信息整理

好了,该完成任务了,我们的目标是修改WINnin‘5这首曲子的摄像头让其固定,所以我们应该要找到并修改这首曲子对应的sonxxxx_camera文件,然后再首先,我们需要弄明白这首曲子的sonxxxx(也就是编号)到底是什么。

通过上一节的内容,我们可以听出来这首的编号是son1035,然后由此找到son1035_camera,然后可以用AssetStudio打开看看,欣赏一下来之不易的成果并休息一下(因为接下来将会是重点

第八节:如何修改AssetBundle(手动)

推荐使用UnityPy:https://github.com/K0lb3/UnityPy

安装好python和UnityPy插件,运行写好的代码(之后会给出)

选择要修改的文件,之后程序会将该文件内的Monobehavior解析为json文本的形式并打开

像这样,我们可以试试看删除ripsync(这是控制歌词口型的)里thisList的内容,然后将文本保存

然后回车(推荐python程序还是用可视化窗口或者CMD打开)

mono.py是刚刚运行的python代码,tmp.txt是生成并修改的文本文件,而output就是修改之后重新生成的AssetBundle了。

第九节:文件的重新替换

因为赛马娘的游戏数据的AssetBundle名是一堆数字+字母(哈希值),所以我们接下来要做的就是,将新生成的output(原son1035_camera)改名为对应的文件然后替换上去,首先,我们必须要知道其对应的哈希值。

可以从数据库里看出,其对应的名字为F6G6......,我们将output改为这个名字

进入赛马娘游戏数据文件夹的dat部分,找到该名称的文件

这里,进行替换(如果想的话可以备份一下)

好,替换成功,打开游戏看看效果

结果就是,角色不会出现唱歌词的口型了。

第十节:如何修改AssetBundle(代码)

通过第八节,就已经可以去尝试修改调试AssetBundle中Monobehavior的大部分信息了。

不过如果想方便的批量化完成的话,以代码的形式修改是必不可少的。

比如,在这个代码中(之后会给出),我将son1035_camera中camera相关的数组只保留了最开始的一个,并对其进行了调整,这样就可以将摄像机镜头固定在一个合适的地方。然后删除了景深,模糊,原摄像机视角之外的角色隐藏,还有一些灯光特效和我也不知道怎么解释的东西,然后运行。

选择同样的文件

生成结果

改名替换,然后播放查看效果

目标达成!可以试着对代码进行删改以达到不同的效果。

第十一节:小结

啊终于写完了,希望可以足够简单易懂(除了代码方面我真的不知道该怎么解释所以还是靠自己摸索吧,而且这篇好像只介绍了怎么改Monobehavior)。

虽然目标只是介绍一下如何修改Unity的数据文件,不过如果想让逻辑能连贯起来的话还是得介绍一大堆额外的东西...其实也并不怎么高技术力毕竟只是使用别人所完成的东西罢了。

而且如果还会有一篇的话,就不用介绍基础的东西了。

另外整个流程能如此轻松顺畅的完成离不开Cy技术团队对于游戏数据开放且清晰的管理,所以必须得感激一下。

最后是相关代码以及测试文件:

s/1fO-4V3JRa_rHNsiZ14YDyw

提取码: iavw

如果有什么问题的话欢迎随时提出,毕竟“第一次”写教程方面的专栏说不定会疏漏什么...



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭