社区文档构建进行中,欢迎编辑。社区答疑群(非官方):717421103
通用游戏解包指南
阅读
2024-10-31更新
最新编辑:怒怒醬
阅读:
更新日期:2024-10-31
最新编辑:怒怒醬
尚不完善,欢迎编辑。
编写游戏wiki需要大量游戏数据、资源、图片和文本,这通常需要从游戏文件中提取和解析,俗称“解包”亦或是“拆包”。
解包可以快速准确的完善Wiki内容,促进玩家对游戏的认识,增强游戏体验,繁荣玩家社区。
本文不针对特定游戏,旨在简述通用的游戏解包思路和步骤,给出常用的工具和方法。注意到一些「电子商务平台」的第三方卖家提供「游戏数据提取」相关的服务,可以一键完成解包工作,则不在本文的讨论范围。
前提
尊重版权
这种逆向工程应当仅用于编写Wiki,为玩家提供信息。上传到wiki的游戏图片也应该注明版权。
需要注意,在商业平台上使用,或者公开发布游戏解包内容都是对游戏版权的侵犯。
最近的例子是碧蓝档案发给Nijineko的律师函。
当然,一些官方参与的游戏wiki可以获取第一手信息,一些游戏会给出详细的解包教程,一些游戏会以良格式存储数据并开放API以促进游戏社区开发MOD。
前提需求
如果不满足以下需求,建议以请其他小伙伴帮忙解包。
- 善于使用搜索引擎
- 了解一些相关文件格式(比如json)
- 熟悉至少一种编程语言,能写点代码
通用步骤
备份游戏文件
可选,注意一些游戏的工具可能会修改/增加游戏目录中文件。
识别游戏引擎
如果目标游戏使用了流行的游戏引擎,解包工作会顺利很多。
- 手机游戏的APK:
这些针对特定平台或引擎的工具可以简单的完成解包的核心工作。
如果你不清楚游戏使用的引擎,请必应搜索“XX游戏 引擎”等关键词。
很多游戏不会使用通用游戏引擎,这就需要自己观察游戏文件了,可以转到下一步。
观察文件组织,寻找数据文件
推荐使用VSCode浏览游戏文件夹,轻量且强大。
如果是通用游戏引擎解包获得,还可以搜索相关引擎的解包教程,寻找、了解游戏文件的组织。
观察解包后的游戏文件,根据目录、文件名、文件后缀等等信息,可以推测一个游戏文件的作用。多数文件是多媒体资源(比如模型、视频、贴图、音频……),请忽略它们,一个png文件通常不会存放游戏数据。
数据文件可能会用常见格式存储,比如JSON、XML、CSV等等,也可能会二进制存储。对于不明后缀的文件,可以直接打开来粗略判断。
一些游戏的数值会统一存放。比如RimWorld是Data/Core/Defs目录中的XML文件、Factorio是Data目录中的Lua文件、江城创业记是iFCon解包,Setting目录下的CSV文件。
一些游戏的数值会分散或混杂存放。比如Skyrim中的bsa文件,可以包含几乎所有游戏资源。比如Timberborn使用Unity开发,其数据被分散序列化在各个Prefab中。
在寻找到数据文件后,就可以解析并导出数据了。
解析并导出数据
游戏数据文件的组织和存储通常便于开发和使用,大概率不适合直接用于Wiki。
一般来说,人工整理这些数据工作量太大。我们建议使用编程语言来自动化这一过程。 特别是对于定期更新的游戏,一个自动化的解包和wikitext生成工具是非常必要的,能节省大量人力。
对于这样的数据处理,我们推荐数据科学的主力语言——Python。它容易上手,类库丰富。比如可以用mwclient库便捷的操作BWiki API来修改页面,参见API教程。
分析游戏源码
Wiki通常还涉及对游戏机制的探讨。
这时,一些反编译工具非常有用,允许玩家分析游戏源码来获取更多信息。
对于Unity开发的游戏,可以使用ILSpy、dotPeek等工具反编译。
比如Timberborn(基于Unity)中,需要配合游戏代码来解读时间机制,游戏内显示的数值也和设定数值稍有不同。要进行精密的量化时,配合游戏代码的分析往往更为精确。