zerlkung/Decima-Forge
GitHub: zerlkung/Decima-Forge
Decima 引擎游戏归档文件的 Python CLI 工具,支持解包、编辑本地化文本、提取字体纹理和重新打包,为 Mod 制作和游戏本地化提供完整工作流。
Stars: 0 | Forks: 0
# DecimaForge
**⚠️ 施工中 — 本项目正在积极开发中且尚未稳定。API 和 CLI 可能会随时更改,恕不另行通知。在生产数据上使用前请进行彻底测试。**
## 功能
- 解析并提取 `.bin` 归档文件(普通和加密格式)
- 解压 Oodle Kraken 数据块(需要外部 DLL)
- 将本地化文本导出/导入为 JSON(21种语言)
- 将字体纹理提取为 DDS
- 通过 PrefetchList 解析文件路径(hash → 路径查找)
- 计算 MurmurHash3_x64_128 路径 hash
- 将修改后的文件重新打包为新的归档文件
## 系统要求
- **Python 3.10+**
- **Windows x64**(Oodle DLL 仅支持 win64)
- **oo2core DLL** — 将 `oo2core_7_win64.dll`(或其他版本)放在项目目录中,或设置 `DECIMA_GAME_DIR` 环境变量。
- *此 DLL 是 RAD Game Tools Oodle 压缩库的一部分。本仓库不包含此文件。您可以从使用 Decima 引擎的游戏安装文件中获取它。*
## 安装
```
git clone https://github.com/zerlkung/Decima-Forge.git
cd Decima-Forge
pip install -e .
```
或者,无需安装直接运行:
```
cd Decima-Forge
python -m decimaforge
```
## 快速开始
```
# 列出 archive 中的文件
decimaforge list initial.bin -a
# 提取文件路径列表(对于 patch archive 使用 --prefetch)
decimaforge file-list initial.bin
decimaforge file-list Patch_HZDTHAI.bin --prefetch initial.bin
# 解包整个 archive
decimaforge unpack initial.bin extracted/
decimaforge unpack Patch_HZDTHAI.bin --prefetch initial.bin
# 导出泰语本地化
decimaforge export-loc initial_english.bin --lang th
decimaforge export-loc Patch_HZDTHAI.bin --lang th --prefetch initial.bin
# 编辑 loc.json,然后导入
decimaforge import-loc initial_english.bin loc.json --lang th
# 提取字体纹理
decimaforge extract-fonts initial.bin
# 计算路径 hash
decimaforge hash "ui/fonts/font_book.core"
# 重新打包修改的文件
decimaforge repack extracted/ new_archive.bin
```
## 命令
| 命令 | 用法 | 描述 |
|---------|-------|-------------|
| `list` | `decimaforge list [-a]` | 列出归档文件中的文件(`-a` 表示全部) |
| `extract` | `decimaforge extract [output]` | 提取单个文件 |
| `unpack` | `decimaforge unpack [dir] [--prefetch] [--no-names]` | 将所有文件解包到目录 |
| `repack` | `decimaforge repack [output]` | 重新打包文件夹(必须包含 manifest.json) |
| `export-loc` | `decimaforge export-loc [output] [--lang] [--prefetch]` | 将本地化导出为 JSON |
| `import-loc` | `decimaforge import-loc [dir] --lang` | 从 JSON 导入本地化 |
| `extract-fonts` | `decimaforge extract-fonts [dir] [--prefetch]` | 将字体纹理提取为 DDS |
| `file-list` | `decimaforge file-list [output] [--prefetch]` | 提取 prefetch 文件路径 |
| `hash` | `decimaforge hash ` | 计算 MurmurHash3 文件路径 hash |
## 支持的语言
英语、法语、西班牙语、德语、意大利语、荷兰语、葡萄牙语、繁体中文、韩语、俄语、波兰语、丹麦语、芬兰语、挪威语、瑞典语、日语、拉丁美洲西班牙语、拉丁美洲葡萄牙语、土耳其语、阿拉伯语、简体中文(共21种语言)
## 架构
```
decimaforge/
├── __init__.py # Package metadata
├── __main__.py # python -m decimaforge entry
├── cli.py # CLI (argparse, 8 subcommands)
├── archive.py # .bin archive read/write
├── core.py # .core binary format parser
├── hash.py # MurmurHash3_x64_128
├── compression.py # Oodle Kraken (ctypes)
├── encryption.py # XOR decryption
├── localization.py # Text export/import
├── font.py # Font texture → DDS
└── prefetch.py # Hash → path mapping
```
## 鸣谢
本项目基于社区的研究和逆向工程工作构建:
- **[Decima-Explorer](https://github.com/acrinym/Decima-Explorer)** — 归档结构、加密算法、数据块布局 (C++)
- **[decima-workshop](https://github.com/ShadelessFox/decima-workshop)** — 加密 salt、结构体加密/解密、文件表布局 (Java)
- **[HZDCoreEditor](https://github.com/Nukem9/HZDCoreE)** — 核心文件格式研究、RTTI 类型系统
- **[smhasher](https://github.com/aappleby/smhasher)** — MurmurHash3 参考实现(公共领域)
## PrefetchTool 工作流
补丁归档文件(如 `Patch_HZDTHAI.bin`)不包含文件路径数据——所有文件都以 64 位 hash 的形式存储。要解析名称,您需要一个 prefetch 源。
**选项 1:直接使用 initial.bin**(速度慢,30GB+)
```
decimaforge file-list Patch_HZDTHAI.bin --prefetch "D:\HZD\Packed_DX12\initial.bin"
```
**选项 2:使用 PrefetchTool**(速度快,2.6MB)
1. 下载 [PrefetchTool](https://github.com/Stealch/PrefetchTool) 并编译 HZDCoreTools
2. 从 `initial.bin` 重建 prefetch → 生成一个包含路径数据的小型 `.bin` 文件
3. 配合 `--prefetch` 使用:
```
decimaforge file-list Patch_HZDTHAI.bin --prefetch Patch_zzzzPrefetch.bin
```
首次运行会自动将路径缓存到 `{archive}.prefetch.txt`——后续运行将瞬间完成。
## 许可证
本项目仅供学习和 Mod 制作目的使用。有关具体的归属信息,请参见各个源文件。Oodle 压缩库是 RAD Game Tools 的专有软件,不包含在内。
# DecimaForge (泰语)
**⚠️ อยู่ระหว่างการพัฒนา — โปรเจคนี้ยังไม่เสถียร API และคำสั่งอาจเปลี่ยนแปลงโดยไม่แจ้งล่วงหน้า ควรทดสอบก่อนใช้กับข้อมูลจริง**
## 功能特性
- อ่านและแยกไฟล์ `.bin` archive (ทั้งแบบเข้ารหัสและไม่เข้ารหัส)
- แกะ/บีบอัดข้อมูล Oodle Kraken (ต้องใช้ DLL ภายนอก)
- ส่งออก/นำเข้าข้อความแปลภาษาเป็น JSON (21 ภาษา)
- ดึง texture ฟอนต์เป็นไฟล์ DDS
- ค้นหาชื่อไฟล์จาก PrefetchList (hash → path)
- คำนวณ MurmurHash3_x64_128
- แพ็คไฟล์กลับเป็น archive ใหม่
## 系统要求
- **Python 3.10+**
- **Windows x64** (Oodle DLL ใช้ได้เฉพาะ win64)
- **oo2core DLL** — วาง `oo2core_7_win64.dll` (หรือเวอร์ชันอื่น) ในโฟลเดอร์โปรเจค หรือตั้งค่า environment variable `DECIMA_GAME_DIR`
- *DLL นี้เป็นส่วนหนึ่งของ Oodle compression library โดย RAD Game Tools ทางเราไม่ได้รวมมาให้ สามารถหาได้จากเกมที่ใช้ Decima Engine*
## 安装
```
git clone https://github.com/zerlkung/Decima-Forge.git
cd Decima-Forge
pip install -e .
```
หรือรันโดยไม่ต้องติดตั้ง:
```
cd Decima-Forge
python -m decimaforge
```
## 使用方法
```
# 列出 archive 中的文件
decimaforge list initial.bin -a
# 提取文件路径列表(对于 patch archive 使用 --prefetch)
decimaforge file-list initial.bin
decimaforge file-list Patch_HZDTHAI.bin --prefetch initial.bin
# 解包整个 archive
decimaforge unpack initial.bin extracted/
decimaforge unpack Patch_HZDTHAI.bin --prefetch initial.bin
# 导出泰语本地化
decimaforge export-loc initial_english.bin --lang th
decimaforge export-loc Patch_HZDTHAI.bin --lang th --prefetch initial.bin
# 编辑 loc.json,然后导入
decimaforge import-loc initial_english.bin loc.json --lang th
# 提取字体
decimaforge extract-fonts initial.bin
# 计算 hash
decimaforge hash "ui/fonts/font_book.core"
# 重新打包
decimaforge repack extracted/ new_archive.bin
```
## 命令
| คำสั่ง | วิธีใช้ | คำอธิบาย |
|---------|-------|-----------|
| `list` | `decimaforge list [-a]` | แสดงไฟล์ใน archive (`-a` แสดงทั้งหมด) |
| `extract` | `decimaforge extract [output]` | แยกไฟล์เดี่ยว |
| `unpack` | `decimaforge unpack [dir] [--prefetch] [--no-names]` | แกะทุกไฟล์ไปโฟลเดอร์ |
| `repack` | `decimaforge repack [output]` | แพ็คโฟลเดอร์กลับ (ต้องมี manifest.json) |
| `export-loc` | `decimaforge export-loc [output] [--lang] [--prefetch]` | ส่งออกข้อความเป็น JSON |
| `import-loc` | `decimaforge import-loc [dir] --lang` | นำเข้าข้อความจาก JSON |
| `extract-fonts` | `decimaforge extract-fonts [dir] [--prefetch]` | ดึงฟอนต์เป็น DDS |
| `file-list` | `decimaforge file-list [output] [--prefetch]` | ดึงรายชื่อไฟล์จาก prefetch |
| `hash` | `decimaforge hash ` | คำนวณ MurmurHash3 ของพาธ |
## 支持的语言
อังกฤษ, ฝรั่งเศส, สเปน, เยอรมัน, อิตาลี, ดัตช์, โปรตุเกส, จีนตัวเต็ม, เกาหลี, รัสเซีย, โปแลนด์, เดนมาร์ก, ฟินแลนด์, นอร์เวย์, สวีเดน, ญี่ปุ่น, สเปนลาตินอเมริกา, โปรตุเกสบราซิล, ตุรกี, อาหรับ, จีนตัวย่อ (21 ภาษา)
## 致谢
โปรเจคนี้พัฒนาจากงานวิจัยและ reverse-engineering ของชุมชน:
- **[Decima-Explorer](https://github.com/acrinym/Decima-Explorer)** — โครงสร้าง archive, ขั้นตอนการเข้ารหัส, การจัดเรียง chunk (C++)
- **[decima-workshop](https://github.com/ShadelessFox/decima-workshop)** — Encryption salts, การเข้ารหัส/ถอดรหัส struct, ผัง file table (Java)
- **[HZDCoreEditor](https://github.com/Nukem9/HZDCoreE)** — งานวิจัย .core format, ระบบ RTTI type
- **[smhasher](https://github.com/aappleby/smhasher)** — MurmurHash3 reference implementation (public domain)
## 与 PrefetchTool 配合使用
Patch archive (เช่น `Patch_HZDTHAI.bin`) ไม่มีข้อมูลชื่อไฟล์ — ทุกไฟล์เก็บเป็น hash 64-bit ต้องใช้ prefetch source เพื่อแปลง hash → path
**วิธีที่ 1: ใช้ initial.bin โดยตรง** (ช้า, ไฟล์ 30GB+)
```
decimaforge file-list Patch_HZDTHAI.bin --prefetch "D:\HZD\Packed_DX12\initial.bin"
```
**วิธีที่ 2: ใช้ PrefetchTool** (เร็ว, ไฟล์ 2.6MB)
1. ดาวน์โหลด [PrefetchTool](https://github.com/Stealch/PrefetchTool) และ compile HZDCoreTools
2. Rebuild prefetch จาก `initial.bin` → ได้ไฟล์ `.bin` เล็ก ๆ ที่มีข้อมูล path
3. ใช้กับ `--prefetch`:
```
decimaforge file-list Patch_HZDTHAI.bin --prefetch Patch_zzzzPrefetch.bin
```
ครั้งแรกจะสร้าง cache `{archive}.prefetch.txt` โดยอัตโนมัติ — ครั้งต่อไปอ่านจาก cache ทันที
## 许可证
โปรเจคนี้จัดทำเพื่อการศึกษาและการทำ mod เท่านั้น Oodle compression library เป็นซอฟตแวร์ที่มีลิขสิทธิ์ของ RAD Game Tools และไม่ได้รวมอยู่ในโปรเจคนี้
标签:Bin文件解析, CLI, DDS纹理导出, Death Stranding, Decima Engine, DNS解析, Horizon Zero Dawn, HTTP工具, Mod工具, MurmurHash3, Oodle Kraken, Python, WiFi技术, 云资产清单, 哈希计算, 多语言翻译, 字体提取, 存档修改, 开源项目, 数据解压, 文件打包, 文件提取, 文本本地化, 无后门, 游戏修改, 游戏引擎, 游戏数据修改, 解包工具, 逆向工程