性能预算:把帧率变成配额

"我们游戏要 60 帧"是目标,预算是把这个目标拆到每个系统头上的数字。

预算的作用

  • 提前发现不可能:如果各系统预算加起来超过 16.6ms,设计上就不可能达标,越早发现越好;
  • 减少扯皮:"你这个特效占了 3ms,超了预算两倍"比"游戏有点卡"有说服力;
  • 团队自治:每个系统负责人有自己的额度,不需要每次都全团队排查。

预算的例子(60Hz 目标,总预算 16.6ms)

系统 预算 备注
游戏线程(Game) 5.0ms 逻辑 / Tick
渲染线程(Render / CPU) 4.0ms 提交 DrawCall
GPU 7.0ms 着色与显存
富余 0.6ms 抖动余量

各系统再往下拆:战斗逻辑 1.5ms、AI 1.5ms、UI 0.5ms、特效 1.0ms……预算是从目标倒推的,不是从现状顺推的。

预算与分级的配合

不同平台 / 不同画质档位的预算不同:

档位 帧率目标 视觉预算
PC 高 60 全效果
PC 中 60 阴影精度 ↓
主机 稳定 30/60 按平台定制
移动高 30 特效大幅简化
移动低 30 关闭后处理级特性

引擎侧也有预算管理机制,如 使用效果类型管理性能预算 可以给特效系统设置预算上限。项目级的预算表是这种机制的应用面。