文档章节

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

j
 jun9152143
发布于 2017/06/27 14:25
字数 936
阅读 10
收藏 0
点赞 0
评论 0

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

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

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

  其实一部分逻辑并没有必要每一帧都去执行,可以将他们隔几帧运行一次也不是不可以。比如说伤害值的运算,伤害应该与游戏运营的帧数无关,比如每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
南通
当绘制的时候,是如何显示到屏幕的?

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

breakerror ⋅ 06/04 ⋅ 0

复盘王者荣耀手游开发全过程,Unity引擎使用帧同步放弃状态同步

http://king.shandian.biz/88.html 如今已经大获市场成功的《王者荣耀》一直是业内各方关注的对象,而我们也知道这款产品在成为国民级游戏之前,也遇到过一段鲜有人知的调优期。也就是在201...

anypkv ⋅ 2017/11/08 ⋅ 0

游戏引擎开发系列——消息循环篇

写了很多关于IOCP和OLEDB的文章,今天换个话题,不然很多网友都以为俺就是一服务端程序,其实我真正的身份是——程序员,什么都写的程序员,呵呵呵。 这回讨论的话题主要集中到游戏引擎上来,...

Matrix4X4 ⋅ 2012/04/18 ⋅ 0

unity 游戏性能优化

游戏性能问题主要涉及到3个方面:1 CPU2 GPU3 内存 CPU 方面主要降低单帧的耗时,以及避免出现卡帧cpu问题主要解决思路, 将复杂任务分解到多帧中去; GPU问题,降低游戏的drawcall,降低游戏...

李勇2 ⋅ 2015/10/12 ⋅ 0

游戏性能测试

fps是游戏中的重要指标,但是fps只是一个平均统计值,而不能反映游戏中突然出现的毛刺,这些毛刺会带来游戏卡顿。 因此需要统计每帧生成时间,使用画图的方式,绘制出点图进行分析。 例如下图...

李勇2 ⋅ 2016/09/02 ⋅ 0

Unity使用ECS架构entitas实现ui响应及回放系统

前言 最开始听说了守望先锋在开发的时候,使用了一个ECS的框架,就非常感兴趣。 ECS是一个可以基于现有的游戏引擎开发的架构,它是Entity、Component、System的集合简称,在游戏开发中,com...

qq992817263 ⋅ 2017/10/03 ⋅ 0

Pygame 图形及动画讲解

文章所有内容均截选自“HowieZhao”发布在实验楼上的教程【基于Pygame开发贪吃蛇和俄罗斯方块】第一节部分内容,未经允许,禁止转载; 本文讲解Pygame的常用对象及其操作,包括图形、动画;第...

实验楼 ⋅ 2017/11/14 ⋅ 0

Sprite Kit编程指南(0)-简介

说明:此系列教程翻译自Apple开发者中心的官方文档《Sprite Kit Programming Guide》,利用Chome浏览器的自动翻译功能作初译,然后在一些语句不顺或容易造成误解的地方作局部修正。方便英文不...

长平狐 ⋅ 2013/08/21 ⋅ 0

MOBA手游《小米超神》案例精讲

原文链接:https://blog.uwa4d.com/archives/2130.html 今天我们为大家带来由福州朱雀网络研发的MOBA手游《小米超神》的UWA测评报告分析。该游戏在不同配置的移动终端设备上,无论是画面表现...

UWA4D ⋅ 2017/11/22 ⋅ 0

游戏性能检测工具--Fraps

Fraps 是一款 游戏辅助 + 媒体录制 软件,用它可以轻松了解机器在运行游戏时的帧数,从而了解机器的性能!另外它还具备在游戏中的截屏和录像功能,可以方便的进行屏幕截图和视频捕捉,网上许...

匿名 ⋅ 2010/03/29 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

聊聊spring cloud的RequestRateLimiterGatewayFilter

序 本文主要研究一下spring cloud的RequestRateLimiterGatewayFilter GatewayAutoConfiguration @Configuration@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMi......

go4it ⋅ 46分钟前 ⋅ 0

Spring JavaConfig 注解

JavaConfig注解允许开发者将Bean的定义和配置放在Java类中。它是除使用XML文件定义和配置Bean外的另一种方案。 配置: 如一个Bean如果在XML文件可以这样配置: <bean id="helloBean" class="...

霍淇滨 ⋅ 53分钟前 ⋅ 0

Spring clound 组件

Spring Cloud技术应用从场景上可以分为两大类:润物无声类和独挑大梁类。 润物无声,融合在每个微服务中、依赖其它组件并为其提供服务。 Ribbon,客户端负载均衡,特性有区域亲和、重试机制。...

英雄有梦没死就别停 ⋅ 55分钟前 ⋅ 0

Confluence 6 重新获得站点备份文件

Confluence 将会创建备份,同时压缩 XML 文件后存储熬你的 <home-directory>/backups> 目录中。你需要自己访问你安装的 Confluence 服务器,并且从服务器上获得这个文件。 运行从 Confluence...

honeymose ⋅ 59分钟前 ⋅ 0

informix的常用SQL语句

1、创建数据库 eg1. 创建不记录日志的库testdb,参考语句如下: CREATE DATABASE testdb; eg2. 创建带缓冲式的记录日志的数据库testdb(SQL语句不一定在事务之中,拥有者名字不被用于对象的解...

wangxuwei ⋅ 今天 ⋅ 0

matplotlib画图

最简单的入门是从类 MATLAB API 开始,它被设计成兼容 MATLAB 绘图函数。 from pylab import *from numpy import *x = linspace(0, 5, 10)y = x ** 2figure()plot(x, y, 'r')...

Dr_hu ⋅ 今天 ⋅ 0

RabbitMQ学习以及与Spring的集成(三)

本文介绍RabbitMQ与Spring的简单集成以及消息的发送和接收。 在RabbitMQ的Spring配置文件中,首先需要增加命名空间。 xmlns:rabbit="http://www.springframework.org/schema/rabbit" 其次是模...

onedotdot ⋅ 今天 ⋅ 0

JAVA实现仿微信红包分配规则

最近过年发红包拜年成为一种新的潮流,作为程序猿对算法的好奇远远要大于对红包的好奇,这里介绍一种自己想到的一种随机红包分配策略,还请大家多多指教。 算法介绍 一、红包金额限制 对于微...

小致dad ⋅ 今天 ⋅ 0

Python 数电表格格式化 xlutils xlwt xlrd的使用

需要安装 xlutils xlwt xlrd 格式化前 格式化后 代码 先copy读取的表格,然后按照一定的规则修改,将昵称中的学号提取出来替换昵称即可 from xlrd import open_workbookfrom xlutils.copy ...

阿豪boy ⋅ 今天 ⋅ 0

面试题:使用rand5()生成rand7()

前言 读研究生这3 年,思维与本科相比变化挺大的,这几年除了看论文、设计方案,更重要的是学会注重先思考、再实现,感觉更加成熟吧,不再像个小P孩,人年轻时总会心高气傲。有1 道面试题:给...

初雪之音 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部