简而言之: "最后再优化"正是项目在认证阶段夭折的方式。一份性能预算——在内容构建之前就商定的帧时间与内存上限 ——把优化从一场危机变成一次例行检查。预算毫秒而非多边形,把一帧像切派一样分,在三台固定相机处测量,让数字出现在 工作发生之处,当场景变红时按性价比顺序拉杠杆。本文给出整套系统,附上你可以调整的起步数字。
远景永远是那张账单:最大绘制距离、所有系统同时在屏、每一圈 LOD 都在活动。为这个视角做预算——走廊自会照顾自己。
## 预算帧时间,而非多边形
多边形预算是遗物——现代 GPU 早在生三角形之前就被 draw call、过绘制、阴影与内存带宽噎住。预算你真正 测量的东西:逐系统、逐视角的毫秒。
一款 60 fps 的游戏每帧拥有 16.6 毫秒;30 fps 时是 33.3 毫秒。那就是全部预算,被一切分享:玩法、物理、AI、 VFX、UI 与环境。环境的那一片是与渲染和玩法的谈判——但它必须是一个数字,商定并写下,否则任何关于某场景是否 "太贵"的讨论都塌进品味与资历。在帧时间之外,给约束它的那些量设上限:
- 逐视角的 draw call(远在 GPU 触顶之前就绑住 CPU),
- 逐流送区的 纹理与网格内存(决定你是流送还是卡顿的那个数字),
- 视角内投射阴影的灯光,
- 过绘制热点——植被与 VFX 是常见嫌疑犯。
确切的上限取决于平台与引擎;拥有上限这份纪律才是可迁移到你此后每一个项目的东西。一个你可能算错的数字,胜过一份 你只能争辩的感觉。
## 把一帧像切派一样分,用毫秒
给每个部门一片——玩法、VFX、UI、环境——再把环境这一片切开:地形、植被、道具、水。"这片森林太贵吗?" 就成了一个客观问题。
一款 60 fps 作品可行的起步切分,按项目再谈判:环境总计 6–8 毫秒,其中地形约 1.5、植被约 2–2.5、道具与结构 约 1.5、水与大气约 1。重点不在这些确切数字——而在于当森林测得 4 毫秒对上 2.5 毫秒的切片时,对话就变成"我们拉哪个 杠杆"而非"这是谁的错"。
切片也防止过度优化,那是一种真实而昂贵的失败。一个稳稳低于自己切片的系统,是把余量花在质量上的邀请,而非要 捍卫的奖杯。没有切片的团队往往优化嗓门最大的工程师注意到的东西,而那很少是真正的瓶颈——饼图告诉你毫秒究竟去了哪。
## 在三台固定相机处测量
为最坏的现实视角做预算,而非平均——每张地图选三台固定的"预算相机"(最坏远景、最密的战斗空间、最忙的 室内),每次都恰在那里测。
随机漫游产出随机数字与不可证伪的争论。固定相机产出趋势线:同一视角每周测量,精确地显示一次退步于何时何地落地、 该问谁。最坏的远景配得上主角,因为它把一切一次性叠起——最大绘制距离、每一圈 LOD、地形水天同时。在其远景处守住预算 的地图几乎处处守得住;走廊奉承你,远景说实话。
把相机位置存进地图,好让任何人都能复现那个确切镜头。"在某个角度我的机器上跑得挺好"不是数据;"预算相机 2 在最低 配置上测得 9.2 毫秒,比上周的 7.8 上升"才是一份带嫌疑人的缺陷报告。
## 让预算出现在工作发生之处
躺在 wiki 里的预算是死的——它活在陈设期间的统计叠层里、内容合并前对上限的一次检查里、以及当一次烘焙将 突破实例数时的警告里。
当反馈即时到来,美术乐于达标;当它在作品出货三个月后作为一张缺陷工单到来,他们就心生怨怼。工具这一侧在此以一种 安静而决定性的方式紧要:当散布与混合烘焙为引擎原生图元——像 Numivo 那样普通的实例化网格与 foliage——你既有的剖析器就能把不加粉饰的真相道出,没有插件运行时搅浑数字,且每一根标准杠杆(剔除距离、LOD、 实例数)都原封不动地适用。一份你只能透过黑箱测量的预算,是一份你会悄悄不再信任的预算。
## 能坚持下去的评审节律
每周对三台预算相机截图(五分钟)、在内容合并时对上限做一次自动检查、以及每月对上限本身做一次评审—— 预算是估计,诚实的修订胜过沉默的违反。
- 每周: 开着统计给三台相机截图;把帧时间与内存记进一张共享表。趋势一个月内浮现,一处尖峰指向某一周的工作。
- 合并时: 一次自动检查把场景与上限比对。红色数字开启一场对话,而非弄断构建——目标是意识,不是官僚,而一道 硬阻拦会教人去糊弄检查。
- 每月: 重访切片本身。项目中途的现实总与前期制作的猜测不同;公开调整预算能维持它的可信。一份人人默默无视的 预算比没有更糟,因为它教团队:上限只是演戏。
## 当数字变红
按性价比顺序拉杠杆——先剔除距离与阴影设置(几分钟,巨大胜利),再 LOD 与 impostor,再实例数,最后才 动美术本身。
优化是分诊,不是拆除。最后才拆美术——大多数超支的远景,早在你不得不删掉任何玩家能看见的东西之前,就已从看不见的 设置改动回到绿色。
昂贵的错误是径直跳到"删掉一半的树"。密度是最可见的杠杆,通常也不是最便宜的——一处超支 2 毫秒的远景,通常仅凭 阴影距离与剔除距离的调校就回到绿色,两者对玩家都不可见。删内容是最后手段,正因为它是玩家唯一能看见的杠杆;梯子上 它之上的每一级,从美术角度看都是免费的。往下走这梯子,你就在收回毫秒的同时保住观感;从底往上走,你就在还没试过 免费胜利之前先把游戏变丑。
## 值得偷师的现场数字
- 60 fps 的一帧:16.6 毫秒——环境通常谈判 6–8 毫秒
- 一份可行的环境子切分:地形 1.5 / 植被 2–2.5 / 道具 1.5 / 水与大气 1(毫秒)
- 每张地图的预算相机:3——远景、战斗、室内——存进地图
- 每周测量成本:约 5 分钟;价值:趋势线而非争论
- 变红时的杠杆顺序:剔除 → 阴影 → LOD → 实例 → 美术
## 迷你 FAQ
环境预算归谁所有? 一个具名的人——通常是技术美术——拥有测量;上限与渲染共同拥有。没有主人的预算一个月内 朽成传说,因为"人人负责"意味着没人测量。
预算如何与动态时段共处? 在每台相机测量最坏的光照条件,而非最漂亮的。带长长掠射阴影的黎明往往是正午的两倍 开销;只在正午守得住的预算是半份预算,玩家会找到那个昂贵的时辰。
一个小型独立项目也需要这一切吗? 缩小它,而非取消。一台预算相机、一个上限(你最低配机器上的帧时间),每周 检查。那个五分钟的习惯正是拯救最后一个月的东西——无论团队大小,失败模式都一样:在成本昂贵到难改时才发现它。
内存对帧时间又如何? 它们是有着不同失败模式的不同预算——帧时间拉低你的 FPS,内存把你的流送拖入卡顿或崩溃。 两者都要预算;在主机上,内存往往是更硬的上限,而它是那个会让认证不过、而不只是感觉糟糕的。
预算不是对艺术性的限制——它正是那美丽的场景在玩家真正拥有的硬件上仍以 60 fps 保持美丽的原因。把性能当作共享设计 约束的团队,交付的游戏比把它当作最终 Boss 的团队更漂亮。