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

游戏卡顿白皮书 › 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 无关、只要聚在一处就同样变慢,看视野计算或广播激增
确认手段
需要游戏服务器/客户端的日志和指标

出处

  1. HED-GP Technical Retrospective: What a HED-ache CCP Games
    一次攻击也要通知所有能看到的客户端,形成 n 个人通知 n 个人的 O(n²) 负担;消息多的无人机攻击会让这个负担增长更快

相关原因

同一层:L9 服务器游戏进程

其他层中同样导致“操作延迟”的原因

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