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

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

怪物控制权在慢的客户端上 Monster movement delegated to a player client

原因 ID pt-mob-control · 主责 研发团队·服务器开发

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

有的游戏为减轻服务器负载,把怪物的移动计算交给附近某个玩家的客户端。这个人的线路差时,这只怪物在所有人的画面上都会动得很怪。

起因 服务器把怪物的移动计算交给最近(或最先到)的玩家的客户端 → 结果 负责的人上报结果晚到或扎堆到达服务器 → 画面表现 只有这只怪物在周围所有人的画面上顿一下然后瞬移。负责的人自己的画面上正常

症状
瞬移, 一卡一卡, 快进
因素
抖动, 丢包
谁会遇到
只有某个角色看起来异常, 特定地点/分线
何时出现
一直, 偶尔随机
负责方
主责 研发团队·服务器开发
研发团队要做的事
把控制权交给线路好的人(按 ping、丢包),上报中断时服务器立即收回,BOSS 这类重要怪物由服务器直接计算。
监控图上
仅部分偏高 · 各怪物的位置上报间隔(按持有控制权的客户端)
查看位置
在服务器上为每只怪物记录持有控制权的客户端,以及该客户端的上报间隔、RTT、丢包。也可以在服务器侧抓包,看该客户端所发包的到达间隔
确认依据
动得怪的怪物控制权都在同一个人手里,此人上报间隔忽长忽短或中断,把控制权交给别人后立即恢复正常
排除依据
服务器直接计算的怪物也同样跳,是服务器 tick 延迟或观看者一侧的线路问题。换了控制权仍然跳,看“指令同步的路径计算不一致”
确认手段
需要游戏服务器/客户端的日志和指标
深入了解
负责的人自己觉得一切正常,所以反馈只会是“怪物不对劲”。除了一个人以外所有人都看到同一只怪物动得怪,就先确认这只怪物的控制权在谁手里。

出处

  1. Authority (Netcode for GameObjects 2.5) Unity
    分布式权威模型中,每个游戏实例(客户端)负责一部分网络实体的权威,并计算这些实体
  2. Distributed authority topologies (Netcode for GameObjects 2.5) Unity
    权威分散到客户端时,就没有单一模拟,也容易被作弊

相关原因

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

其他层中同样导致“瞬移”的原因

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