Unity3D-游戏-通用MOD制作方法-修改游戏资源-未打包的资源修改

本文最后更新于:2021年3月27日 晚上

引言

游戏中的文本可能是游戏资源的一部分,也有可能是游戏代码的一部分
u3d的游戏资源保存在.asset 文件中,游戏代码则主要在 Assembly-CSharp.dll
只要我们修改游戏的文本内容,那么游戏显示的文本就会被改变

此处假定你已经阅读了前文,并且下载好了工具

确定基本MOD制作思路

  1. 找一位 没有加密资源的 U3D制作的 幸运儿游戏
  2. 大致观察其内容
  3. 进入游戏,确认目标
  4. 搜索目标所在
  5. 对目标内容进行修改,保存修改后的内容
  6. 重启游戏,观察是否修改成功

操作

寻找幸运儿游戏

如何确认游戏是否为Unity3D制作

没有出现不一定不是U3D制作的游戏
但,出现一定是U3D制作的游戏(应该不会有人免费打广告吧

大部分小成本U3D游戏开头都会有一个很明显的U3D的LOGO,相对而言比较好辨识

为什么说是小制作游戏?
U3D规定,如果你制作的游戏一年内的财务规模<10万美金的话,才可以使用个人版开发
否则必须使用付费版本开发

为什么会有这个LOGO?
U3D分为个人版(免费)和收费版
个人版虽然免费,但在打包游戏的时候,U3D引擎会在游戏开头贴上U3D的LOGO
这个LOGO在个人版中无法取消,只有在付费版本中才能取消

游戏资源文件观察

通过进入游戏根目录,搜索U3D游戏的游戏资源文件.assets文件可以判断游戏是否是由U3D制作。并且得知我们能不能制作MOD

  • 进入游戏根目录

  • 搜索.assets文件

    (其实这张图上的,图标、程序名,都可以作为识别依据

    如果能够找到,那么游戏就是用U3D制作的。并且我们能够处理这个游戏资源,制作一些简单的MOD
    如果你找不到.assets ,那么说明游戏可能不是通过U3D制作。或者游戏资源经过了加密。 无论是哪种情况,对于 非逆向程序员 都无从下手,这里不作讨论

本次幸运儿挑选

由于这是第一个篇章,我会用特别的一个案例作为对象进行说明
现在,有请我们(来自老菊玩啥我玩啥系列)的幸运儿:Big Bia 登场

大致观察其内容

之所以选这个游戏,是因为这个游戏的一部分资源文件是在.assets文件之外的
(那些.json文件其实就相当于有格式规范的文本文件,可以用记事本打开直接看)

这种情况大概率是因为此游戏打算为MOD提供支持,从而将游戏资源刻意裸露在外
(在观察其游戏公告后,也印证了我的想法)

确认目标


这次的目标就定为改这个这句话好了

目标:修改“少年,找工作吗?”这句话

搜寻目标

如果你找不到目标,制作MOD来替换目标,或者添加新的目标也就无从谈起
对于根本没有任何资料的游戏来说,这个过程是相当痛苦的

搜寻目标的关键点 - 摸清思路

分类 与 层级

程序员(以至于普通人)会将文件按照一定规则加以分类,将同一类型的内容存放在同一位置
比如说,如果这个文件夹是存放 色图 的,基本可以确定整个游戏的 色图 都会放在这个文件夹里

与分类习惯类似,程序员(以至于普通人)会将文件按照其层级意义进行分类存放,形成一棵文件树(这棵树就像是族谱,不断扩展延伸)
就像是这样:
* 武器(文件夹)
* 剑(文件夹)
* 细剑(文件夹)
* 武器描述.txt
* 武器数值.json
* 阔剑(文件夹)
* 武器描述.txt
* 武器数值.json
* 枪(文件夹)
* AK-47(文件夹)
* 武器描述.txt
* 武器数值.json
* 半自动步枪(文件夹)
* 武器描述.txt
* 武器数值.json

这种思路会遍布整个游戏(在游戏代码中用的更多,比游戏资源还多)
这种特点决定了: 找到一个目标的位置很 麻烦/难。但在成功寻找到一个目标以后,同类型的目标都会相对较容易找

搜寻目标

目标:修改“少年,找工作吗?”这句话

在一开始观察游戏资源的时候,就留意到了,有一部分裸露的资源
就处理难度来说,裸露的资源修改相对简单,打包后的资源次之,最难的就是编译后的游戏程序代码
做MOD一般追寻结果主义,能达到目的即可,没必要完全深挖
所以这里会先从裸露资源中的 文本文件 入手

这里会用 DocFetcher 这个工具,根据 文本文件 的内容来尝试对目标进行尝试性的搜寻

  1. 添加搜索的文件夹
    这里是要在暴露的游戏资源中找关键字,所以选择存放游戏资源的文件夹作为搜索目录
  2. 设置解析文本文件
    由于游戏存放文本的文件是json类型,这里将json添加到解析内容中。如此一来,软件就会深入到json文本中进行解析
  3. 确认,等待完成
  4. 查看结果

找到了目标文本“少年,找工作吗?”,观察到是保存在霸道总裁的json文件里
(这里其实有兴趣的话,可以看看来到这个文件所经过的目录,就可以得知其它英雄的信息)

对目标内容进行修改,保存修改后的内容

由于只是普通的文本文件,直接打开需改内容

重启游戏,观察是否修改成功

然后重启游戏观察是否起作用

修改成功

总结

对于裸露在外的资源文件,修改起来是非常容易的
关键在于如何找到目标,理清 游戏程序员的思路

这次就先到这里了,下次来修改其它的内容


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!