社区文档构建中,欢迎编辑。 社区答疑群(非官方):717421103,点点小课堂(腾讯会议):5696651544

全站通知:

通用游戏解包指南

阅读

    

2024-04-21更新

    

最新编辑:对味Cherry

阅读:

  

更新日期:2024-04-21

  

最新编辑:对味Cherry

来自WIKI实验室WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索
页面贡献者 :
Lu_23333
对味Cherry
卡拉彼丘WIKI拉菲

尚不完善,欢迎编辑。

编写游戏wiki需要大量游戏数据、资源、图片和文本,这通常需要从游戏文件中提取和解析,俗称“解包”。

解包可以快速准确的完善Wiki内容,促进玩家对游戏的认识,增强游戏体验,繁荣玩家社区。

本文不针对特定游戏,旨在简述通用的游戏解包思路和步骤,给出常用的工具和方法。

前提

尊重版权

这种逆向工程应当仅用于编写Wiki,为玩家提供信息。上传到wiki的游戏图片也应该注明版权。

需要注意,在商业平台上使用,或者公开发布游戏解包内容都是对游戏版权的侵犯。

最近的例子是碧蓝档案发给Nijineko的律师函

当然,一些官方参与的游戏wiki可以获取第一手信息,一些游戏会给出详细的解包教程,一些游戏会以良格式存储数据并开放API以促进游戏社区开发MOD。

前提需求

如果不满足以下需求,可能会遇到很多困难。建议以请其他小伙伴帮忙解包。

  • 善于使用搜索引擎获取想要的信息
  • 了解常见的文件格式
  • 熟悉至少一种编程语言,能写点代码

通用步骤

备份游戏文件

可选,一些游戏的工具可能会修改游戏文件。

识别游戏引擎

如果目标游戏使用了流行的游戏引擎,解包工作会顺利很多。

这些针对特定平台或引擎的工具可以简单的完成解包的核心工作。

如果你不清楚游戏使用的引擎,请必应搜索“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)中,需要配合游戏代码来解读时间机制,游戏内显示的数值也和设定数值稍有不同。要进行精密的量化时,配合游戏代码的分析往往更为精确。