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

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

按连接分配的发送预算/优先级 Per-connection bandwidth budget and priority

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

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

服务器给每个连接的发送量设上限、按由近及远的顺序发送时,上限定得低的一方收到远处 NPC 会很晚,甚至收不到。

起因 人多的地方,服务器在每个连接的发送量上限内按重要程度依次发送 → 结果 带宽估算偏低的连接(例如因为是后台窗口而确认回得晚的一方),排在后面的实体会被一直往后推 → 画面表现 远处的 NPC 只在一边显示得晚或看不到

症状
隐身/幽灵实体, 操作延迟
因素
延迟
谁会遇到
双开时只有一个客户端, 特定地点/分线
何时出现
人多的时候
负责方
主责 研发团队·服务器开发 · 配合 研发团队·客户端开发
研发团队要做的事
服务器:被推迟的实体随时间推移提高优先级(防止饿死,starvation),保证最低更新频率。客户端:在后台也要按时发送确认,避免带宽估算被压低。
监控图上
随人数/负载上升 · 各连接被推迟的实体数,各连接的发送量
查看位置
在服务器上为每个连接记录每个 tick 的发送字节数、发送上限(估算带宽)、没能发出而推迟的实体数,以及各实体距上次发送经过的时间。Unreal 可以在 Networking Insights 中查看各连接的包大小及其中包含的复制实体
确认依据
看不到的 NPC 是这个连接上被推迟了很久的实体,该连接的上限比其他连接低,人越多被推迟的实体越多
排除依据
没有被推迟的实体,那只 NPC 也按时发出了,看发送之后的环节(接收缓冲区、加载、显示选项)。所有连接都顶在上限上,是全服发送量或视野设计的问题
确认手段
需要游戏服务器/客户端的日志和指标

出处

  1. Actor Priority in Unreal Engine Epic Games
    带宽饱和时,按优先级(距离、视线、距上次复制经过的时间)挑选要复制的 Actor。不会每次都复制所有 Actor
  2. State Synchronization Gaffer On Games
    优先级累积:这次没装进包的实体下次优先装入,带宽上限实时调整
  3. Networking Insights in Unreal Engine Epic Games
    显示各连接收发包的大小,以及其中包含的复制实体和属性

相关原因

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

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

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