nourlie/gw2-cyrillic

GitHub: nourlie/gw2-cyrillic

一个通过内存注入实现的《激战2》俄语本地化补丁,在不修改游戏原始文件的前提下支持西里尔字母渲染和文本翻译。

Stars: 6 | Forks: 1

# GW2 西里尔字母 ### 激战2 俄化补丁 — 西里尔字体 + 文本翻译 image 一个早期加载的代理 DLL,它能让 **Guild Wars 2** **绘制 西里尔字母** —— 即原生客户端显示为空心方块的字符 — 并 **将游戏文本翻译**为俄语。这是一个旨在提升无障碍访问 / 本地化的项目: 它能让游戏自带的字体引擎学会绘制西里尔字母,并在**内存中**替换文本, **无需修改磁盘上的 `Gw2.dat` 文件**,因此能顺利通过 ArenaNet 的文件完整性校验,游戏也不会触发“修复”流程. ## 📦 安装 1. 从[最新发布版本](https://github.com/nourlie/gw2-cyrillic/releases/latest)下载 **`version.dll`**。 2. 将其放入 Guild Wars 2 文件夹 —— 与 `Gw2-64.exe` 同级。 3. 启动游戏。大功告成。 ``` Guild Wars 2\ ├─ Gw2-64.exe └─ version.dll ← скачанный файл ``` ### 🅰️ 自定义西里尔字体(可选) 默认使用内置的 **Roboto** 字体。如果想**使用您自己的** 字体来绘制西里尔字母,请将文件 **`cyrillic.ttf`** 放在紧挨着 `version.dll` 的 **`cyrillic\`** 子文件夹中 —— 运行时会自动从该文件中提取字形并针对各个字号进行渲染。 ``` Guild Wars 2\ ├─ Gw2-64.exe ├─ version.dll └─ cyrillic\ └─ cyrillic.ttf ← ваш шрифт ``` ## 📝 游戏文本翻译 除了绘制西里尔字母外,`version.dll` 还能**将游戏文本翻译**为俄语。 翻译内容取自词典文件 **`cyrillic\cyrillic_strings.csv`**(包含 `english,russian` 两列,可使用任何表格软件进行编辑)。英文文本会 在完整性校验通过后,被俄文**在内存中**直接替换 —— `.dat` 文件完全不受影响。**俄文文本的 长度没有限制。** 甚至连加密(RC4)的字符串也能被翻译 —— 这占据了游戏全部文本的约 70%。 ``` Guild Wars 2\ ├─ version.dll ├─ cyrillic-string-dump-tool.exe ← инструмент дампа словаря (из релиза) └─ cyrillic\ ├─ cyrillic_strings.csv ← словарь (english,russian) — заполняете русский ├─ discovered_strings.csv ← авто-собираемые новые строки (временный) ├─ cyrillic.ttf ← свой шрифт (опционально) └─ version_proxy_log.txt ← лог ``` ### 获取基础词典 — `cyrillic-string-dump-tool.exe` **未加密的**字符串(物品名称和部分 UI —— 这部分仅占较小的比例) 可以通过离线工具 **`cyrillic-string-dump-tool.exe`**(可在同一个 [发布页面](https://github.com/nourlie/gw2-cyrillic/releases/latest)下载)从 `Gw2.dat` 中提取: 1. **彻底关闭游戏**(以及启动器 —— 因为它需要对归档文件的独占访问权限)。 2. 将 `cyrillic-string-dump-tool.exe` 放入 Guild Wars 2 文件夹(与 `Gw2.dat` 同级) 并运行(双击即可)。 3. 它将扫描归档文件(耗时数分钟),并将扫描到的英文字符串**追加** 到 `cyrillic\cyrillic_strings.csv` 中(此操作为合并模式 —— 现有字符串及您的翻译 将被保留)。 随后即可填写 `russian` 列的内容。 ### 随游戏进程自动收集 开启 `autocollect=true`(见下文)后,`version.dll` 会对游戏显示的每一行新字符串 (包括加密字符串)进行解码,并将其写入 `cyrillic\discovered_strings.csv`。在下一次启动时,新字符串会自动 并入 `cyrillic_strings.csv` 中。这样,词典就会根据您在游戏中实际 看到的内容不断得到扩充。 ## ⚙️ 设置 — `cyrillic\config.ini` 首次启动时会自动生成 `cyrillic\config.ini`(包含 `true`/`false` 值, 将在下一次启动游戏时生效): ``` # 从 GitHub releases 自动更新 version.dll。 autoupdate=true # 自动收集显示的字符串到 discovered_strings.csv(用于填充词典)。 autocollect=false # 应用来自 cyrillic_strings.csv 的翻译(游戏中的俄语文本)。 translate=true ``` | 参数 | 默认值 | 功能说明 | |----------|:---:|------------| | `autoupdate` | `true` | 检查并从 GitHub 安装 version.dll 的更新 | | `autocollect` | `false` | 将显示的字符串收集到 `discovered_strings.csv` 并将其并入词典 | | `translate` | `true` | 加载 `cyrillic_strings.csv` 并在游戏中显示俄语翻译 | ## 🖥️ GUI — 词典编辑器、设置与状态 发布版本中包含 **`gw2-cyrillic-gui.exe`** —— 一款用于操作 俄化补丁的图形化辅助工具。它是一个独立的程序:您可以将其放在与 `version.dll` 同级的位置(游戏文件夹中),或者在任意位置运行并指定 GW2 文件夹 —— 它会自动找到 `cyrillic\` (包括通过扫描 Steam 游戏库)。 ``` Guild Wars 2\ ├─ version.dll ├─ gw2-cyrillic-gui.exe ← графический редактор (из релиза) └─ cyrillic\ └─ cyrillic_strings.csv ``` 功能标签页: - **词典** — 基于 `cyrillic_strings.csv` 的 `英文 / 俄文` 表格: 支持搜索、筛选(**全部 / 已翻译 / 未翻译 / 标记损坏**),高亮显示未翻译及带有损坏占位符的字符串, 通过复选框选择行并进行批量操作,撤销编辑(**Ctrl+Z**), 显示翻译进度以及跳转至下一个未翻译的字符串。 所有更改都会保存到同一个 CSV 文件中。 - **设置** — 只需点击几下即可编辑 `cyrillic\config.ini`(`translate` / `autoupdate` / `autocollect`),此外还支持界面主题设置(深色/浅色,强调色)。 - **状态** — 解析 `cyrillic\version_proxy_log.txt`:显示已加载的内容、 是否找到特征码、词典是否可见 —— 非常适合用于故障排查。 ## 🔧 进阶选项 — `gw2-dat-tool`(可选) 代码库中包含一个 CLI 工具 [`gw2-dat-tool/`](gw2-dat-tool/),用于处理**您自己的** `Gw2.dat`:导出字符串词典、查看字体的 `AFNT` 数据块、生成 西里尔字母图集。大多数用户**并不需要它** —— 单凭 `version.dll` + `cyrillic-string-dump-tool.exe` 就已足够。更多细节请参阅 [`gw2-dat-tool/README.md`](gw2-dat-tool/README.md)。 ``` # 将整个字符串词典导出为 CSV(游戏已关闭): cargo run --release -- --dat "C:\путь\к\Guild Wars 2\Gw2.dat" strs-export-all --out dict.csv ``` ## 工作原理(简述) Guild Wars 2 将字体和文本存储在 `Gw2.dat` 归档文件中。直接干预的方法是行不通的: **不能直接修改 `Gw2.dat`**(客户端会校验 CRC 并删除被修改的 文件 → 导致重新下载),而**普通的插件**则要在游戏 读取数据*之后*才会被加载。 `version.dll` 绕过了这两个限制:GW2 会静态导入它,因此它会 在引擎启动**之前**被加载;游戏读取并校验*原始的*数据,随后 DLL **在内存(RAM)中替换解压后的字体字节和字符串** —— 这发生在所有的完整性校验通过之后, 但在解析器运行之前。在此过程中,磁盘上的 `Gw2.dat` 文件**保持不变**。 注入的 `version.dll` 源代码是闭源的;发布版本中仅提供编译好的 二进制文件。 ## ⚠️ 法律声明 / 游戏数据 本代码库包含 `gw2-dat-tool` 工具以及基于 [Roboto](https://fonts.google.com/specimen/Roboto) 字体(遵循 Apache-2.0 协议)渲染的西里尔字母数据。本代码库中**不包含**任何从 `Gw2.dat` 中提取的数据 —— 这些数据归 ArenaNet 所有;最终生成的文件来源于您*自己*合法安装的游戏副本 (通过 dump-tool 提取),或是从发布版本中获取。 Guild Wars 2 是 ArenaNet, LLC 的商标。这是一个非官方的、非商业性质的 粉丝项目,与 ArenaNet 毫无关联,也未获得其认可。 ## 开源许可 本代码库中的代码遵循 [MIT](LICENSE) 协议。内置的 Roboto 字体遵循 Apache License 2.0 协议。
标签:DLL注入, 内存修改, 可视化界面, 字体渲染, 本地化, 汉化/俄化, 流量审计, 游戏模组, 通知系统