《卫戍协议:狩猎模拟》V0.0.2 发布——追上游 0.3.1、插件工坊,以及一个自动同步代码的更新器
本作是《卫戍协议:盟约》的非官方同人复刻,基于上游
v0.3.1的 2V2 衍生版。 版本V0.0.2(0.3.1)今天发布。 这是这个系列的第七篇。上一篇讲的是「狩猎」这套玩法怎么成型;这一篇讲我们怎么把整座地基换成了上游 0.3.1,同时没把狩猎玩法弄丢。
一、这次不是加功能,是「追上游」
- 2.6 到 0.3.1 不是一个小版本:
- 上游把整个插件体系做出来了(manifest、注册表、内容集、工作台、沙箱);
- 加了 Forge 工坊包导入——把别人家格式的工坊包翻译成官方插件;
server/sim有 132 个文件的特效、音频、时序与 bug 修复;- 还有皮肤、规则开关、公告、游戏记录、互动窗口、测试房……
而我们这边是把「合作」拆成两支小队、加了一整套狩猎经济与事件期。两边都动过同一批文件,所以这次真正的活是三方合并:
144 个双方都改的文件 → 73 个自动合并 → 71 个冲突
最后逐个人工解决,再跑全量测试与 golden
合并的原则只有一条:上游的新东西全收,狩猎的东西一个不丢。
二、上游 0.3.1 带来了什么
简单列一下你实际能感知到的:
- 插件体系:服务器可以在
plugins/放插件,房间/玩家按需启用; - Forge 工坊包导入:工作室里可以直接选一个 Forge 包,生成报告、预览、确认写入;
- 特效资源:需使用者以合法自持文件本地配置,仓库与本站均不提供(2D/3D 都能用);
- 皮肤:干员外观、逐座位选择;
- 测试房:房主可以开一局不影响统计的测试对局;
- 大量手感修复:攻击/受击音效、命中间隔、场景光照、某些干员的技能时序。
这些不是我们写的,是上游的功劳;我们做的是把它们完整地接进这个 2V2 分支。
三、插件:我们只做「本地端」
上游的插件分六类:语言、外观、内容、界面、脚本、受信任代码。
这个分支的取舍很明确:
| 类型 | 是否启用 | 说明 |
|---|---|---|
cosmetic |
✅ | 立绘、模型、语音、皮肤、音频 |
ui |
✅ | 本地界面小组件(iframe 沙箱,只读) |
content |
❌ | 改数值/干员/敌人/模式——服务端暂不支持 |
script |
❌ | Forge 的 kits/*.js,能导入、能出报告,但不会执行 |
trusted |
❌ | 原生代码,本分支永久禁用 |
原因不复杂:外观插件最坏是难看,内容插件最坏是平衡崩,脚本插件最坏是服务器被拿走。 这个分支先把前两类做好,后面的等有精力再说。
所以:Forge 包可以导进来,但带 kits/ 或 numbers/ 的包不会改变玩法,只有换皮、换语音、挂面板会真正生效。
四、狩猎玩法的一个平衡改动:远程怪 ×1.5
- 3.1 的合并没有动狩猎规则,但我们顺手修了一个价值表的问题:
远程怪能越过阻挡输出,但之前和近战怪按同一套属性分计价。
现在 applyWay = RANGED 的怪物,整只价值 ×1.5。它同时影响:
- 你投放过一只远程怪要占多少预算;
- 它被击杀时折算的赏金;
- 本回合波次的总价值(因为用的是同一张价值表)。
特性分仍然恰好占整张价值表的 30%——标定用的是同一套公式,所以这个比例没被破坏。
一句话:远程怪更贵了,但贵得透明。
五、设置里的代码同步(这次最实用的东西)
以前更新要:停服 → 覆盖文件 → 启动。这一版把它做进了设置:
设置 → 游戏更新 → 检查更新 → 同步代码
它只做两件事:
- 读取项目仓库的发布说明与版本信息;
- 按
MANIFEST.json的 sha256 对比,只同步发生变化的代码文件。
好处是精准:
- 只写真正变化的文件;
- 未变化的本地文件(包括你自己的本地补丁)原样保留;
- 旧清单里有、新清单里没有的文件会被删除;
- 覆盖前备份到
.update-backup/<时间戳>/; plugins/、账号数据、本地资源、缓存永不触碰;- 只对本机回环开放,公网访问一律 404。
小提示:程序请求项目仓库 API 可能被限流(403)。给一个只读 token 就能解决;不给也能用,只是会提示限流。
六、盟约那边也一起升级了
这个分支的「上游」是盟约。既然 0.3.1 已经稳定,盟约的本地实例也做了一次同样的升级:
- 上游 0.3.1 全覆盖;
- 盟约自己的本地账号/本地存档、聊天、好友、头像、协议、连接诊断、资源包、本地房间列表全部保留;
- 插件目录同样只开
cosmetic/ui; - 升级前先在测试实例内发了一次通知,60 秒后切版本重启,旧版本与备份都留着,随时可回滚。
顺手修了一个缓存问题:之前网关给页面注入了 <base> 指向缓存节点,但 CSP 里 base-uri 'none' 让浏览器直接忽略了它——静态资源看起来走了缓存,其实全都回源了。现在 CSP 允许缓存节点,实测 224 个请求里 223 个走缓存,只有 HTML 本身还在源站。
七、怎么更新
- 已经装了 V0.0.1:设置 → 游戏更新 → 检查更新(差分,只下变化的部分);
- 手动 / 全新安装:更新方式见项目仓库的发布说明;本站不提供完整包/精简包下载。
版本号:V0.0.2(0.3.1)。
项目仓库:https://github.com/T1113047/Stronghold-Protocol-Hunt-Simulation
八、测试与已知
- 全量测试(Linux):8,789 条,8,730 通过;
- 剩下 2 条是环境差异(本机缺少对应资源文件、WSL CPU 抖动),不是代码回归;
- golden 全量重算并复验(21 + 10 + 140 个场景);
- 四语言文案 2,389 条 ×4,100% 覆盖;
- 合并后修掉的真实问题包括:插件意图识别(
g.event.pick多点)、队伍生命池单参调用、资源预取静态加载、回合开始板时长、发布包命名兼容。
九、下一篇写什么
两个方向:
- 把狩猎词条/投放表做成真正的 content 插件——让第三方也能写「狩猎扩展包」;
- 更新器再往前走一步:自动检查、自动回滚、失败重试。
如果玩的时候遇到问题,或者想给这个分支加什么,可以走仓库 Issue。这个项目是靠一局一局打出来的。
非官方、非商业同人作品,不含官方授权;素材版权归原权利人所有。文中所述联机、匹配、广播与存档均指本机或局域网内的测试环境,不涉及对外运营的服务器。
