Skip to content

Latest commit

 

History

History
306 lines (230 loc) · 14.2 KB

File metadata and controls

306 lines (230 loc) · 14.2 KB

Victoria 3 DLC 解锁器 macOS版

版本 5.0.0 — 模块化引擎,CreamAPI v5.3.0.0,完整解锁 DLC,支持多人游戏

License: MIT Platform Game

🌍 语言: English | Русский | Deutsch | Français | Español | 中文


⚠️ 免责声明与法律警告

仅供学习用途,使用风险自负。

  • 你必须在 Steam 上拥有正版 Victoria 3。本工具不会下载任何 DLC — 它只是改变游戏文件中已存在的 DLC 内容的所有权状态。
  • 使用 DLC 解锁器违反 Steam 订阅者协议和 Paradox 的 EULA。原则上这可能导致 VAC / 账号封禁或停权。Victoria 3 没有受 VAC 保护的服务器,因此实际风险较低, 但并非为零 — 风险由你自行承担。
  • 作者对任何后果概不负责。如果你喜欢这款游戏,请购买 DLC 以支持 Paradox Interactive。

📖 简介

一款用于 macOSVictoria 3 的 DLC 解锁器。它使用 CreamAPI v5.3.0.0 来为你在 Steam 上合法拥有的游戏解锁 DLC 所有权。

工作原理

工具会把 CreamAPI 的 libsteam_api.dylib(一个置于真正 Steam 库之前的代理)安装到游戏的 binaries/victoria3.app/Contents/Frameworks/,将原文件备份为 libsteam_api_o.dylib,并写入一个 cream_api.ini。启动时,游戏会询问 Steam 你拥有哪些 DLC;CreamAPI 对每个已解锁的 DLC 回答“是”,同时把其余请求代理给真正的 Steam —— 因此多人游戏依然可用

安装时,解锁器会读取游戏自身的 game/dlc/*.dlc 元数据,并写入一个显式的 [dlc] 列表(unlockall = false)。从你已有的内容构建列表,结果完整, 首次启动后可离线工作,且不依赖 Steam 的运行时 DLC 列表。该列表在每次安装时重建, 所以添加新内容后只需重新安装即可。如果找不到 DLC 元数据,则回退为 unlockall = true(由 Steam 在线解析列表)。

功能

  • 支持多人游戏(CreamAPI 代理到真正的 Steam)
  • ✅ 完整解锁 DLC —— 从你自己的 game/dlc/ 内容构建显式列表(可离线),每次安装时重建
  • ✅ 自动检测 Victoria 3 安装位置(内置磁盘外置驱动器)
  • ✅ 安全备份原始库;干净、可逆的卸载
  • ✅ 不修改任何内容的 status 命令,用于查看已安装状态
  • ✅ 经校验和验证的通用二进制(同时含 Intel Apple Silicon 切片)

📋 要求

支持的平台

Victoria 3 本身只提供支持 Metal 的 macOS 版本。解锁器可在游戏能运行的任何地方运行:

平台 状态
Apple Silicon (M1–M4),macOS 11+ ✅ 支持(游戏原生 arm64 运行)
配独立 AMD GPU 的 Intel Mac ⚠️ 可能可用;游戏官方不支持
配 Intel 集成显卡的 Intel Mac Victoria 3 不支持(Paradox 的要求)

随附的 libsteam_api.dylib 是一个通用(fat)二进制,同时包含 x86_64arm64 切片,因此解锁器本身从不强制使用 Rosetta 2。上述平台限制来自 Victoria 3,而非解锁器。

前置条件

  • 满足 Victoria 3 macOS 要求的 Mac(推荐 Apple Silicon)
  • 在 Steam 上合法购买的 Victoria 3
  • DLC 内容文件(必须已存在 —— 本工具不会下载它们)
  • 建议安装 Xcode 命令行工具(xcode-select --install)以提供 codesign/xattr

🚀 安装

简要 —— 三条命令,然后启动游戏:

git clone https://github.com/KyLaEga/Victoria3-DLC-Unlocker-macOS.git
cd Victoria3-DLC-Unlocker-macOS
./install_dlc_unlocker.sh

分步说明

  1. 先确认 DLC 内容已就位。 你游戏的 game/dlc/ 文件夹必须已包含 DLC 包 (本工具解锁所有权,不下载内容)。如果为空,请见下方 DLC 内容文件从哪里获取?

  2. 克隆或下载本仓库:

    git clone https://github.com/KyLaEga/Victoria3-DLC-Unlocker-macOS.git
    cd Victoria3-DLC-Unlocker-macOS
  3. 运行安装器:

    ./install_dlc_unlocker.sh

    这是对 ./bin/unlocker install vic3 的轻量封装。工具会验证随附的库, 自动检测你的 Victoria 3 安装(内置磁盘外置驱动器),将原文件备份为 libsteam_api_o.dylib,安装 CreamAPI,从你的 game/dlc/ 内容构建显式 DLC 列表, 并对结果做临时(ad-hoc)重签名以通过 macOS Gatekeeper。

    如果游戏在非常规位置,可直接指定路径:

    ./bin/unlocker install vic3 --path "/Volumes/My Drive/SteamLibrary/steamapps/common/Victoria 3"
  4. 通过 Steam 启动 Victoria 3。 有了显式 [dlc] 列表,这在离线时也能工作。 重要: 如果游戏或 Paradox 启动器已经打开,请**完全退出(⌘Q)**后重启 —— CreamAPI 只在进程启动时读取一次 cream_api.ini

验证是否成功

在不改动任何内容的情况下检查补丁状态:

./bin/unlocker status vic3

你应当看到:

[+] Patch state:     INSTALLED (CreamAPI active)
[+] Original backup: PRESENT (...libsteam_api_o.dylib)
[+] cream_api.ini:   PRESENT
[*]   unlockall = false; explicit [dlc] list (N DLC)

然后打开 Paradox 启动器的 DLC 标签页 —— 凡是内容已存在的 DLC,现在都应显示为已拥有 (没有“购买”按钮,也没有警告图标)。


🛠️ 用法(unlocker CLI)

唯一入口是 bin/unlocker;两个 *_dlc_unlocker.sh 脚本是面向默认游戏的轻量便捷封装。

./bin/unlocker install   [vic3]   # 备份原文件 + 应用 CreamAPI 补丁
./bin/unlocker uninstall [vic3]   # 恢复原始库
./bin/unlocker status    [vic3]   # 不修改:显示补丁 / 备份 / 完整性
./bin/unlocker --help
./bin/unlocker --version

选项(在命令之后):
  --yes          非交互;确认时一律视为“是”。
  --path DIR     使用此游戏目录,而非自动检测。

在不改动任何内容的情况下检查状态:

./bin/unlocker status vic3

install 背后做了什么

  1. 完整性闸门 —— 除非随附的 libsteam_api.dylib 与已提交的 SHA256 匹配, 否则拒绝运行(防篡改/防损坏)。
  2. 定位游戏 —— 展开 games/vic3.conf 中的搜索路径(处理空格和外置 /Volumes/* 驱动器);或使用 --path。Victoria 3 将其 macOS 二进制放在 binaries/victoria3.app 下。
  3. 备份原文件为 libsteam_api_o.dylib(绝不覆盖已有的有效备份)。
  4. 安装 CreamAPI —— 将代理 dylib 复制覆盖 libsteam_api.dylib, 并在重签名前再次核对副本的哈希。
  5. 构建 cream_api.ini —— 扫描 game/dlc/*/*.dlc,收集每个 steam_id, 去重后写入带 unlockall = false 的显式 [dlc] 列表。
  6. macOS 加固 —— 移除隔离属性(xattr)并对 dylib 做临时重签名 (codesign -s -),使 Gatekeeper 在游戏进程中加载它。

uninstall 撤销第 3–4 步(恢复备份、删除 cream_api.ini、重签名)。 status 报告上述全部内容且不做任何改动。


🗑️ 卸载

./uninstall_dlc_unlocker.sh
# 或:./bin/unlocker uninstall vic3

这会从备份恢复 libsteam_api.dylib,删除 cream_api.ini,重签名原文件, 并清理任何遗留产物。

运行 Steam 的**“验证游戏文件完整性”**会悄悄恢复原始库并移除补丁 —— 这是预期行为。 重新运行安装器即可再次应用,或用 status 确认当前状态。


❓ 常见问题

DLC 在启动器中显示警告图标

缺少 DLC 的内容文件。解锁器只改变所有权状态 —— 实际内容必须存在于游戏的 game/dlc/ 文件夹中。

DLC 内容文件从哪里获取?

📖 完整分步指南(转移 game/dlc/、合并分卷压缩包、故障排查):docs/DLC-CONTENT.md(英文)。

本工具不分发也不下载 DLC —— 内容由你自备。Paradox 的 DLC 内容是跨平台的, 因此通常的做法是从你已拥有该内容的机器上复制 game/dlc/ 文件夹 (例如你拥有的 Windows 或 Linux 安装)到你的 Mac 安装:

.../steamapps/common/Victoria 3/game/dlc/

每个 DLC 都在各自的子文件夹中,包含一个 .dlc 元数据文件和内容压缩包。 复制后,运行(或重新运行)安装器,使 [dlc] 列表根据新内容重建。

拿到的内容是分卷压缩包(*.zip.001*.zip.002…)? 这些分卷是一个被切成若干块的压缩包 —— 不是各自独立的 zip。请在 macOS 上按如下方式 合并并解压(不要分别解压每一卷):

# 7-Zip 能处理 Paradox 包常用的 LZMA 压缩,并在你指向第一卷时自动读取全部分卷:
brew install sevenzip
7zz x "DLC-….zip.001" -o"/路径/到/Victoria 3"   # 写出 game/dlc/ 目录树

# 或者先把各分卷拼接成一个文件(顺序很重要):
cat DLC-….zip.00{1,2,3,4} > DLC-….zip
7zz x DLC-….zip -o"/路径/到/Victoria 3"

-o 指向游戏文件夹(game/ 的上级目录)—— 压缩包内已包含正确的子路径, 因此在那里解压会正确地合并到位。

为什么 status 显示的 DLC 比我预期的少?

这是对的,没有丢失。Paradox 常把多个内容包(一个扩展 + 其内容/音乐包) 归入同一个 Steam 购买项(appid)。解锁器按 Steam appid 授予所有权, 所以它报告的数字是不同 appid 的数量 —— 启动器随后会显示这些 appid 解锁的全部内容包。 status 报告的是当前配置中的 appid 数量。

Steam 的“验证游戏文件完整性”撤销了我的补丁

这是预期行为 —— Steam 用原文件替换了我们的库。运行 ./bin/unlocker status vic3 确认后重新安装。

游戏无法启动

macOS Gatekeeper 可能在阻止已修改的库。安装器已经移除隔离属性并对 dylib 做了临时重签名, 但如果你是手动复制的文件:

xattr -dr com.apple.quarantine "/path/to/Victoria 3/binaries/victoria3.app"
codesign --force -s - "/path/to/Victoria 3/binaries/victoria3.app/Contents/Frameworks/libsteam_api.dylib"

若缺少 codesign/xattr,先安装命令行工具:xcode-select --install。 仍然不行?运行卸载器后再试。

随附的库安全吗?

随附的 libsteam_api.dylib 与 CreamAPI 官方 nonlog macOS 版本逐字节相同, 在 VirusTotal 上为 0/64。你可以自行复核校验和 —— 见 docs/SECURITY.mdvendor/creamapi/VERSION.txt。 (注意:该二进制在其 install-name 中嵌入了上游构建路径;这是无害的, 也正是工具用来检测已安装补丁的标志。)

哪些 DLC 会被解锁?

所有内容存在于你 game/dlc/ 文件夹中的 DLC。 安装器读取每个 .dlc 文件, 收集其 Steam appid,并把完整集合写入 cream_api.ini[dlc] 段 —— 扩展、沉浸包、内容包和音乐一视同仁(Voice of the People、Sphere of Influence、 Colossus of the South、Pivot of Empire、Charters of Commerce、National Awakening、 Iberian Twilight、The Great Wave…)。添加了新 DLC 内容?重新运行安装器,列表会重建。 status vic3 会显示当前配置涵盖多少个 appid。

我能解锁另一款 Paradox 游戏吗?

引擎与具体游戏无关。要支持例如 CK3 或 EU4,只需一个新的 games/<game>.conf(appid + bundle 名称 + 搜索路径)—— 无需改动代码。 目前只随附 Victoria 3;见 docs/CONTRIBUTING.md


📜 解锁策略沿革

macOS 解锁器先后使用过三种解锁策略。如果你用过旧版本(本项目最初是 EU4 解锁器), 这就是改动内容及原因:

版本 策略 多人 备注
1.x – 2.x Goldberg Steam 模拟器 完全离线模拟 Steam 并替换 libsteam_api.dylib;使用 steam_settings/ 文件夹和 steam_appid.txt仅单人 —— 无法邀请好友或加入会话。
3.0 CreamAPI + unlockall = true 改用 CreamAPI 代理,把调用转发给真正的 Steam,于是多人重新可用。DLC 来自 Steam 的运行时列表。
4.0+ CreamAPI + 显式 [dlc] 列表 安装器从你自己的 dlc/ 内容构建完整列表 —— 完整且可离线工作。
5.0 改为面向 Victoria 3 同一引擎与策略,现指向 Victoria 3(binaries/victoria3.appgame/dlc/、appid 529340)。

如果你从 1.x–2.x 安装升级而来,uninstall 仍会清除旧的 Goldberg 产物 (steam_settings/steam_appid.txt*.backup)。


🔐 安全与完整性

如果随附 dylib 的 SHA256 与 vendor/creamapi/VERSION.txt 不匹配,安装器会拒绝运行 (防篡改/防损坏),CI 也会在每次推送时复验。见 docs/SECURITY.md

🙏 鸣谢

📜 许可证

基于 MIT 许可证 —— 见 LICENSE

⭐ 支持

如果对你有帮助:⭐ 给仓库点星,🐛 报告问题,💡 提出改进建议。 而且如果你喜欢 Victoria 3 及其 DLC,请购买它们以支持 Paradox Interactive。