VirInvictus/opends
GitHub: VirInvictus/opends
SSI「浩劫残阳」CRPG 系列的开源社区工具包,提供文件格式解码、数据编辑、GPL 字节码反汇编/汇编及 bug 修复补丁,帮助 modder、引擎研究者和老游戏爱好者挖掘与修复经典游戏。
Stars: 0 | Forks: 0
# OpenDS
**SSI《浩劫残阳》CRPG 的开源社区工具包** —
*Shattered Lands* (1993) 和 *Wake of the Ravager* (1994)。
包含工具、补丁和文档。我们学到的所有内容都会被
记录下来。我们构建的每一个实用程序都会被发布。
## 本仓库包含的内容
按构建顺序排列 —— **工具优先,补丁其次**:
- **工具** — 为简化挖掘过程而构建的每一个实用程序。
目前已发布十二款工具,每款工具都独立附带自己的 README
和 `VERSION`。基于 MIT 许可证发布。→ [`tools/`](tools/)
| 工具 | 功能描述 |
|---|---|
| [`opends`](tools/opends/) | 总控 CLI:“我有这个文件,它是什么?”通过 magic 分发到正确的工具。 |
| [`gff-edit`](tools/gff-edit/) | GFF 容器读写库 + `gff-cat` CLI。这是其他所有工具构建的基础。 |
| [`gpl-disasm`](tools/gpl-disasm/) | GPL bytecode 反汇编器:支持文本或 JSON,包含 CFG 标签和精选的符号名称。 |
| [`gpl-asm`](tools/gpl-asm/) | GPL 重新汇编和补丁编写工具:600/600 语料库 chunk 可实现字节级一致的往返(round-trip)。 |
| [`save-inspect`](tools/save-inspect/) | 存档文件检查器和编辑器:转储、diff、编辑 PC 和物品,并安全写回。 |
| [`dialog-extract`](tools/dialog-extract/) | 将 NPC 对话从 GPL chunk 中提取为 JSON、对话记录或可浏览的 HTML。 |
| [`image-extract`](tools/image-extract/) | 将 bitmap chunk 解码为 PNG,并将编辑后的 PNG 重新打包(用于 sprite modding)。 |
| [`region-render`](tools/region-render/) | 将某个区域的 tile、墙壁和实体合成为地图 PNG 或动画 GIF。 |
| [`atlas`](tools/atlas/) | 静态 HTML 站点生成器:离线浏览整个安装目录中的 sprite、地图和对话。 |
| [`verify-install`](tools/verify-install/) | 根据标准哈希值检查安装情况;从 GOG 安装程序修复;以及回滚。 |
| [`repro`](tools/repro/) | 带有 overlay 挂载(绝不写入安装目录)、输入自动化和视频捕获的 DOSBox 复现工具。 |
| [`opcode-fuzz`](tools/opcode-fuzz/) | GPL opcode 发现工具:交换 chunk,运行游戏,然后对比 world state 的差异。 |
[`tools/README.md`](tools/README.md) 表格中包含了当前的
版本号以及各个工具的详细信息。
- **darkfix patches** — 针对两款游戏的社区 bug 修复补丁。以 zip 压缩包形式分发,您可将其应用到您的 GOG 安装目录中。
游戏依然通过 DOSBox 启动;而您过去常遇到的 bug 将不复存在。补丁的编写是基于上述工具构建的。
→ [`ds1-patch/`](ds1-patch/), [`ds2-patch/`](ds2-patch/)
- **文档** — 文件格式、引擎内部原理、bug 目录、逆向工程笔记。这样下一个人就不必再从头摸索了。→ [`docs/`](docs/)
任何能简化挖掘过程的工作都是第一优先级。补丁紧跟在工具包之后。请参阅 [`roadmap.md`](roadmap.md) 了解
分阶段的排序。
## 本项目目前还不是(暂未实现)
一个完整的开源引擎重制版。
这已经被尝试过很多次了。过去二十年间的公开尝试包括:
- **Dark Sun World** (2004–2008) — DSO 复兴项目。已停止活跃。
- **一个 2010 年代的 DSO 模拟器** — 被 Wizards of the Coast 关停。
- **paulofthewest 的 `soloscuro-archive`** — 最严肃的一次尝试,约 567 次提交,于 2023 年陷入停滞。
- **soloscuro (Zig 重写版)**,**soloscuro-orx**,**soloscuro-oldgo**,**libsoloscuro** — 仅在 dsoageofheroes 组织内就有半打原型,没有一个能实现端到端可玩。
- **Beamdog 论坛移植版** — 社区试图在 Infinity Engine 中重现*Shattered Lands* 的尝试。已停止活跃。
每一次尝试都在交付可玩游戏之前就停滞不前了。问题出在 GPL bytecode VM 上 —— 这是引擎内嵌的脚本语言,没有公开规范 —— 并且其中包含了海量的游戏逻辑代码。
OpenDS 转换了思路:将您在通往完整引擎*道路上*构建的产物 —— 反汇编器、chunk 编辑器、格式文档、bug 补丁 —— 作为独立且实用的工具发布。每一个工具本身都很有价值。每一个工具都能让我们对引擎有更多的了解。最终的全功能重制版仅仅作为愿景存在于项目名称中,而不是路线图中的承诺。水到自然渠成。即使最终未能实现,这里的工具包和补丁也依然意义重大。
## 状态
工具包已具备完整的读取和写入能力:每一个发布的文件格式都可以被检查,并且 GFF chunk、GPL bytecode、sprite 和存档都可以被编辑并安全写回,同时通过了往返(round-trip)一致性验证。路线图中的第 0-5 阶段(文档、GFF 基础库、复现工具、反汇编器、探索工具、汇编器)已基本发布完成。目前的推进方向是第 6 阶段:编写、打包并发布第一款 darkfix 补丁。
- [`spec.md`](spec.md) — 设计规范和不变量
- [`roadmap.md`](roadmap.md) — 分阶段计划和当前状态
- [`docs/README.md`](docs/README.md) — 带有阅读路径的文档索引(适用于 modder、引擎研究员、补丁作者、贡献者)
## 快速开始(开发者)
您需要拥有其中一款或两款游戏的正版副本(推荐使用 GOG 安装程序)。将 GOG `.exe` 安装程序放在 `.games/` 目录下(已被 gitignore 忽略),并使用 `innoextract` 进行解压;具体操作指南请参阅
[`docs/build-environment.md`](docs/build-environment.md)。`verify-install --repair` 也可以直接从安装程序中提取单个文件,用以修复损坏的安装。
## 许可证
工具和补丁工具链均基于 MIT 许可证授权;请参阅 [`LICENSE`](LICENSE)。
我们不会重新分发游戏数据文件;其版权归 Wizards of the Coast / 原始版权所有者所有。玩家需自行提供这些文件。
## 支持
如果 OpenDS 对您有帮助,并且您愿意提供赞助:
```
bc1qkge6zr45tzqfwfmvma2ylumt6mg7wlwmhr05yv
```
标签:Homebrew安装, UML, 反汇编器, 多模态安全, 文件解析, 汇编器, 游戏Mod, 游戏开发工具, 经典RPG, 逆向工具, 逆向工程工具, 通知系统