Duckov Market Mod
February 18, 2026 · View on GitHub
Duckov 联机市场 Mod 源码仓库,包含 Core 与 Loader 两个项目。
本仓库源码由作者通过逆向并进行二次开发得到,已对逆向出来的阅读性差的变量名、方法名进行语义化处理,并且完善了前后端,可直接使用。
只保留 Mod 相关内容,已经过脱敏处理,可用于二次开发与协作。
1. 项目结构
Duckov_marketmod/
├─ duckmarket_core/ # 主功能模块(UI、网络、Patch、配置)
├─ duckmarket_loader/ # 加载器(版本检查、下载、校验、加载 Core)
├─ mod_assets/
│ ├─ info.ini.example # Mod 基础配置示例
│ └─ version/1.2.7/ # 版本目录(当前基线)
├─ DuckMarket_Config.json.example # 运行配置示例
├─ DuckNewMarket.sln # 解决方案(Core + Loader)
└─ README.md
2. 版本与目录约束
- 当前基线版本为
1.2.7。 - 运行时核心 DLL 应放在:
version/1.2.7/。 info.ini里的以下字段约束:name=DuckNewMarket.Loader必须保持不变。displayName=...可以自定义。
3. 环境要求
3.1 必需软件
- Windows 10/11
- PowerShell 5+
- .NET SDK 8 或更高(建议 10)
- 已安装
Escape from Duckov
3.2 必需依赖文件
编译需要能访问以下 DLL:
- 游戏 Managed 目录(
Duckov_Data\Managed)下的一系列 Unity/游戏 DLL。 0Harmony.dll(通常来自 workshop 模组目录)。
4. 准备本地路径
请先确定以下两个路径(示例仅作参考):
DuckovManagedDir示例:D:\steam\steamapps\common\Escape from Duckov\Duckov_Data\ManagedHarmonyDll示例:D:\steam\steamapps\workshop\content\3167020\3591763519\version\1.2.7\0Harmony.dll
可先用下面命令检查路径是否存在:
Test-Path "D:\steam\steamapps\common\Escape from Duckov\Duckov_Data\Managed"
Test-Path "D:\steam\steamapps\workshop\content\3167020\3591763519\version\1.2.7\0Harmony.dll"
返回 True 才能继续。
5. 配置编译参数(详细)
项目已移除硬编码本机路径,必须通过环境变量或 dotnet build 参数传入。
5.1 推荐方式:环境变量
$env:DUCKOV_MANAGED_DIR = "D:\steam\steamapps\common\Escape from Duckov\Duckov_Data\Managed"
$env:HARMONY_DLL = "D:\steam\steamapps\workshop\content\3167020\3591763519\version\1.2.7\0Harmony.dll"
$env:NEWTONSOFT_JSON_DLL = "$env:DUCKOV_MANAGED_DIR\Newtonsoft.Json.dll"
5.2 备选方式:构建参数
dotnet build .\duckmarket_core\DuckMarket.Core.csproj -c Release `
/p:DuckovManagedDir="D:\...\Duckov_Data\Managed" `
/p:HarmonyDll="D:\...\0Harmony.dll"
dotnet build .\duckmarket_loader\DuckMarket.Loader.csproj -c Release `
/p:DuckovManagedDir="D:\...\Duckov_Data\Managed"
6. 编译步骤(从零开始)
在仓库根目录执行:
dotnet restore .\DuckNewMarket.sln
dotnet build .\duckmarket_core\DuckMarket.Core.csproj -c Release
dotnet build .\duckmarket_loader\DuckMarket.Loader.csproj -c Release
编译成功后关键输出:
duckmarket_core\bin\Release\netstandard2.1\DuckNewMarket.Core.dllduckmarket_loader\bin\Release\netstandard2.1\DuckNewMarket.Loader.dll
7. 组装本地 Mod 目录(详细)
以下用 <GameRoot> 代表你的游戏目录,例如:D:\steam\steamapps\common\Escape from Duckov。
7.1 创建目标目录
$modRoot = "<GameRoot>\Duckov_Data\Mods\DuckovNewMarket"
$coreDir = Join-Path $modRoot "version\1.2.7"
New-Item -ItemType Directory -Force -Path $modRoot | Out-Null
New-Item -ItemType Directory -Force -Path $coreDir | Out-Null
7.2 复制编译产物
Copy-Item .\duckmarket_loader\bin\Release\netstandard2.1\DuckNewMarket.Loader.dll $modRoot -Force
Copy-Item .\duckmarket_core\bin\Release\netstandard2.1\DuckNewMarket.Core.dll $coreDir -Force
7.3 生成 info.ini
Copy-Item .\mod_assets\info.ini.example (Join-Path $modRoot "info.ini") -Force
然后编辑 info.ini,确认:
name必须是DuckNewMarket.LoaderdisplayName可自定义显示名version保持1.2.7
8. 配置运行参数(DuckMarket_Config.json)
将示例文件复制到 Mod 根目录并改为真实地址:
Copy-Item .\DuckMarket_Config.json.example "<GameRoot>\Duckov_Data\Mods\DuckovNewMarket\DuckMarket_Config.json" -Force
关键字段说明:
ApiBaseUrl: HTTP API 根地址(示例:https://api.example.com/api/v1)WsBaseUrl: WebSocket 根地址(示例:wss://api.example.com/api/v1)VersionsBaseUrl: 版本接口地址(示例:https://api.example.com/api/v1/versions)AllowInsecureTlsForLoader: 是否忽略 TLS 证书错误(生产环境建议false)SteamWebApiIdentity: Steam 身份标识(按后端约定)
9. 启动验证(详细)
9.1 启动前检查
- 完全退出游戏后再覆盖 DLL(进程占用会导致复制失败)。
- 确认目标目录已包含:
DuckNewMarket.Loader.dllversion\1.2.7\DuckNewMarket.Core.dllinfo.iniDuckMarket_Config.json
9.2 启动后看日志
日志位置通常为:
C:\Users\<你的用户名>\AppData\LocalLow\TeamSoda\Duckov\Player.log
可用命令快速筛选:
Select-String -Path "$env:USERPROFILE\AppData\LocalLow\TeamSoda\Duckov\Player.log" -Pattern "Duck Market Mod Loader Awake","Version Check","Loading mod dll at path"
若能看到加载与版本检查相关日志,说明链路基本正常。
10. 常见问题与处理
10.1 编译时报找不到 UnityEngine 或 TeamSoda DLL
- 原因:
DUCKOV_MANAGED_DIR未设置或路径错误。 - 处理:重新设置变量并确认
Test-Path为True。
10.2 编译时报找不到 0Harmony.dll
- 原因:
HARMONY_DLL未设置或版本目录不对。 - 处理:确认
HARMONY_DLL指向真实文件。
10.3 游戏不加载新 DLL
- 原因:游戏进程占用旧文件、复制失败或目录层级错误。
- 处理:完全退出游戏后重拷贝;检查 DLL 是否在准确目录。
10.4 能加载但无法连接后端
- 原因:
DuckMarket_Config.json中 API/WS 地址不正确,或证书问题。 - 处理:校验
ApiBaseUrl/WsBaseUrl/VersionsBaseUrl;开发环境临时开启AllowInsecureTlsForLoader=true进行定位(生产请关闭)。
11. 开发迭代建议流程
- 修改
duckmarket_core或duckmarket_loader源码。 - 执行编译命令。
- 复制 DLL 到 Mod 目录。
- 启动游戏并查看
Player.log。 - 确认功能后再提交代码。
12. 安全与脱敏规则
- 禁止提交真实密码、Token、私有证书、SSH 凭据。
- 禁止提交本机绝对路径或个人环境说明。
DuckMarket_Config.json属于本地运行配置,不应包含生产敏感信息。
13. License
本项目使用 MIT License,详见仓库根目录 LICENSE。