性能稳定不是最后优化出来的,而是从预算开始管理的
游戏性能问题通常不是某一天突然出现的。它是很多小决定累积的结果:一个角色多了几套高面数服装,一个场景多了几十盏动态灯,一个特效多了透明叠加,一个 UI 多了实时刷新,一个系统多了后台查询。每个改动单独看都不致命,合起来帧率就掉了。
所以性能优化不能只靠项目后期“救火”。真正有效的方法是建立性能预算:在项目早期明确目标平台、帧率、分辨率、CPU、GPU、内存、包体、加载时间和资源复杂度,并把这些预算分配到角色、场景、特效、UI 和系统。
性能预算不是限制创作,而是让创作在可交付范围内发生。
先定义目标平台和帧率目标
不同平台的性能策略完全不同。移动端要面对大量机型、散热、功耗和内存限制;PC 要面对配置跨度和画质选项;主机要追求稳定体验和固定硬件上的最佳表现。
项目开始时应明确:
- 最低支持设备。
- 推荐设备。
- 目标帧率,例如 30、60 或 120 FPS。
- 目标分辨率和动态分辨率策略。
- 最大内存占用。
- 首次加载时间和场景切换时间。
- 多人或战斗峰值人数。
- 同屏特效和单位上限。
如果团队没有定义最低设备,后期就会争论“这台机器卡不卡算不算问题”。如果没有定义目标帧率,美术、策划和程序就无法判断一个内容是否超预算。
对于移动游戏,建议用低端、中端、高端三档设备建立性能基线。不要只在旗舰机上调体验。对于 PC 和主机,可以通过画质档位和性能模式管理差异,但核心玩法必须在最低目标配置上稳定。
CPU、GPU 和内存要分别预算
帧率下降不一定是同一种原因。CPU 卡、GPU 卡、内存爆、IO 慢、网络阻塞都会表现为卡顿,但解决方式不同。
CPU 预算关注逻辑更新、AI、物理、动画、脚本、寻路、网络同步、UI 刷新。大量单位、复杂状态机、频繁分配对象、每帧遍历全量列表,都会吃 CPU。
GPU 预算关注面数、材质、灯光、阴影、后处理、透明物体、粒子、屏幕空间效果。移动端尤其怕过度绘制和透明叠加。
内存预算关注贴图、模型、动画、音频、UI 图集、缓存、对象池。内存不足不仅会导致崩溃,还会触发频繁加载和回收,造成卡顿。
每个系统都应该知道自己的预算。例如一个普通敌人多少面、多少骨骼、多少材质球;一个技能特效最大粒子数和持续时间;一个关卡最大贴图内存;一个 UI 页面最大节点数。没有这些标准,优化只能靠事后返工。
资源规范要让美术和技术美术共同维护
性能预算落地,离不开资源规范。规范不能只写在文档里,还要进入导入检查和构建流程。
常见资源规范包括:
- 角色模型面数和骨骼数上限。
- LOD 层级和切换距离。
- 贴图尺寸、格式和压缩规则。
- 材质数量和 Shader 复杂度。
- 动态灯光和阴影使用限制。
- 粒子数量、透明层数、生命周期。
- 音频格式和加载方式。
- UI 图集大小和拆分规则。
技术美术的角色非常关键。他们既理解画面质量,也理解性能成本,能帮助美术团队用更便宜的方法达到接近效果。例如用烘焙光照替代动态光,用贴图细节替代几何细节,用分层特效控制透明覆盖。
资源导入时最好自动检查超标项。不要等到版本集成后才发现某个 Boss 模型贴图占了几十 MB,或者某个技能在低端机上直接把帧率打穿。
场景复杂度要按玩家视角设计
场景不是越细越好,玩家看不到或注意不到的细节就是性能浪费。开放世界、城市场景、多人战场尤其要控制复杂度。
场景预算要考虑:
- 玩家可见距离。
- 同屏单位数量。
- 遮挡剔除。
- 流式加载。
- 远景和近景资源分级。
- 碰撞体复杂度。
- NPC 和环境交互密度。
- 战斗特效峰值。
一个常见问题是静态场景测试很流畅,一进入真实战斗就卡。原因是场景预算没有给战斗留空间。性能预算必须按峰值场景测:最多玩家、最多怪物、最多技能、最多 UI 提示、最多掉落、最复杂镜头。
另一个问题是只测平均帧率,不测卡顿。玩家对突然掉帧和加载卡顿非常敏感。帧时间分布、P95/P99 帧耗时、GC 峰值、资源加载尖峰都要看。
性能测试要进入版本流程
性能测试不能只在项目末期跑一次。每个重要版本都应有性能基准:
- 固定场景跑分。
- 固定战斗回放。
- 固定 UI 压力流程。
- 固定加载路径。
- 多设备测试。
- 长时间运行测试。
测试结果要可比较。今天的版本比上周慢了多少,是哪个场景、哪个平台、哪个系统导致的。没有历史曲线,就很难发现性能缓慢劣化。
对于移动端,还要测温度和降频。很多游戏前 5 分钟流畅,20 分钟后因为发热降频开始卡。性能目标不能只看冷启动短测。
低端机策略要诚实
不是所有设备都能获得同样画质。低端机策略可以包括:
- 降低分辨率。
- 关闭高成本后处理。
- 降低阴影质量。
- 减少同屏特效。
- 降低远景细节。
- 使用低规格模型和贴图。
- 控制后台加载。
- 限制高帧率模式。
但低端机不能牺牲玩法信息。玩家可以接受画质低一点,不能接受技能看不清、按钮延迟、输入不响应、战斗结算错误。优化优先级应该是操作响应、玩法可读性、帧率稳定,然后才是视觉细节。
性能预算最终是团队纪律
性能不是程序一个部门的事。策划决定同屏人数和玩法复杂度,美术决定资源密度,技术美术决定渲染方案,程序决定架构和加载,制作人决定范围和优先级。
如果团队没有预算意识,后期优化就会变成互相要求“你们再压一点”。如果早期就建立预算、自动检查、性能基准和版本门禁,很多问题可以在内容进入主线前解决。
一款游戏的画面可以不追求最高,但体验必须稳定。稳定的帧率、清晰的反馈、可预测的输入,比堆满细节但频繁卡顿更重要。性能预算管理的价值,就是让团队在野心和交付之间保持清醒。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。