游戏卡顿白皮书 › 只有部分人遇到的问题
离开通知丢失(幽灵实体) Missed despawn (ghost entity)
原因 ID pt-ghost · 主责 研发团队·服务器开发 · 配合 研发团队·客户端开发
在含图示和实验的完整版中打开此卡片 →
反过来,漏掉“已消失”的通知时,已经死亡或离开的 NPC、玩家只会留在自己的画面上。
起因 死亡、离开、离开视野的通知丢失或顺序错乱 → 结果 客户端认为这个实体还在 → 画面表现 怎么打都没反应的怪物,早已离开的玩家还站在那里
- 症状
- 隐身/幽灵实体
- 因素
- 丢包
- 谁会遇到
- 双开时只有一个客户端, 只有我
- 何时出现
- 偶尔随机, 人多的时候
- 负责方
- 主责 研发团队·服务器开发 · 配合 研发团队·客户端开发
- 研发团队要做的事
- 服务器:定期发送“当前可见列表”。客户端:删除列表里没有的实体,本该移动的实体长时间没有更新时将其隐藏。
- 监控图上
- 偶发随机尖峰 · 只存在于客户端的实体数
- 查看位置
- 对比服务器发送的“当前可见列表”与客户端持有的实体列表,统计只存在于客户端的实体,并按实体 ID 对照离开通知的发送、接收日志
- 确认依据
- 幽灵实体的离开通知服务器发过,客户端却没有接收记录;或离开通知比出现通知先到,顺序颠倒
- 排除依据
- 服务器的可见列表里也还留着这个实体,是服务器侧漏了清理实体。刚有新实体以同一 ID 出现,看“实体 ID 重用混淆”
- 确认手段
- 需要游戏服务器/客户端的日志和指标
出处
- Actor Relevancy in Unreal Engine Epic Games
失去相关性的动态 Actor 会在客户端被删除 - Object visibility (Netcode for GameObjects 2.5) Unity
隐藏实体后,该客户端会 despawn、删除这个实体
相关原因
同一层:只有部分人遇到的问题
其他层中同样导致“隐身/幽灵实体”的原因
查看含图示和实验的原卡片