FPS越高越好?真相让人意外

发布时间:2026/10/21 20:12:09
FPS越高越好?真相让人意外
不是。FPS 越高画面越顺滑、操作延迟越低但收益会越来越小代价却越来越大。对玩家来说稳比高更重要。对开发者来说合适比最高更重要。先打个比方翻页动画小时候在课本角落画小人快速一翻小人就动起来了。每秒翻10 页小人一顿一顿地动每秒翻30 页动作连贯了每秒翻60 页非常流畅每秒翻240 页……和 120 页相比你几乎看不出区别但手已经快抽筋了。FPS 就是每秒翻多少页。翻得越快越费力而眼睛的感受会逐渐饱和。一、收益递减多出来的帧越来越不值钱人对流畅度的感受本质上取决于每一帧间隔多长时间帧时间而不是 FPS 这个数字本身FPS每帧耗时比上一档快了多少3033.3 ms—6016.7 ms16.7 ms⬆️ 提升巨大1208.3 ms8.3 ms ⬆️ 明显2404.2 ms4.2 ms ↗️ 高手能感觉到4802.1 ms2.1 ms → 几乎没人分得出帧时间 33ms ● │╲ 17ms │ ● 8ms │ ●── 4ms │ ●──── 2ms │ ●────────── ← 再往后翻倍 FPS 只换来 1~2ms └──────────────────────────── FPS 30 60 120 240 480从 30 到 60 是从卡到顺从 240 到 480 是从顺到……也是顺。二、屏幕跟不上多出来的帧根本看不到显示器有自己的刷新率60Hz 的屏幕每秒最多显示 60 张画面。游戏渲染 ■■■■■■■■■■■■ 每秒 200 帧 屏幕显示 □ □ □ □ 每秒只换 60 次 大部分帧画完就被扔掉了不仅如此如果关闭垂直同步还可能出现画面撕裂屏幕刷新到一半新帧插进来了上半截是旧画面下半截是新画面。例外竞技射击游戏CS、Valorant的职业选手会在 144Hz 屏幕上跑 300 FPS。不是为了看到更多帧而是因为屏幕刷新时拿到的画面更新鲜输入延迟更低。这对普通玩家和大多数游戏类型意义不大。三、稳定比数值更重要45 帧可能比 30 帧还难受这是最反直觉的一点。在 60Hz 屏幕上屏幕每 16.7ms 刷新一次。如果游戏跑45 帧每帧约 22ms赶不上一次刷新只能等下一次稳定 30 帧 ■───■───■───■───■ 每帧都显示 33ms节奏均匀 ✅ 不稳 45 帧 ■─■───■─■───■─■─── 16.7ms、33.3ms 交替出现 ❌ → 画面一顿一顿地抽动judder玩家的眼睛对节奏不均匀极其敏感。一个稳定的 30 帧常常比在 4060 之间来回跳的帧率感觉更流畅。所以目标帧率最好是屏幕刷新率的约数60Hz 屏选 60 / 30120Hz 屏选 120 / 60 / 40宁可锁低一档也不要在高帧率边缘反复掉帧关注的指标应该是帧时间曲线是否平直、1% Low最差 1% 帧的帧率而不只是平均 FPS。 Android 上帧时间不均匀还有一个原因渲染完成时机和屏幕刷新没对齐。Unity 的Optimized Frame Pacing基于 Google 的 Swappy 库就是解决这个问题的建议开启。四、手机上高帧率的代价是热量在手机上FPS 和功耗的关系是这样的60 帧 120 帧 CPU/GPU 跑 50% CPU/GPU 跑 100%而且要拉到高频 功耗 ≈ 1 份 功耗 ≈ 2.5~3 份高频区功耗非线性增长结果往往是这样一个故事0 分钟 120 帧丝滑 10 分钟 手机变烫温控降频掉到 90 20 分钟 大核被关上一章说的情况 3跌到 40~60 之间乱跳 → 比一开始就锁 60 帧的体验差得多还会带来掉电快、手烫到握不住、玩家吐槽这游戏太耗电。对 MMORPG 这种一玩就是几个小时、还经常挂机的游戏来说这是实实在在的差评来源。但也别锁得太低还记得上一章吗锁 30 帧时主线程大部分时间在等调度器会觉得它很闲把它放到小核上。一到大型战斗就来不及提频造成卡顿。所以锁帧也要配合 ADPF 等方式告诉系统我需要多快并且尽量平滑负载。五、不同类型的游戏需求完全不同游戏类型建议原因竞技射击、格斗、音游越高越好120延迟敏感几毫秒的差距会影响胜负和判定动作游戏、ARPG60 帧为主高端机可开 90/120打击感、闪避需要流畅MMORPG60 帧足够30 帧作为省电档操作节奏相对慢长时间游玩更看重发热和续航卡牌、回合制、模拟经营30 帧静止时更低画面变化少高帧率纯属浪费电六、开发者视角的几个要点1. 游戏逻辑不能依赖帧率如果移动、技能、物理都按每帧走多少来写帧率越高跑得越快帧率不稳时还会穿墙、判定出错。// ❌ 帧率翻倍速度也翻倍transform.positiondir*0.1f;// ✅ 与帧率无关transform.positiondir*speed*Time.deltaTime;物理和关键逻辑用固定步长FixedUpdate。2. MMO 的客户端帧率 ≠ 服务端频率服务端逻辑一般是1030 Hz的固定 tick例如上几章的寻路就是在服务端 tick 里调度的。客户端 120 帧并不会让服务端的怪物更聪明、技能判定更准它只影响本地表现插值、动画和镜头。服务端 ●─────────●─────────● 每 100ms 下发一次位置 客户端 ●─•─•─•─•─●─•─•─•─•─● 中间靠插值补出平滑动作3. 动态帧率在该省的地方省场景帧率策略战斗、大世界跑图正常帧率60主城挂机、自动寻路、自动战斗降到 30全屏 UI背包、商城、对话降到 30甚至更低失去焦点、小窗模式降到 2030温度过高Thermal API 预警主动降一档在系统强制降频之前Unity 中通过Application.targetFrameRate动态调整注意 Android 上它默认是 30不改的话很多项目其实一直跑在 30 帧。4. 把选择权交给玩家提供省电 / 均衡 / 高帧率档位并根据机型给出合理的默认值低端机默认 30旗舰机默认 60支持高刷的机型允许开启 90/120。一句话总结 FPS 就像翻页动画的翻页速度从 30 到 60 是质变从 60 往上是锦上添花再往上基本只剩发热和耗电。比起追求最高数字更值得追求的是帧率稳定、节奏均匀、与屏幕刷新率匹配并且在玩家不需要时懂得节省。