2008年12月17日星期三

FPS 与画面质量

无意间看到《流畅和画质——对魔兽3画面设置的一些研究》,感觉是超好的东西。整理浓缩后放上来,方便自己查阅。虽然是以魔兽3为研究对象,但具有普遍意义,对其他 3D 游戏很有参考价值!

作者的实验平台:AthlonXP2500+、256M DDR333 和 256M DDR400 两条内存混插组成双通道(人品不错)、镭9600级别的显卡(镭9700移动版的核心,相当于9550、9600级别,和台式9700差距很大)
操作系统:WindowsXP SP2
游戏:魔兽争霸3冰封王座 1.20E


一:流畅
RTS游戏对 FPS(帧速率,或者叫每秒帧数)的要求不像射击游戏那么高,一般平均25即可(我国 PAL 制式的电视信号为25帧每秒,大家不觉得卡吧),极端情况下20的 FPS 也是可以接受的。

二:DirectX 3D 还是 OpenGL
魔兽3同时支持 D3D 和 OpenGL,默认是 DX8,但实际上只用到了 DX7 的特效。快捷方式里加参数“ -OpenGL”则启动时使用的是 OpenGL 模式;个人感觉 OpenGL 的画质要稍好于 D3D,流畅度差不多。ATI 卡的 OpenGL 性能一向较弱,如果换了 NVIDIA 的显卡,OpenGL 下的性能应该会更好。OpenGL 模式下很少会出现鼠标“飘”或者很粘的现象,猜测是因为 DX8 取消了 DirectDraw,2D 图像是作为 3D 平板上的贴图来渲染的,所以鼠标箭头是会随画面卡一起卡的;而 OpenGL 中的 2D 和 3D 是分别渲染的,所以即使主画面很卡,鼠标箭头也不会卡。 建议游戏运行时不够流畅时可以试试 OpenGL 模式,如果在 DX 模式下跑魔兽3就很流畅,就不建议使用OpenGL 模式,因为有时 OpenGL 模式下会出现画面问题(比如字体不清楚,字体不清楚的话可以试试 FontCraft 这个修改魔兽3字体的工具)。

三:分辨率
一般来讲,分辨率是影响一个游戏画面好坏的主要因素。一般说来,15寸 CRT 显示器的最佳分辨率是 800X600,17寸 CRT 是 1024X768,19寸 CRT 是 1280X960,15寸非宽屏液晶是 1024X768,17寸、19寸非宽屏液晶是 1280X1024。设置分辨率时一般应优先考虑满足最佳分辨率,尤其是液晶显示器,牺牲其它效果也要尽量满足。对于宽屏显示器,因为魔兽3不支持宽屏分辨率,所以无法达到宽屏显示器的最佳分辨率。可以检查你的显卡驱动设置里是否有“保持长宽比”的选项。此选项可以令显示器只使用中间的部分显示4:3的画面(两侧留黑边)。如果没有,可以使用“-Windowed”参数以窗口模式启动游戏,但这会带来一些操作上的问题并造成一定的性能下降。

以下是我用魔兽编辑器编的一张地图,用来测试各种情况下的FPS。使用Lost Temple的地形,对战双方各有25个单位,基本可以代表对战时交战的场面。生命之泉我加强了它的生命恢复效果,还给它加了一个防御加1000的专注光环,这样这些单位就可以一直打下去而不会中途死掉。
DirectX 下 1280X1024 分辨率、无反锯齿、无各向异性过滤、特效全开 FPS:33
OpenGL 下 1280X1024 分辨率、无反锯齿、无各向异性过滤、特效全开 FPS:32
OpenGL 下 1024X768 分辨率、无反锯齿、无各向异性过滤、特效全开 FPS:35
OpenGL 下 800X600 分辨率、无反锯齿、无各向异性过滤、特效全开 FPS:36


四:色深
魔兽3支持16位和32位两种色深,16位色是指同屏可以显示“2的16次方”种颜色,32位就是“2的32次方”种颜色。相对于32位色深,16bit 的 FPS 提升是很明显的。至于效果差在哪里,那要看显示器和个人感觉了。
OpenGL 下 1280X1024 分辨率、无反锯齿、无各向异性过滤、16bit 色深、其余特效全开 FPS:37

五:模型细节
模型精度如果为高的话,游戏引擎会照原样把模型全部渲染出来;如果为“中”或“低”,引擎会减少三角面以获得更快的速度。这个设置对 FPS 提升不大,建议选“高”,玩一些带过场的战役类地图,近距离观看单位的脸部会好看些(其他游戏应该会影响整个身体的精细度)。另外,魔兽3的模型精度选项对底下那个动态头像没影响,它们都是按最高精度渲染的。
DirectX 下 1280X1024 分辨率、无反锯齿、无各向异性过滤、模型精度“中”、其余特效全开 FPS:34

六:动画质量
这个选项决定了单位特殊动作出现的频率,如剑圣的盘腿坐、恶魔猎手的金鸡独立。本选项和显卡无关。将此选项设为“低”可以略微降低 CPU 占用率。

七:纹理质量
这个选项决定了游戏中使用的贴图的精细程度。据目测,纹理质量“高”和“中”精细度相当,差的只是色深,纹理质量“低”的精细度却和前两者相去甚远。纹理质量高低对 FPS 影响很小,但是对于显存容量小于64MB 或者显存带宽小于等于 64bit,这个选项可以说是除了分辨率以外最重要的选项。建议将纹理质量设为“中”,将色深设为16位。前边已经说过,高质量纹理和中等质量差的只是色深,所以中等质量纹理加32位色深、高质量纹理加16位色深、中等质量纹理加16位色深这三种搭配看起来几乎是一样的。

八:阴影及光线
对于大多数游戏来说,阴影和光线都会对性能产生严重影响,然而魔兽3是个例外。严格地说,这个游戏没有真正意义上的阴影和光线效果,我们不得不怀疑暴雪的程序员在偷懒。魔兽里的阴影不过是单位脚下地面上的一块暗色的贴图,而并非像一些新游戏一样是模拟真实的光线路径计算生成的。光线(暗夜精灵造建筑时升起的几道光、英雄升级时头上的光等等)不过是几块矩形的平板上加了半透明的贴图,不会对周围物体的明暗产生影响。不信可以让某个兵的脸对着正在建造的暗夜建筑,他的脸不会被升起的那几道光照亮(当然不同的朝向和一天中不同时间对明暗是有影响的)。全屏幕的光线加起来也就几十个三角形,对性能的影响微乎其微,要知道一个普通单位的模型也是由几百个三角形构成的。在实际测试中,光线选项对 FPS 几乎没有影响,这与前面的理论符合得很好。关闭阴影却能带来5帧/秒的 FPS 的提升,这点比较费解,然而事实就是如此。

九:粒子效果
指的是用数目很多的多边形面来模拟现实中的火焰、烟雾等效果。比如玩 CS 时可能会遇到扔烟幕弹卡机的现象,这是因为烟幕弹爆炸的这种粒子效果突然生成了大量的多边形,加重了机器的负担。魔兽里也是同样的道理,如果感到大会战的场面很卡,可以考虑把粒子效果改为中乃至低。值得注意的是,战争迷雾不属于粒子效果,不要担心它会影响性能。

十:魔法效果
这个选项决定了魔法视觉效果持续的时间。比如说某单位被释放了嗜血魔法,他的两只手(如果他有手的话)上会出现火焰。如果你的魔法效果为高,那么这两团火会持续存在到嗜血效果消失,如果魔法效果为中或低,这两团火持续一会儿就会消失,不会在魔法有效期间一直存在。这个选项对性能影响还是比较大的,但还是建议将它调到高,因为魔法效果对战局的把握是相当重要的。

十一:闭塞
网上说这个选项打开时游戏引擎不会渲染被遮住的那些三角形,所以说打开这个选项会提高性能。然而实际测试的结果是对性能没有影响。看来这有待进一步研究。

没有评论:

发表评论