文档章节

游戏性能提升降帧处理方式

j
 jun9152143
发布于 2017/06/27 14:25
字数 936
阅读 252
收藏 0

码上生花,ECharts 作品展示赛正式启动!>>>

游戏性能提升降帧处理方式_游戏开发_游戏设计_性能提升_课课家

      什么是降帧&为什么降帧?

  一般情况下我们为了提高整个游戏的体验,所以我们一般会将游戏的帧数(每秒钟刷新多少次)设置的比较高。一般情况下,我们的游戏所有的代码都是一帧执行一次。为了让每一帧都变成真的关键数据帧。不过,部分手机能性能可能跟不上,或者计算量太大的情况下,手机的运算速度不能够支持的情况,过高的性能消耗就会拖慢运算的速度,让一秒内没有办法打到满帧。所以就会觉得游戏变得卡顿。

  其实一部分逻辑并没有必要每一帧都去执行,可以将他们隔几帧运行一次也不是不可以。比如说伤害值的运算,伤害应该与游戏运营的帧数无关,比如每0.1秒执行一次伤害代码,那么在满帧60帧的情况下,其实每6帧执行一次就OK。

  我们之所以希望能提高帧数,是为了制造流畅的感觉。但是降帧则会违反这种感觉。所以游戏的帧数不能降低,或者在准确一点来说,游戏的View的帧数不应该降低,减低的应该是逻辑帧数。

  或者有朋友会问,如果我们的程序最少的逻辑间隔时间是0.1的话。所有的游戏逻辑都是间隔0.1判定一次不就好了?这不是很简单的事情?但实际上事情并没有那么简单。一般情况下我们人眼的录入认为是16帧每秒。

  现在的理论上满足16帧的游戏,会显得更加的流畅了,我们知道一个16帧的游戏,并不能让人觉得非常流畅。为什么呢?其实原因也非常简单。人看到的东西会有预判,现在你看到这个怪物在水平移动,如果说游戏表现出来的效果与你的预判是保持一致的,也许你会觉得这样是显得非常流畅的,但是如果怪物的移动跟你的预判不一致,那么你就会觉得这个游戏并不流畅。

  那么该怎么去降帧?

  在文中已经是提到,我希望将游戏的帧数分为两种,一种是逻辑帧,另外一种View帧。View帧是满帧在跑的。而逻辑帧则是间隔执行的。也没错。上文中已经提到了,简单的区分这两种更新的实际也并不合适。因为依然会有一点的卡顿,那怎么才会不卡呢。那就可以将数据量分摊到各个帧里边,这样也就达到要求了。

  怪物会有两种跟新模式

  1、View更新:用来更新他的位置,动画一类

  2、用来更新行为:攻击、打出伤害等

  主循环会有多个对象列表比如说6个

  那么主循环会将每一次的Update标上记号。调用所有的对象的View更新方法和与标记相对应的对象列表的逻辑更新。

  这样就将所有的逻辑分摊到了各个帧数里边,让各个帧数更平均一些,最后是达到流畅的目的

  对游戏感兴趣的朋友们可以在这方面深入的进行研究,游戏开发设计制作是属于一个比较复杂的项目,要想对游戏精通,还得从兴趣的基础上进一步的优化。

© 著作权归作者所有

j
粉丝 0
博文 113
码字总数 84802
作品 0
南通
私信 提问
加载中
请先登录后再评论。
5G 十项全能、搭载麒麟 820 芯片,1899 元起的荣耀 X10 来了!

5 月 20 日,荣耀旗下超能科技 X 系列首款 5G 机型荣耀 X10 正式发布,搭载麒麟 820 5G SoC 芯片、支持 9 个 5G 频段、SUL 超级上行技术、旗舰级 RYYB 高感光三摄、鹰眼级 AI 抓拍、90Hz/18...

CSDN资讯
05/20
0
0
当绘制的时候,是如何显示到屏幕的?

等等都是大家常用的渲染器(Path Render, 这里的渲染器特指最终会通过算法做像素染色. 而不是不是Web前端提到的, 两者之间存在着本质的差异),这些渲染器把程序提交的渲染Command(例如:D...

breakerror
2018/06/04
0
0
荣耀10X有哪些亮点?今天来聊一聊

在前几天刚刚完成历史首次珠峰峰顶5G连线的荣耀X10,这些天来备受科技圈关注!那么这款由荣耀10X全新升级后的荣耀X10究竟有哪些亮点呢?今天就来和大家聊一聊~   作为首款在珠峰峰顶进行5...

hanniuniu11
05/31
0
0
《王者荣耀》技术总监复盘回炉历程:没跨过这三座大山,就是另一款MOBA霸占市场了

如今已经大获市场成功的《王者荣耀》一直是业内各方关注的对象,而我们也知道这款产品在成为国民级游戏之前,也遇到过一段鲜有人知的调优期。也就是在2015年8月18号正式不删档测试版本推出之...

osc_11wdnyu0
2018/03/27
6
0
unity3d Drawcall优化方法

unity3D 对于移动平台的支持无可厚非,但是也有时候用3D 开发出来的应用、游戏在移动终端上的运行有着明显的效率问题,比如卡、画质等各种问题。自己在做游戏开发的时候偶有所得。对于主要影...

咖喱酱_zero
2016/12/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JDBC:ResultSet Types

ResultSet Types 用于确定ResultSet的某些特征和功能。 ResultSet.TYPE_FORWARD_ONLY 只能调用 next,不能调用 previous 。否则报错 ResultSet.TYPE_SCROLL_INSENSITIVE 能调用 next/previou...

mrsuperli
昨天
7
0
Cesium笔记(3):基本控件简介—ImageryProvider地图瓦片地图配

cesiumjs中可定制多种图层,可以使用互联网上很多地图提供商的图层数据,也可以使用自己的地图数据。Cesium支持多种标准化格式的GIS瓦片服务,可以把栅格图层绘制到地球的表面——cesiumjs的...

zhoulujun
昨天
15
0
跟小伟一起学习类加载机制

我们在学习 java 基础的时候,从宏观上了解了一个类到运行大致是:.java 文件通过 javac 编译器编译得到 .class 文件,在用到该类时,jvm 会加载该 class 文件,并创建对应的 class 对象,将...

niceyoo
昨天
8
0
Electron整合React使用搭建开发环境

Electron整合React使用搭建开发环境 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 简介 用于构建用户界面的 ...

归子莫
昨天
17
0
MyBatis常见面试题和答案

MyBatis是什么? MyBatis 是一款持久层框架,一个半 ORM(对象关系映射)框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。...

JaneRoad
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部