한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

游戏卡顿白皮书 › 只有部分人遇到的问题

加载中到达的出现通知被丢弃 Spawn messages dropped before the client is ready

原因 ID pt-loading-drop · 主责 研发团队·客户端开发 · 配合 研发团队·服务器开发

在含图示和实验的完整版中打开此卡片 →

刚进入场景,服务器就发来周围 NPC 的出现通知,而客户端还在加载地图,就把这些通知丢掉了。

起因 服务器在完成进入处理后立即发送周围实体的出现通知 → 结果 客户端正在加载,消息处理函数还没注册,于是丢弃通知 → 画面表现 服务器认为已经发过了,不会再发。在离开视野再回来之前,NPC 一直看不到

症状
隐身/幽灵实体
因素
丢包
谁会遇到
双开时只有一个客户端, 只有我
何时出现
刚登录/维护结束后, 移动中/切换地图时
负责方
主责 研发团队·客户端开发 · 配合 研发团队·服务器开发
研发团队要做的事
客户端:加载完成后发送“准备就绪”,或者把加载中收到的包先存起来再处理。服务器:收到“准备就绪”后再发送周围信息。
数值参考
同一台电脑上两个客户端同时加载,或者正在加载的一方是后台窗口时,CPU 和磁盘被分摊,处理也受限,这一方的加载可能慢上好几倍。服务器的进入处理变快后,同样的 bug 也会暴露出来。
监控图上
仅部分偏高 · 各客户端加载时间,加载中丢弃的消息数
查看位置
把客户端在加载中收到并丢弃的消息数量、类型以及加载完成时刻,与服务器发送出现通知的时刻对比。在同一台电脑上同时加载两个客户端,或把正在加载的一方放到后台窗口,容易复现
确认依据
看不到的 NPC,服务器发过出现通知,到达时刻在加载完成之前,那段时间丢弃的消息数增加。只发生在加载较慢的那个客户端上
排除依据
出现通知在加载完成后才到达却仍看不到,看“基准快照丢失”或“实体 ID 重用混淆”。服务器根本没发送这个 NPC 的通知,看“视野注册顺序错乱”或“分线/副本/位面不同”
确认手段
需要游戏服务器/客户端的日志和指标

出处

  1. NetworkConfig class (Netcode for GameObjects 2.5) Unity
    SpawnTimeout:尚未生成的实体的消息先暂存,在时限内仍未生成就丢弃
  2. Actor Relevancy in Unreal Engine Epic Games
    失去相关性的 Actor 会在客户端被删除,重新变得相关时再重新复制

相关原因

同一层:只有部分人遇到的问题

其他层中同样导致“隐身/幽灵实体”的原因

查看含图示和实验的原卡片