nourlie/GlyphCore

GitHub: nourlie/GlyphCore

这是一个《Guild Wars 2》的俄语本地化补丁,通过代理 DLL 在内存中实现西里尔字母字体渲染和游戏文本翻译,无需修改游戏原始数据文件。

Stars: 13 | Forks: 1

# GlyphCore ### Guild Wars 2 俄化补丁 — 西里尔字母字体 + 文本翻译 image 一个早期加载的代理 DLL,它能让 **Guild Wars 2** **绘制西里尔字母** —— 即原生客户端显示为空白方块的字符 —— 并**将游戏文本翻译**为俄语。这是一个为了无障碍访问 / 本地化的项目:它让运行中的字体引擎学会绘制西里尔字母,并在**内存中**替换文本,**无需修改磁盘上的 `Gw2.dat` 文件**,因此能通过 ArenaNet 的归档完整性检查,游戏也不会触发“修复”。 lined ## 📦 安装 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) — заполняете русский ├─ dict_*.csv ← словари по источникам (вики/API) — тоже подхватываются ├─ 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` 列即可。 ### 更多文本来源 — 官方 Wiki 和 GW2 API `cyrillic-string-dump-tool.exe` 不仅从 `Gw2.dat` 中提取英文文本,还会从**官方 Wiki**和 **GW2 API** 获取 —— 这些是在 `.dat` 中被加密或从服务器动态获取的内容(对话、台词)。不带任何参数运行该工具,即会打开一个**菜单**(使用方向键 / 空格 / Enter 选择数据源): - **Wiki:** 剧情对话(按资料片分类)、复活点台词、动态事件、区域环境对话、首领台词、NPC 对话(交谈窗口)。 - **GW2 API:** 成就、物品、技能、特性、皮肤、世界地图上的名称(区域 / 兴趣点 / 传送点)以及各种简短列表(称号、货币、染料、坐骑、迷你宠物、公会、WvW 等)。 每个数据源都会写入其对应的 **`dict_.csv`** 文件中(格式为 `english,russian`,合并模式 —— 你的翻译会被保留)。**`version.dll` 会自动加载 `cyrillic\` 文件夹下的所有 `dict_*.csv`** 以及 `cyrillic_strings.csv`,因此将翻译分散保存在独立的文件中非常方便,且不会造成任何破坏(`cyrillic_strings.csv` 中的手动翻译具有最高优先级)。 ### 游戏过程中的自动收集 设置 `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 所有;你将通过工具从*你自己*的合法游戏副本中获取现成的文件,或者从发布版中获取。 Guild Wars 2 是 ArenaNet, LLC 的商标。这是一个非官方、非盈利的粉丝项目,与 ArenaNet 无关且未获其认可。 ## 许可证 本仓库中的代码采用 [MIT](LICENSE) 许可证。内置的 Roboto 字体采用 Apache License 2.0 许可证。
标签:DLL注入, Guild Wars 2, 内存修改, 可视化界面, 字体渲染, 流量审计, 游戏Mod, 游戏本地化, 通知系统