游戏卡顿白皮书 › L9 服务器游戏进程
寻路计算激增 Pathfinding storms
原因 ID sp-pathfinding · 主责 研发团队·服务器开发
在含图示和实验的完整版中打开此卡片 →
几百只怪物同时追着玩家计算路径时,会占用大量 CPU。
起因 拉怪、大规模刷新使大量怪物同时追击 → 结果 每只怪物都要做寻路计算 → 画面表现 只有那片刷怪区出现慢动作
- 症状
- 慢动作
- 因素
- 停顿
- 谁会遇到
- 特定地点/分线
- 何时出现
- 人多的时候
- 负责方
- 主责 研发团队·服务器开发
- 研发团队要做的事
- 路径缓存;计算次数上限;分到多个 tick。
- 监控图上
- 随人数/负载上升 · 服务器 tick 耗时、各场景怪物数量
- 查看位置
- 各场景正在追击玩家的怪物数量和 tick 耗时。没有单独统计时,用 perf top -p 看游戏进程中各函数的 CPU 占比
- 确认依据
- 拉怪、大规模刷新时 tick 耗时增加,寻路(路径搜索)函数占了 CPU 时间的很大比重
- 排除依据
- 怪物少、只有玩家多时 tick 增加,看视野计算或广播
- 确认手段
- 需要游戏服务器/客户端的日志和指标
出处
- AI.NavMesh.pathfindingIterationsPerFrame Unity
寻路每帧只处理固定数量的节点,分摊到多帧;路径很长或请求一下子很多时,游戏也能保持流畅 - perf-top(1) — Linux manual page perf
按函数(符号)实时显示运行中进程(-p)的 CPU 使用占比
相关原因
同一层:L9 服务器游戏进程
其他层中同样导致“慢动作”的原因
查看含图示和实验的原卡片