游戏卡顿白皮书 › 只有部分人遇到的问题
分线/副本/位面不同 Different channel / instance / phase
原因 ID pt-phase · 主责 研发团队·服务器开发 · 配合 研发团队·客户端开发
在含图示和实验的完整版中打开此卡片 →
两个角色在不同的分线或副本里,或者处在按任务进度显示不同 NPC 的不同“位面”时,看到的就是不同的世界。
起因 第二个角色被分到了别的分线,或任务阶段不同 → 结果 服务器不给这个角色发送该 NPC(正常) → 画面表现 只有一边没有 NPC。看起来像 bug,其实是按设计运行
- 症状
- 隐身/幽灵实体
- 因素
- 丢包
- 谁会遇到
- 双开时只有一个客户端, 只有我
- 何时出现
- 一直, 刚登录/维护结束后
- 负责方
- 主责 研发团队·服务器开发 · 配合 研发团队·客户端开发
- 研发团队要做的事
- 服务器:把分线、位面信息发给客户端,在 QA 检查清单中加入“确认两个角色的分线和任务阶段”。客户端:在界面上显示分线和位面。
- 监控图上
- 仅部分偏高 · 各客户端周围的实体数,分线/位面
- 查看位置
- 在游戏画面上对比两个角色的分线编号和相关任务的进度阶段,调成同一分线、同一阶段后再看。有服务器实体发送日志时,确认没有把该 NPC 发给这个角色的原因(分线、位面)
- 确认依据
- 两个角色的分线或任务阶段不同,调成相同后 NPC 就能看到
- 排除依据
- 分线、阶段都相同,却仍然只有一边没有,看“加载中到达的出现通知被丢弃”“刚进入时集中到达的出现信息丢失”“视野注册顺序错乱”
- 确认手段
- 需在玩家侧环境确认
- 深入了解
- 也要确认任务进度是按账号保存还是按角色保存。如果是同一账号的两个角色,一方的进度可能改变另一方的位面。
出处
- Actor Relevancy in Unreal Engine Epic Games
服务器按连接只复制相关(relevant)的 Actor,不相关的 Actor 不发送 - Object visibility (Netcode for GameObjects 2.5) Unity
用 CheckObjectVisibility 按客户端决定可见的实体,隐藏的实体不发送给该客户端
相关原因
同一层:只有部分人遇到的问题
其他层中同样导致“隐身/幽灵实体”的原因
查看含图示和实验的原卡片