游戏卡顿白皮书 › L9 服务器游戏进程
战斗集中在单一目标(世界 BOSS) Hot entity / combat event fan-out
原因 ID sp-hot-entity · 主责 研发团队·服务器开发
在含图示和实验的完整版中打开此卡片 →
几百人同时打一个 BOSS 时,这一只 BOSS 的计算全压在一处,命中信息还要发给所有看得到的人。
起因 几百人不停地对一个 BOSS 施放技能、buff、debuff → 结果 BOSS 的血量、仇恨列表、debuff 计算全压在一处,每次命中都要把伤害数字、特效包发给所有看得到的人 → 画面表现 技能延迟生效,伤害数字成批跳出,只有 BOSS 周围是慢动作
- 症状
- 操作延迟, 快进, 慢动作
- 因素
- 停顿, 延迟
- 谁会遇到
- 特定地点/分线
- 何时出现
- 人多的时候
- 负责方
- 主责 研发团队·服务器开发
- 研发团队要做的事
- 他人的伤害数字、特效合并或省略;限制单个目标身上的 debuff 数量;把命中处理分到多个 tick。
- 数值参考
- 800 人每人每秒打 2 次,就是每秒 1,600 次命中。要通知看着的 800 人,就是每秒 128 万条消息。
- 监控图上
- 随人数/负载上升 · 服务器 tick 耗时、发送消息数
- 查看位置
- 把 BOSS 战期间的 tick 耗时、发送包数与 BOSS 周围人数一起看,条件允许的话再看每个目标每秒的事件(命中、buff、debuff)数
- 确认依据
- BOSS 周围人数增加时 tick 耗时和发送量陡增,这一只 BOSS 每秒的事件数比其他目标多几十倍
- 排除依据
- 与 BOSS 无关、只要聚在一处就同样变慢,看视野计算或广播激增
- 确认手段
- 需要游戏服务器/客户端的日志和指标
出处
- HED-GP Technical Retrospective: What a HED-ache CCP Games
一次攻击也要通知所有能看到的客户端,形成 n 个人通知 n 个人的 O(n²) 负担;消息多的无人机攻击会让这个负担增长更快
相关原因
同一层:L9 服务器游戏进程
其他层中同样导致“操作延迟”的原因
查看含图示和实验的原卡片