跳转到内容

第二部 · 玩家对象与权威拓扑

这是第二部。读这一部之前建议先做完闭环 1,亲眼看到 Master 离开整局丢失、Ready 状态互相覆盖这两个问题。

第一部把通道讲清楚后,下一个问题是:谁能改这些状态。VRChat 没有权威服务器,权威拓扑要在写代码之前就设计好。代码里到处出现 SetOwner() 通常意味着权威拓扑还没想清楚。

  • 玩家进入房间后,系统要给他什么:身份、准备、队伍、输入通道、个人 UI
  • VRCPlayerObject:每位玩家固定拥有自己的对象。它适合什么、不适合什么
  • CyanPlayerObjectPool:作为历史方案与兼容案例理解
  • 全局状态管理器(GameState)的三种 Owner 策略:固定 Owner、Owner 候选队列、Owner 重选
  • 请求式架构:玩家对象请求,状态管理器裁决(本部给出固定代码模板,后续章节复用)
  • 权限与冲突:抢按钮、抢拾取、同时加入队伍
  • Owner 离开后,玩家对象、全局状态、物理对象的不同恢复路径
  • 第一部第 3 章:Owner 是「这份状态托管在谁那里」。IsMaster 是旧逻辑,新系统不再当作默认权威。
  • 第一部第 5 章:事件不会重放,迟入玩家只能拿到当前同步状态。
  • 第一部理解章 A:同步不是广播,是状态复制。每份状态都有一个明确的托管者。
  • 闭环 1 留下的两个缺陷:Master 离开整局丢失;每位玩家的 Ready 状态共用一份字段,会互相覆盖。

每位玩家有自己的轨迹:分权的理由不是省带宽,是承认每位玩家本身就承载着独立的一组状态。

  1. 第 8 章 · 玩家进入房间后,系统要给他什么(占位)
  2. 第 9 章 · VRCPlayerObject:每个玩家一份对象(占位,含 PlayerObject 适合 / 不适合什么的清单)
  3. 第 10 章 · CyanPlayerObjectPool:历史方案与兼容案例(占位)
  4. 第 11 章 · 全局状态管理器(占位,含「什么世界不需要 GameState」反向案例)
  5. 第 12 章 · 请求式架构:固定模板(占位,给 PlayerObject + GameState 的代码骨架)
  6. 第 13 章 · 权限与冲突(占位)
  7. 第 14 章 · Owner 离开后的恢复(占位,含「Owner 失效恢复检查表」)
  • 🧠 理解章 B · 权威拓扑先于代码(占位)
  • 闭环 2 · PlayerObject + GameState 的中级一局(占位)
    修复闭环 1 的两个缺陷,故意留下三个新缺陷待第四部修:重复点击会重复加分;网络抖动后状态版本会乱;迟入玩家可能看到串味状态。
  • 📚 对照小练 B · 用 PlayerObject 做两人回合制猜数字(占位)

章节正在筹备。