性能预算:把帧率变成配额
"我们游戏要 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 | 关闭后处理级特性 |
引擎侧也有预算管理机制,如 使用效果类型管理性能预算 可以给特效系统设置预算上限。项目级的预算表是这种机制的应用面。
