为什么帧数能达到上千帧?

看到一个科普coc的帖子,里边扯到tick和动画关系,里边有错误,在这开帖说一下
1动画与大家所说得动画是两个概念,大家说的动画是视频分类,而专业上的动画其实是指cg行业里一个对象的空间变化过程,而动画由于时代技术的原因有两种,第一种是传统的手工绘画,提前设定好帧数来作画,第二种是新时代的计算机动画,只需要让动作时间符合常理即可
比如说:A打了B一巴掌,这一个过程
如果是手绘形式,就得提前设定好帧数,考虑到手工工作量与人眼识别能力,一般12帧,也就是这一个动作从开始举起手到打中B整个过程细分12段来手动绘制,帧数确定无法更改,(上学时有人试过在书本右下角画小人吧?跟那个一样)
如果是计算机动画,很简单,开始举手设定关键帧,打中B得脸设定关键帧,ok完事了,中间的过程计算机自动平均细分,这一个过程你可以无限细分,你可以将这个过程出1000帧都可以,1秒播放完1000帧。不过细分简单,渲染难,一张图如果渲染1分钟,如果用国际通用的电影帧速率24来算,1秒需要电脑渲染24分钟,最后结果就是24张图,此时的结果与手绘一样,都是图片,最后经过合成软件变成视频,上传网络,就是大家看到的网络视频,帧数确定无法更改。

不一样的来了,游戏是实时渲染的,画质相对影视化渲染细节上差了很多,所以才能实时渲染

也就是上边动画起始和结束帧设定好之后,这个动画源文件是无限细分得,不走影视渲染这一步直接导入游戏引擎里,那么此时只要你电脑硬件足够高,这个动作过程,你可以达到60  120  240  480甚至更高的帧速率,且这480帧每一帧都不同,是这个动作均分了480份,这点记住下边会对比
如果是手绘的12帧放到游戏引擎帧速率多少?也是480帧,但不同来了,由于源文件就是12帧,固定了,没办法细分,因此这480帧/12=40,也就此时电脑显示的前40帧实际是手绘的12张图里得第一张图,只不过显卡对着这一张图实时渲染了40次,(可以想象成你女朋友摆个pos你对着咔咔咔连续拍摄40张,她换个姿势你又咔咔咔40张),以此类推,440-480帧是手绘12张图的最后一张。
好了,手绘动画与计算机动画区别明白了吧,这也是技术带来的变革,在这个例子里,tick并没有参与,
游戏里动画是实时渲染,渲染多少帧是硬件决定的,只要大于60帧,你看到的画面都不会有什么肉眼可识别得变化,(电影大于24帧人眼就看不出变化,原因复杂不细说,而这些复杂得原因也是3d电影烧钱得一个原因,要处理24张图每一张图的仿人眼观看来达到24帧就能相对游戏60帧效果,这也造就了3D电影一秒画面一台机需要渲染两天计算成钱大概几百到上千/s的成本)

tick是数据交换的“帧数”,不影响动画本身帧速率,动画本身是无限细分得,,tick30,那么一秒数据交换就是30次,

游戏过场动画与剧情动画是限定帧速率得,游戏之间不同,常用就是24-25。

就跟公交车一天12班,你来晚了来早了都坐不上,一天就这几班车,且必须在指定时间上车,,这就是tick,
而你从家里跑到公交车站这个速度,你想多快就多快,这就是动画,
而你坐上公交车了,路上堵了,并且堵了一天,你都还在车上没动一步,但是今天剩下得11班车都按时到了,堵在路上得你就是数据丢失,而马路畅通与堵塞就是网络状态,状态好你最大也就一天坐12趟,班次就12你不可能坐13趟,但是可能做小于12趟。如果马路不堵死,但是车多,就会造成你得车晚班,这就是网络延迟。
而你在路上看到得户外广告大屏幕播放的广告就是 过场动画和剧情动画,画面里的速度是设定好了无法改变。
tick可以改变,但是游戏里很多功能的tick不同的,所以改动一次基本要动很多东西,所以基本游戏设计之初就设定了tick,如果不够用直接重做一款,而上一款很多素材代码等可以用的直接拿过来修修改改就用了。比直接改装原来的快且划算,游戏更新换代很快,如果改原装游戏,可能废了老大得劲tick改成120了,游戏画面也跟不上时代了(参考某射击游戏,30tick改成120tick画面没啥改变,也没啥人玩),大家看腻了,并且一个游戏刚开始都觉得很棒,真的造出来会发现有很多缺点,下一次重做就吸取经验把上一代缺点弥补了。

最后,大家所看到的所有画面效果其实都可以不要,游戏依然运行,你按技能依然可以施放,如果有怪依然可以造成伤害,但是你看不到,只能后台看到,动画就是动画与数据只有匹配关系,没有从属关系,匹配关系就是,让你的动作速度与产生伤害的冷却一致,保证不会出现,人物刚举手怪就死亡得画面割裂感。给你显卡显示器设置4帧/s,你得技能放出去你在画面上都看不到技能,但是怪物死了,与你60帧速率打怪一个速度,只影响你观看
所以游戏里得数据探讨都别扯动画,帧速率。只考虑tick和网络延迟,
什么帧速率影响触发,影响伤害的话别说了,都不是一个东西,

一切动态静态画面只是给数据套了一层壳。否则让你对着一堆数据玩,你也提不起兴趣来。

理论上,要做得动画和伤害掉血 一致的物理引擎,是要考虑服务器计算tick,但是这会产生一个问题,如果在tick前,10ms网络延迟才上报你这边还在攻击,并且触发了暴击的投射物,那么有可能服务器那边10ms还没来得及汇总数据状态用来判断是否应该触发这个暴击动画并产生投射物,并且击中怪物降低对应的血量的动画,然后立即反馈给你。

这中间会有很多因素造成延迟问题。如果都考虑进去,画面和掉血要一致的话,就不是简单的档位能解决的问题了。会产生很多错位丢失画面。

所以服务器那边可能不是按照tick去计算档位的冷却,所有的数据都按照最初的 150ms去计算触发伤害,然后客户端这边也按150ms来一直保持呈现投射物动画,并且击中怪物。

这时候会有个错位信息,就是怪物的掉血要经过服务器tick的验证,然后报告给你才最终呈现掉血了,那么是否会出现投射物击中怪物了,但是服务器那边还没报告过来,没有呈现掉血,这个掉血的频率是否会和实际动画呈现有很大的毫秒误差,以至于每帧图像能看出差别而影响体感?这是一个需要平衡调整的过程。为了减少运算量,不可能无限接近真实物理系统,只要人眼看不出大的差别就行。而且在网络延迟很高的时候,服务器经常会汇总几次击中后的掉血给客户端呈现,所以很有可能服务器没有必要每个tick都去判断触发情况,并反馈对应的数值,只需客户端这边脱机(比如网络延迟10ms、20ms、30ms间隔)呈现动画即可。
那么投射物的角度和路线,以及和怪物碰撞的数据应该如何工作,按tick的165ms还是150ms来作为中间判断值?很显然,服务器会在投射物(按原所有应该触发的数值量)最终是否会碰撞怪物时计算伤害,这中间的暴击次数,触发次数做一个汇总判定,如果这个tick期间有收到客户端的来信,就反馈对应的掉血数据,而不是去反馈你是否打出投射物的判定,这个判定已经由客户端上报,服务器只需校验。

客户端:150ms我冷却好了,投射物动画已经放出去了。
服务器:165ms你刚才没冷却好,现在冷却好了,你可以播放动画了。
客户端:我去你大爷的,我早就放出去了,告诉我掉血动画是否合理就可以。

服务器的tick,这个我不太了解它要干什么,按我的理解,就是每个tick都会处理接收来自网络的位移变量,比如1tick接收到你的位移,触发的投射物飞行矢量,开始计算碰撞数据,并反馈。2tick接收到队友的位移变化,投射物变化,这个区间你的动作没有新的变量进来,仍然按1tick中的矢量位移来计算,并反馈。5个tick165ms后虽然你已经冷却好,没有接收到你的数据,6个tick198ms期间,接收到汇总数据说在5tick期间有一个触发,是计算还是抛弃(如果是怪已经被击败肯定要抛弃,因为已经反馈给队友),如果怪/PVP玩家 还活着是从150ms处计算(客户端的数据包),还是从165ms处(服务器要修正这个数据包?)开始计算。如果在198ms处反馈给PVP的队友,估计他看到的是有个加速动画,瞬间被多个投射物击中秒杀,也有可能。

也有可能实行两种机制,国际服的按实际冷却来触发,因为我们玩的时候,网络延迟仍然可以动(动画时空是线性的),只是没有反馈,反馈来的时候,会加速动画。而国服要等到反馈才能动,就有可能是165ms这种机制,虽然也有加速多个TICK动画的情况出现。国服为什么刚开始时和国际服一样,后来搞成需要反馈才能动?也许是因为国服的小霸王需要休息间隔也不一定的。


理论上,要做得动画和伤害掉血 一致的物理引擎,是要考虑服务器计算tick,但是这会产生一个问题,如果在tic ...

蒽,动画什么的还有触发都在客户端计算和播放,服务器就是判断。这也是有时候突然断网,你人物依然可以走可以放技能,啥都可以干,但是怪不掉血,
而服务器处理你上报的数据1秒最多处理30次,会有一点点偏移但是你肉眼看不出来,
还有交易,捡东西 扔东西 说话等
简单来说,所有的你能看到的画面过程全是客户端在计算和播放,客户端就是你电脑这边,不然30g客户端干嘛的?里边包含了所有游戏内容,里边有猎手等各种极品道具,就说时装。其实你客户端里边已经有了,你只要充值,点击购买,就给你看,不充值不给你看到。

你这边看到的所有画面效果都有对应不断上传给服务器如果没问题就返回结果,返回值就是1,因此不会有延迟,因为一个1太小了,就是1g网络也是瞬间传回,所有判定扔到服务器都是0/1,0就是不通过,1通过,这个好处就是信息处理非常快,就一个字节,1秒能处理30次,这30次指的是同一个数据反复上报,比如你1秒用一个技能30次,它都能判断成功,但是你1秒按了31次,抱歉有一次它没接到。
并不是说1秒只能处理30个不同问题,服务器很厉害的核心很多,可以同时处理超级多数据,

假如档位存在,我觉得有三中场景。
1.档位存在于游戏的后端,我不理解服务器为什么是周期性的处理,而且周期是1/30(帧)=0.033秒,就服务器而言,33ms是相当长的一段时间了。从硬件的角度上看,每33毫秒一个处理数据的波峰,对硬件也是一个挑战。
2.档位存在于前端。游戏开发我是外行,我有个疑问,假设档位存在,它解决了什么问题。
3.档位存在于前后端。基本是前两点的总和。

coc的档位本来我就个人看不明白,跟服务器都扯上关系了,无非是延迟,延迟不就是来的晚一些,处理后发的晚一些,个人理解就是你攻击间隔要比技能冷却要稍微慢一些,每次攻击可以保证技能已经冷却好了,这样才能保证每次攻击可以有效匹配上技能释放,如果技能cd比攻击间隔慢,就会导致第一次攻击触发技能,第二次攻击因为cd还在冷却就会丢失一次攻击频率,这样不就降低了输出

}

  说到游戏中的“帧数”,玩家们对帧数普遍最直观的感受就是,帧数高等于画面好,动作清晰流畅无模糊残影;而帧数过低或跳帧(号称60帧的游戏,有时会因为技术问题而频繁在30帧与60帧间切换)不仅会导致游戏画面变差,甚至让一些玩者产生头晕恶心等强烈不适感。在高清主机上,帧数可谓是决定画面优劣与游戏体验的关键,因此一直是玩家们格外关心的话题。下面我就这个话题展开讨论。想了解更多相关资讯请持续关注我们应届毕业生培训网。

  从理论上来讲,一个游戏的确可以以45帧运行,不过当你设计一个游戏时你不会想要从30帧跳到45帧,因为那样你需要渲染1.5倍的帧数,而直接双倍帧数显然效率更高。

  “实际上,现今很多游戏引擎都和帧数都是独立运行的——这表示在很多情况下代码都是以每一帧来运行的,或者说在物理间隔中运行,又或者在独立于帧数之外的物理间隔内运行。不过现在有极少部分游戏是以每帧来计算和移动的,所以不管你玩COD是以12帧或者60帧运行,游戏都需要运用到插值运算:上一帧需要一定的时间去渲染并且我需要这个循环以让这个过程进一步发展。这并不是说如果帧数糟糕你的游戏就运行变慢了。”

  举例:一个赛车游戏以原生30帧运行,不过开发者运用一个mod操作,让其以60帧运行。那么问题在于,这并不是以独立帧运行的,意味着60帧下,赛车的速度达到了双倍。

  而最大的问题在于当游戏出现掉帧时。人眼可以在训练的情况下用某些特定的方式看到一些特殊的东西,所以当游戏在30帧和60帧浮动时,问题就会显得特别突出。开发商锁定30帧的很大原因就是因为这个帧数浮动——在这种情况下游戏以稳定30帧运行要比游戏可以达到60帧但是却不稳定来的要好。

  “很多时候你感觉游戏掉帧都是当你在60帧运行时,突然掉帧(比方说大约40帧),因为你的眼睛已经开始习惯60帧时这一表象突然消失了。如果游戏是以30帧稳定运行的话,事实上看上去要比不稳定的60帧来的过渡平滑。这也是为什么很多游戏都锁定帧数,即使是在PC上。所以开发商们经常说:我们不希望让玩家们只是单纯的玩到高速游戏,因为我们希望游戏保持稳定性和帧数,而不是偶尔达到最高速度。”

  那么最大的问题是,这是否真的重要?不可否认,一个游戏如果以60帧运行的确会看上去过渡更平滑(如果一切都正常运行)——但这并不是必然。如果某个游戏在复杂的环境下有很多即时演算,有时候可能30帧每秒更加实惠,因为如果追求更高的帧数可能会对硬件开发能力造成负担。

  “帧数有时候带有欺骗性。帧数事实上比720p/1080p分辨率要花费更多精力,因为60帧比30帧的渲染效率提高两倍,其工作量要比提升像素大很多很多。关键问题在于你还必须将其保持的.非常平稳。比如说,如果你想要制作一个历史类的游戏运用到法国的开放性世界,基本上你很难将帧数从30提高到60帧,因为你需要对其进行相当程度的优化。”

  另一方面,从720P到1080P虽然也很困难,但是只要在适当的程序设计师帮助下,还是可以达到的。但是如果将一个游戏重新设计以达到60帧呢?Bithell表示那就远远不够。“花费大量的时间在加上一些顶尖的图像设计师,也许可以做到。不过60帧意味着你要多画多于一倍的像素。另外也有一些方面也许玩家甚至都不会考虑到的;比如很多动画引擎需要锁定到每一帧。”

  电影则和游戏不同,基本以24帧每秒运行。而电影为什么可以看起来很平滑过渡主要是因为动态模糊,在这一点上游戏开发商则需要引擎配合。就算有有效办法来解决帧数不稳定的问题,正如Bithell所说,硬件所需要的内存负担也会相对比较高。

  “动态模糊开发成本非常昂贵;你必须要储存很多图像数据,因为你需要渲染像素,然后保存,然后将它们设置到屏幕上,还要取决于显卡和平台机能,非常具有挑战性。”

【解析游戏帧数稳定的重要性】相关文章:

}

我要回帖

更多关于 n卡怎么设置游戏帧数能更稳定 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信