华北cs吧 关注:509贴子:131,211

『CS技术』FPS和垂直同步

只看楼主收藏回复

前言:古人云,菜鸟无罪,菜鸟有理。所有老鸟皆由菜鸟而来,所有菜鸟总有一天皆能成为老鸟。可是这时间,少则一年两年,多则十年八年,其中苦味甘甜,就是三天三夜也说不尽,道不完。前日偶然闲逛,发现还是有很多新朋友在问一些虽然希奇古怪,但是却是非常基本的问题。所以,开办这个新栏目,专门针对CS1.6,只讲述些最基本的问题,整理出很多前人呕心写出的一些非常出色的文章,以减少大家反复使用GOOGLE的痛苦。也可让新人少走弯路,老鸟重新安装完系统后不用重新寻找资料^_^ 希望大家喜欢。下面就是菜鸟开心大课堂的第一讲:FPS和垂直同步。

  你是否曾经为闪烁的屏幕而痛苦?是否曾经在关键时刻游戏停顿痛失好局?你是否面对弥漫的烟雾而痛苦不堪,却苦无解决之良方?你是否总觉得朋友机器运行CS是那么流畅,屏幕看的是那么舒服,而自己电脑却总无法达到此种功效呢?当然,这显然不是武林绝学“还我漂漂拳”所能达到,一切的奥秘,全部都缘自三个看似普通,却不平凡的字母,FPS!而锁定麻烦的FPS,几乎是所有同仁们装好CS后第一位要解决的问题。直到今天,相信很多新朋友仍然生活在60HZ的刷新率和70FPS之下。所以,我们就来好好总结下这个问题。

一:充分了解FPS

  首先,想打倒敌人就要先充分了解敌人。 何谓FPS?现在,请大家一起跟我念:FPS,每秒帧数。测量用于保存、显示动态视频的信息数量。这个词汇也同样用在电影视频及数字视频上。每一帧都是静止的图象;快速连续地显示帧便形成了运动的假象。每秒钟帧数 (fps) 愈多,所显示的动作就会愈流畅。通常,要避免动作不流畅的最低 fps 是 30。有些计算机视频格式,例如 AVI,每秒只能提供 15 帧。这是FPS的定义,可是在我这种外行的眼中,看了这个和没看有什么区别?所以,我们只要理解一点,那就是, 99的FPS比70的爽,而稳定的FPS比不稳定的爽。知道这点,一切都好办。那么,该如何看自己CS的FPS是多少呢? 

  先进入CS1.6,用~键(就是数字1左边的那个……什么!你用的是传说中的人体工程学多媒体键盘?那么我什么也没有说过……)呼出控制台。 
  在控制台中写下命令:cl_showfps 1,即可看到FPS,在屏幕左上角。




  用net_graph 1也可以看到FPS,但是由于影响到视觉美观,故不推荐。
  现在就请大家仔细审视下这个带有魔力的数字。如果他稳定在99或者100,您可以完全藐视下文去蒙头大睡。如果是惨不忍睹的70或者跳的你自己都没有办法审视清楚,那么,就请继续往下看……



1楼2006-06-12 18:33回复
    无论PC也好,CS也罢,道理总是越辩越明,一些理论究竟是对是错,剥茧抽丝,层层分析,相信大家都会有结果。几年前,看了很多所谓“技术文章”的我走了很多弯路,今天,我不希望别人继续走。

    1、CS:1个基于HL引擎的MOD,FPS上限100。每秒种最多只能显示100个画面,不会多,只会少。

    诊断:
       同学们一起来说,这句话说错了几处?首先谁能告诉我什么是HL引擎?因为我只听说过HL2引擎,Quake引擎。Fps上限是100?在2004年9月说这样的话我认为是对CS版本无情的蔑视。希望多研究一下基本的CS理论知识,跟上时代的步伐。

    2、显示器刷新率(Hz):也可以说成是FPS,根据带宽与分辨率不同而改变。(带宽越高,刷新率越高;分辨率越高,刷新率越低。TIP:高带宽高刷新率对减轻眼睛疲劳有帮助)

    诊断:
       刷新率单位为Hz,而Fps的含义是frames per second,单位为桢数。他们等价了?难道数值可以相等的东西就可以互换么?带宽=水平分辨率×垂直分辨率×最大刷新频率,却遗忘了最重要的两个字:最大 ,有没有这两个字,意思上天壤之别。话应该这样说:带宽越高,在某个特定分辨率下,所能达到的最大刷新率越高。原文的说法,不知道是不够严谨,还是就是如此错误认为。

    3、正确安装显卡驱动,N卡推荐61.76 whql,A卡推荐最新驱动。

      N卡都去用61?G2mx200和5700都推荐用这款么?

    4、推荐:一台带宽在120MHZ的显示器,CS分辨率在640X480 或800X600。如果CS分辨率在1024下,显示器带宽要在160MHZ以上,或是设置游戏FPS为85。一块Geforce2以上的显卡。一个1G频率以上的CPU。256M或512M的内存。

    诊断:
       推荐大家使用1G以上的CPU(不管是赛扬还是P4?),G2以上的显卡(姑且我们说G4mx400)这样的配置来CS就够了?试图流畅完美运行任何一款3D游戏 值得玩家注意的是什么?毫无疑问,最重要的两点:CPU的浮点运算能力,足够强大的显示芯片。推荐竟然完全忽视这些。所以我和其他菜鸟一样的惊诧。

    5、以个人经验,在CS中正确设置垂直同步可以使游戏画面更加流畅,对此本人在高低档配置机器做过实验,已经得到证实。

    诊断:
    不够严谨,因为很明显笔者根本没有在低档机器上作过试验。我来告诉你,我来告诉大家我是如何识破的。所谓低档,必然有较差的显示器,较差的显卡,较差的显示器根本上不去刷新率100,超频刷新率更是会直接导致超出响应范围的严重错误,请问你如何实验?较差的显卡关闭垂直同步尚且步履蹒跚,请问你在打开垂直的前提下,如何流畅运行CS?

      行了,其实一句话就可以概括这个文章,首先提高了自身的刷新率到100,然后打开垂直同步功能,自然可以使得fps为100,但是不要忘记这仅仅是高端显卡+不错的显示器的专利,既然这样,就不应该大张旗鼓的,不分对象的宣布出来。因为毕竟,大多数玩家还和垃圾显卡垃圾显示器一起生活得很苟且。


    2楼2006-06-12 18:34
    回复
      垂直同步,到底什么是垂直同步?

        几乎所有试图研究CS的fps的朋友,都将不可避免地面对这样一个名词——垂直同步。到所有的CS专业论坛去问如何提高fps,得到的绝大多数回答也基本都是——关闭垂直同步。

        当大家关闭了垂直同步,得到了较高一些的fps后,你知道为什么么?今天,飞扬和大家一起探讨这个看似简单的名词:垂直同步。

        (本文与CS关系不是非常紧密,请朋友们选择阅读。)

      1、要知道什么是垂直同步,必须要先明白显示器的工作原理。

        显示器上的所有图像都是一线一线的扫描上去的,无论是隔行扫描还是逐行扫描,显示器,都有2种同步参数——水平同步和垂直同步。

      2、啥叫水平同步?啥叫垂直同步?

        垂直和水平是CRT中两个基本的同步信号,水平同步信号决定了CRT画出一条横越屏幕线的时间,垂直同步信号决定了CRT从屏幕顶部画到底部,再返回原始位置的时间,而恰恰是垂直同步代表着CRT显示器的刷新率水平!

      3、关键部分

        为什么是否关闭垂直同步信号会影响我们CS中的fps数值?道理一点都不复杂,首先我们平时运行操作系统一般屏幕刷新率是多少?大概一般都是在85上下吧,那么显卡就会每按照85的频率时间来发送一个垂直同步信号,信号和信号的时间间隔是85的分辨率所写一屏图像时间。

        如果我们选择“等待垂直同步信号”(也就是我们平时所说的“垂直同步打开”),那么在游戏中,或许强劲的显卡迅速的绘制完一屏的图像,但是没有垂直同步信号的到达,显卡无法绘制下一屏,只有等85单位的信号到达,才可以绘制。这样fps自然要受到操作系统刷新率运行值的制约。

        而如果我们选择“不等待垂直同步信号”(也就是我们平时所说“关闭垂直同步”),那么游戏中作完一屏画面,显卡和显示器无需等待垂直同步信号,就可以开始下一屏图像的绘制,自然可以完全发挥显卡的实力。 

        但是,但是,但是,不要忘记,正是因为垂直同步的存在,才能使得游戏进程和显示器刷新率同步,使得画面平滑,使得画面稳定。取消了垂直同步信号,固然可以换来更快的速度,但是在图像的连续性上,性能势必打折扣。这也正是很多朋友抱怨关闭垂直后发现画面不连续的理论原因!


      3楼2006-06-12 18:35
      回复
         看到这里,你是否对垂直同步有了一定了解呢?总之,事实胜于雄辩,关了垂直同步FPS就是稳定,而如果不关FPS就是会不停跳动。那么,该如何关垂直同步呢?地球人都知道,现在主流的显卡分为Nvidia和ATI。下面将分成两部分叙述:

        Nvidia:

         第一步:先打开显示器属性:(鼠标移到桌面,右键→属性→设置→高级)


        4楼2006-06-12 18:35
        回复
          第二步:进入NVIDIA的控制面版:(高级→NIVIDIA→性能和质量设置→垂直同步


          5楼2006-06-12 18:36
          回复
            第三步:关闭垂直同步和各项异性过滤(先把在应用程序控制上的勾去处,在把横条移动高关闭上。各项异性过滤也和FPS有关,所以也需要关闭)

            *在调整前请先正确安装显卡驱动,由于各个版本驱动不同,或许有些偏差


            6楼2006-06-12 18:36
            回复
              ATI显卡:

                第一步:打开显示器属性设置(方法应该不用我再说一遍了吧?)

                第二步:进入属性设置,3D选项→OpenGL设置→去处使用自定义设置上的勾→再点自定义按键,进入设置页面


              7楼2006-06-12 18:36
              回复
                第三步:关闭垂直同步和各项异性过滤,如果机器性能并不非常出色,则还可以调低纹理和详细程度


                8楼2006-06-12 18:37
                回复
                  三:调整参数锁定垂直同步

                    CS另一个吸引人的地方就是Config。经常看到很多朋友说,用了某某高手的Config觉得非常好用,枪法增加了很多之类。很遗憾的是,Config就索那浮云,这一切都是幻觉而已,除非所谓的高手用了很多违规参数。关于Config问题,在以后的课堂中会专门说到,而现在,只是讲解一些和fps有关的参数。

                    所有的Config参数都可以通过以下两种方式输入:

                  按~键呼出控制台,在控制台中写如以下参数
                  用记事本打开Config文档,在其中写入或者修改。具体方法如下(这里用正统STEAM系统举例,其他1.6版本相似):


                  9楼2006-06-12 18:37
                  回复
                    先打开安装的Steam文件夹,再打开SteamApps文件


                    10楼2006-06-12 18:38
                    回复
                       进入自己的用户文件夹


                      11楼2006-06-12 18:38
                      回复
                        在cstrick和cstrick_chinese内都有config,不同的是cs内是一些游戏系统文件,而cs_chinese则是个人设置。所以参数推荐添加在cs_chinese


                        12楼2006-06-12 18:39
                        回复
                          找到Config文件,单击鼠标右键,点选打开方式,再调整到记事本上

                            其他版本CS1.6,直接进入文件夹即可看到

                            请在控制台,或者Config文件中,添加如下命令:

                          rate 20000 
                          cl_updaterate 101 
                          cl_cmdrate 101 
                          fps_max 101
                             *前三个参数请根据自己的网络情况自行调节,此提供的参数是LAN比赛设置。最后fps_max参数一定要调整到100以上。CS默认的fps_max是70,所以即使所以硬件达到要求,FPS仍然不能达到99/100。

                            若机器显卡等各项配置不高,请再选择使用以下命令,这些命令不推荐使用:(资料来自于网络)

                          cl_himodels  禁用高画质模型,从而提高fps,默认为0 
                          fps_moden  设定在网络联机时的最高fps数值。如果设成0,那么这个参数会使用fps_max的数值。 
                          gl_cull   激活后,只对可以看到的画面进行渲染。设成0的话将降低fps值。 
                          gl_clear   如果设成1,那么将会金币引擎对画面上各个模型连接的部分的连贯渲染,这样画面感觉上会变得断裂,但可以提高fps值 
                          gl_lightholes  禁用光洞效果,提高fps值 
                          gl_max_size  设定贴图材质的最大解析度。cs1.1版这个数值默认为512x512,为了fps,还是改成128吧。 
                          gl_playermip   设定玩家模型的贴图效果,选择0 最好效果 (默认值);选择1为一般效果;选择2为最差效果。也可以试试设成2,这只会使玩家的制服看上去有些模糊不清,而颜色也混成一团,不过这不会影响你的瞄准 
                          gl_picmip   这个参数非常重要,调整它甚至可以带来20帧的提高,它的默认值为0 
                          gl_round_down  这个参数涉及贴图尺寸,默认值为3,这个值设得越高,画质越差,而fps也就越高 
                          gl_smoothmodels  禁用对玩家模型的光滑处理,从而提高fps 
                          gl_texturemodel  此参数用于设置透视效果。它的调节范围,从最差画质(最高fps)到最优画质(最低fps)依次如下: 
                          gl_nearest_mipmap_nearest 
                          gl_liner_mipmap_nearest 
                          gl_nearest_mipmap_liner 
                          gl_liner_mipmap_liner 
                          只设置gl_nearest,删除mipmap效果可以大幅提高fps,如果设成gl_liner则可以在稍损fps值的基础上提高画质 
                          gl_wateramp   用来设置水纹效果,改成0以后水面将永远保持平静,从而赚取fps 
                          gl_ztrick  扩展渲染参数,只要针对3dfx显卡及其它一些显卡,可能会导致旧显卡出现错误。一般来说,设置成1。 
                          mp_decals   用以控制血花四溅和墙上的弹孔效果,设成0 
                          max_smokepuffs   用以控制烟雾表现效果,设成0 
                          max_shells   设定同一时间内出现在屏幕上的弹壳数目,还是设成0 
                          scr_conspeed  调整控制台弹出的速度 
                          r_decals  设定血花或者墙上的弹孔数目,这个值不可高过mp_decals设定值 
                          r_drawviewmodel  设成0可提高fps并增大视野范围 
                          r_dynamic  动态光影,一定要关闭 
                          r_mirroralpha  反射效果,也要关闭 
                          r_mmx   在游戏中使用mmx函数,pentumii或者pentumiii的玩家可设置成1。使用赛扬、amd或者cyrix玩家只能设置成0。 
                          violence_ablood、violence_agibs、violence_hblood  这些参数用以控制游戏中的各种暴力表现效果,例如血花四溅等等,关闭它们可以赚取一些fps。 
                          gl_picmip  数值越高,画质越差,但是可以大幅提高fps,其数值范围从0到4。需要注意的是,在cs里,如果设定成1,那么在狙击模式下画面会十分难看,而设定成2则画面几乎无法接受。但是在正常模式下则尚能忍受。
                          *再次重申:请在实在无法容忍机器的情况下再使用,强烈不建议使用这些参数


                          13楼2006-06-12 18:39
                          回复
                            网络速率

                              大多数人对于他们需要用到哪种网络速率并不清楚……那么,如下方法可以得知哪种速率最适合你:

                              在不引起网络阻塞/丢包的前提下,你能达到的cl_cmdrate和cl_updaterate参数的最高值即为你需要的速率(不高于101)

                            同样,把网络速率设为服务器允许的最大值:

                            *如果sy_maxrate是10000,你应该使用“rate 10000” 
                            *如果sy_maxrate是0,sy_lan是0,你应该使用25000 
                            *如果sy_maxrate是0,sy_lan是1,你应该使用10000或者9999。 
                            如果sy_maxupdaterate是30(1.6的默认值),那么你应该使用30 updaterate。否则你会发出多余的数据包。
                               注意:当连接到一个专用服务器(即服务器上不运行CS客户端程序)时,在控制台输入sy_commands命令不会显示服务器的速率。仅仅只显示假定你要建服务器的话,会使用怎样的速率。

                            ex_interp:别太担心interp参数。他不再给玩家便宜,只是一个基本的与网络有关的指令,就像cl_cmdrate一样。在此我不再赘述ex_interp和cl_updaterate参数。你只需知道每次你输ex_interp 0修改interp参数的时候,半条命游戏都会为你自动设置最优的interp。


                            14楼2006-06-12 18:40
                            回复
                              dddddddddddddddddddddddddddddddddddddd


                              16楼2006-06-13 18:43
                              回复