游戏卡顿背后的博弈:CPU和GPU

游戏卡顿背后的博弈:CPU和GPU

在几年前我还在读书的时候,就看过一门游戏相关的资讯,怪物猎人制作人说,怪物猎人的瓶颈不是GPU,而是CPU消耗过大,会持续优化CPU性能。当时我还是小白,并不了解游戏内核,我很疑惑制作人怎么知道是CPU被卡住了,程序员写代码的时候还会专门说这行代码是CPU在消耗,那行代码是GPU在消耗吗。现在进入了这门行业,想分享下我的看法。

CPU:称为中央处理器,负责处理复杂的算术运算与逻辑判断,如角色属性、技能效果、逻辑行为、数据计算等。

GPU:也可以概括为显卡,专攻矩阵运算、线性代数等图形学任务,如将在屏幕上渲染3D模型、处理光影特效等。

游戏开发中,二者的区别:在游戏开发中,程序员写的代码大多运行在CPU上,而GPU的运用更多是直接调用——比如美术在建模软件中做好角色模型,导出到游戏引擎后,只需调用渲染接口,无需深究其底层原理。

多数情况下,GPU确实是卡顿的重灾区,当场景过于复杂、特效堆积或模型面数过高时,GPU需要渲染的像素量激增,就会导致帧率暴跌。但某些场景下,卡顿却与画面无关,是CPU在作祟。

以我的开发经历为例:我当时接到个功能,当人物跑动和静止时要切换不同的特效,我采取了比较偷懒的做法,用上一帧的人物位置与这一帧的人物位置做差值,以此来判断是否静止或者跑动。然后我就被主程批评了,这显然涉及到性能问题,每一帧都做位置判断,极度消耗 CPU,如果人物多了那就是天大的灾难。所以后来改为“事件驱动”:通过监听状态变化(如动画切换、内部数据切换、按键触发)发送指令,用来切换特效,避免过多的计算。

另一个案例更典型:许多玩家都知道,为了让游戏更真实,都会给不同NPC加上行为树,用来驱动一定范围内的随机行为,行为树原理是,每帧计算数十个节点以此判断其行动逻辑。在项目里策划给几十上百个NPC都加上了行为树,游戏NPC是栩栩如生了,但是CPU占用率却居高不下。解决方案则是“动态减配”:将NPC按与玩家距离进行分级,远处NPC进入休眠,暂停逻辑更新,近处NPC实时计算,中距离NPC则间隔几秒推算行为。在玩家看不见的地方偷偷减配,甚至有些模型都不加载,以此控制数据与逻辑复杂度。

我分享一个简单的判断卡顿源头的经验:如果你进入新场景或释放技能时,画面剧烈变化导致的卡顿,通常是GPU压力过大,它一时渲染不过来;但如果你在空旷地,什么也没做,莫名其妙就卡,周围也没有视觉变化,那多半都是CPU过载了。当然,现在许多电脑和手机都有性能监控,一眼就能看出来。

编辑于 2026-04-17 · 著作权归作者所有