第 45 章 · 上线后的迭代
这一章解决:合作防守世界上线之后,如何根据日志和真实使用持续修复、平衡、迁移版本,并判断什么时候该拆新世界。
先看一下
第 44 章给了上线前停手线。上线后,玩家会把世界当成社交房、练习场、刷分房、截图场,也会在对象池边界、重开流程和迟入路径上做出测试时没覆盖到的行为。迭代的目标是让世界继续可维护,而不是把第一版扩到无边界。
这一章会拿到什么
- 上线后一周的观察清单
- Bug、平衡性、内容需求、运营需求的分流规则
- 版本迁移与旧实例兼容的处理方式
- 与 Vol.5 持久化系统的边界
- 拆新世界的判断标准
依赖前面
- 第 44 章的问题优先级和日志格式
- 创作者视角 8 的真实使用视角
- 第 27 章的复杂计分边界
- 第 28 章的重入策略
- 第 39 章的 Quest 与性能预算
上线后一周看四类信号
Section titled “上线后一周看四类信号”上线后先观察四类信号。它们对应四种处理,不要混在一个「待优化」列表里。
| 信号 | 例子 | 处理入口 |
|---|---|---|
| Bug | 重开后敌人不生成、分数重复加、迟入看到错误阶段 | 回第 44 章问题优先级 |
| 平衡性 | 第 1 波太慢、第 3 波突然过难、4 人房比 2 人房简单太多 | 调参数和波次配置 |
| 偏差使用 | 玩家不开局只聊天、把敌人引到出生点、结算屏停留截图 | 判断是否纳入设计 |
| 长期需求 | 排行榜、累计等级、每日奖励、跨实例活动 | 接 Vol.5,不在本卷展开 |
这四类信号的修法不同。Bug 要复现和修;平衡性要用数据和反馈调;偏差使用要判断是否好玩;长期需求要先定义持久化边界。
Bug 仍然按 P0 到 P3 处理
Section titled “Bug 仍然按 P0 到 P3 处理”第 44 章的优先级上线后继续使用。
| 优先级 | 上线后动作 |
|---|---|
| P0 阻断 | 尽快修复并重新上传;必要时临时隐藏入口或提示玩家避开 |
| P1 严重 | 排进最近一版;如果与新功能有关,先禁用新功能 |
| P2 普通 | 累积到小版本一起处理 |
| P3 观察 | 收集更多日志和复现路径 |
上线后处理 Bug 的关键是保留复现路径。每条 P0 / P1 至少记录:世界版本、实例人数、平台、matchId、阶段、Owner、相关日志、玩家操作顺序。
如果一条问题三次修复仍然复现,按设计缺陷处理。不要继续在同一段代码上补丁叠补丁。回到 ADR,看状态归属、Owner、迟入恢复和降级入口是否写错了。
平衡性优先调参数,不先改架构
Section titled “平衡性优先调参数,不先改架构”合作防守世界最常见的平衡项是波次时间、敌人 HP、敌人数量、得分、冷却、对象池容量。
| 参数 | 先看什么 | 常见调整 |
|---|---|---|
| 波次时间 | 多数队伍是否能在剩余 20% 时间内清完 | 缩短或延长每波持续时间 |
| 敌人 HP | 单人是否打不动,4 人是否秒清 | 按人数缩放 HP 或数量 |
| 敌人数量 | 对象池是否经常耗尽 | 降低同屏数量,增加波内批次 |
| 得分 | 玩家是否知道自己贡献 | 调整个人分和队伍分展示 |
| 冷却 | 攻击是否卡手或刷分过快 | 调 pending 和确认冷却 |
平衡性优先放进配置,不改请求式架构。敌人多一只、HP 多一点、波次短一点,都不应该牵动 PlayerObject、GameState 和 EnemyObject 的状态归属。
偏差使用:能变玩法就收编,破坏状态就挡住
Section titled “偏差使用:能变玩法就收编,破坏状态就挡住”玩家会用设计之外的方式玩世界。处理方式分两类。
| 偏差使用 | 判断 | 处理 |
|---|---|---|
| 在大厅聊天不开局 | 不破坏状态,可能是有价值的社交行为 | 保留,改善大厅 UI 和等待体验 |
| 在结算屏停留截图 | 不破坏状态 | 保留,给结果面板更清晰的展示 |
| 把敌人卡在出生点 | 破坏战斗流程 | 调碰撞、出生点、重置规则 |
| 反复进出触发迟入路径 | 可能破坏状态 | 用第 28 章重入策略和日志定位 |
| 利用对象池耗尽刷分 | 破坏共识状态 | P1,修裁决和幂等 |
设计之外不等于错误。判断标准是:它是否破坏 GameState 共识状态,是否让其他玩家无法继续一局,是否造成无法恢复的性能或网络压力。
版本迁移:新版本要能识别旧状态
Section titled “版本迁移:新版本要能识别旧状态”VRChat 世界上传新版本后,旧实例和新实例的过渡要谨慎。同步字段结构一旦改变,旧版本玩家和新版本逻辑之间可能出现不一致。
推荐在 GameState 上保留一个同步字段:
[UdonSynced] private int rulesVersion = 1;它不等于世界上传版本号。它只表示当前运行规则的状态格式。加字段通常不需要改;改字段语义、改结算规则、改 matchId 或敌人状态结构时,递增 rulesVersion。
private bool IsCompatibleRulesVersion(){ return rulesVersion == CURRENT_RULES_VERSION;}发现不兼容时,最稳的做法是让当前局安全结束或回到 Lobby,不在半局里尝试迁移全部字段。
旧世界兼容:能读旧字段,别让旧字段继续写
Section titled “旧世界兼容:能读旧字段,别让旧字段继续写”第一版上线后,玩家可能还在旧实例里。新的脚本字段默认值必须安全。
| 改动 | 安全写法 |
|---|---|
| 新增同步字段 | 给默认值,让旧局迟入时不会误判 |
| 新增枚举状态 | 未识别值回到 LOBBY 或 RESULT 安全态 |
| 改结算规则 | 用 rulesVersion 分支处理旧规则 |
| 删除字段语义 | 保留一版只读兼容,不让旧字段继续影响分数 |
字段删除最危险。教程项目里更推荐「废弃但保留」:字段还在,但新逻辑不再写它,只在迁移期读取或清理。等下一轮大版本再删。
长期系统接到 Vol.5
Section titled “长期系统接到 Vol.5”排行榜、累计等级、每日奖励、跨实例活动都属于长期系统。本卷只留边界。
| 需求 | 本卷负责 | Vol.5 负责 |
|---|---|---|
| 本局个人分 | PlayerObject personalScore | 结算后写入长期分 |
| 本局 MVP | GameState.resultMvpPlayerId | 计入成就或徽章 |
| 本局完成次数 | OnMatchEndedHook 接口 | PlayerData / Persistence 存储 |
| 全局排行榜 | 不实现 | 远程内容或持久化体系 |
| 跨实例活动 | 不实现 | 运营和长期数据系统 |
OnMatchEndedHook 是边界。它在本局结算结束时抛出结果,长期系统自己决定保存什么。本卷不让持久化反过来影响一局内的实时状态。
什么时候拆新世界
Section titled “什么时候拆新世界”有些需求适合迭代,有些需求适合拆新世界。
| 继续迭代 | 拆新世界 |
|---|---|
| 调波次、HP、得分、UI 文案 | 从合作 PvE 改成强竞技 PvP |
| 加少量敌人类型 | 把地图结构改成完全不同玩法 |
| 加结算展示和战报 | 引入长期经济和跨实例活动作为核心 |
| 优化 Quest 性能 | 需要完全不同的 Owner 拓扑 |
| 改大厅等待体验 | 现有 ADR 大部分失效 |
判断方法很直接:如果第 40 章 ADR 里的大部分状态归属还能保留,就继续迭代;如果 PlayerObject / GameState / EnemyObject 的边界都要重写,拆新世界更干净。
挑一条试。
- 选一个 P2 体验问题,例如普通命中特效偶尔丢。把它写成两种方案:修到 100% 送达,或承认为可降级表现。哪一种更符合第 43 章的体感边界?
- 给
rulesVersion设计一次迁移:旧版本没有resultMvpPlayerId,新版本有。RESULT 阶段迟入时应该显示什么?
| 场景 | 预期 | 实际 |
|---|---|---|
| 1. P0 修复后回归 | 原复现路径不再出现,项目级测试清单第 1–3 行通过 | … |
| 2. 调整敌人 HP | 状态归属不变,只改配置,迟入和结算仍正确 | … |
3. rulesVersion 不兼容 | 当前局安全回 Lobby 或保持 RESULT,不出现半局错误状态 | … |
| 4. 旧字段保留只读 | 新逻辑不再写旧字段,旧字段残留不影响分数 | … |
5. OnMatchEndedHook 调用 | 长期系统只读结算结果,不反写本局实时状态 | … |
| 6. 判断拆新世界 | 新需求对第 40 章 ADR 的影响被列清楚 | … |
- 能把上线后反馈分成 Bug、平衡性、偏差使用、长期需求四类
- 能说明为什么平衡性优先调参数
- 能给版本迁移加
rulesVersion边界 - 能说出 Vol.2 和 Vol.5 的接口分界
- 能判断一个需求适合迭代还是拆新世界
- 第 44 章 · 内测与日志:上线后问题优先级和日志字段来源。
- 创作者视角 8 · 上线之后玩家会按设计之外的方式玩:真实使用带来的设计变化。
- 第 27 章 · 计分、奖励与结算进阶:复杂分数链和长期奖励边界。
- 第 28 章 · 观战、旁观、掉线后重入进阶:重入和阶段间策略。
- 第 40 章 · 从玩法反推架构决策记录:判断是否拆新世界的 ADR 基线。