找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 4148|回复: 5

【游戏开发】游戏体验与流畅度

[复制链接]
发表于 2018-8-17 19:28:50 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
游戏的流畅度对玩家的游戏体验有非常大的影响,一款运行流畅的游戏会让玩家觉得很爽快,而一款拖泥带水的游戏则会让玩家感觉玩游戏本身会拖慢玩家的大脑速度,让人感觉困扰。就游戏开发上来说,我有以下几个非常直观的体验:

1、垂直同步对游戏流畅性体验的影响很大。开垂直同步会让帧数足够的游戏显得很流畅,能极大地提高游戏体验。然而,如果你的帧数无法达到显示器本身的刷新率,不管你每秒渲染59帧,还是30帧,还是25帧,都会让画面显得不流畅。假设你的显示器刷新率特别特别高,是每秒120帧,但你的游戏则是标准的每秒60帧,虽然你的游戏的刷新率与市面上常见的显示器的刷新率很符合,但却会在刷新率为120 Hz的显示器上显得很卡顿。

也就是说,你的游戏本身的画面刷新率,要和你的显示器的刷新率吻合,你才会感觉到流畅。就算你的显示器只有25 Hz的刷新率,但你的游戏也是25 Hz的刷新率的话,你就会觉得游戏很流畅,不需要到达60 Hz,甚至120 Hz。

另外,包括我的世界Minecraft在内的不少游戏都有限制帧数的功能,但这个与垂直同步无关。它只是限制帧数,但并不能做到真正的垂直同步,也无法避免画面撕裂(即游戏刷新到一半的时候屏幕却突然刷新了,游戏和屏幕并不同步,你看到的画面有一部分是旧的,没有被及时更新)。限制帧数的功能与垂直同步的功能有根本性的区别,建议开启垂直同步,并把限制帧数的设定调整为你的屏幕的刷新率的两倍左右。

也有人会问:我就是怕游戏的刷新率赶不上屏幕的刷新率,我才不开启垂直同步的呀。但事实上,如果你不开启垂直同步,这些游戏在运行的时候占用的资源会特别多。比如Halo 2这样的游戏,它可以在装备了GTX 970显卡的机器上达到400 Hz的极高帧数,但它每一帧都会通过DirectInput向鼠标查询位移距离,而鼠标却没办法处理真么快的查询过程,于是告诉游戏:我没有被移动。最终导致的效果就是:鼠标瞄准的体验非常不流畅、不灵敏。此外,由于显示器本身屏幕的刷新率并没有400 Hz那么高,通常都只有60 Hz,多出来的帧画面并不会被显示出来,而是会被丢弃。所以不开垂直同步是一种极其耗电而且占用计算机资源的行为

但有的游戏,比如OSU!这样的,它是单线程的游戏,处理游戏规则的逻辑与绘制游戏画面的逻辑交替运行,开启垂直同步会导致这类游戏的规则处理不及时(因为等待屏幕刷新的过程中它并不对你的输入进行处理)。并且OSU!是音游,对时间敏感度很高。这导致你开启垂直同步以后,它给你统计的游戏表现(或者说分数)就很不如意。这是程序员的锅,不对垂直同步做兼容的设定本身就是对游戏开发不够了解的表现之一。(我会在OSU!解决了这个问题以后再更新帖子)

古时候的游戏,比如生化危机4,帧数被限制在30帧,虽然帧数一直都很稳定,但玩家还是不会觉得这游戏有多么流畅,虽然也不会觉得这游戏卡顿。而如果这样的游戏配合刷新率只有30 Hz(或者只有25 Hz)的显示器的话,则会让玩家感到非常流畅。因为生化危机4本身并不是PC游戏,而是主机游戏。它是被移植到了PC端的主机游戏,所以保留了自身对帧数做限制的设定。

2、有的游戏会在设置里允许玩家勾选诸如“显示帧数”“显示FPS”等功能。这个功能可以有,但我认为它不应该被默认开启,因为玩家会在看到帧数不够60帧,或者不够自己显示器刷新率的情况下,直接感受到不流畅的体验。因为屏幕上显示的帧数会暗示玩家:你的电脑性能不够,所以你的帧数不够。

事实上,对于非常在意游戏内表现的玩家而言,一旦在游戏内表现不佳,玩家会直接甩锅给游戏或者电脑,认为是电脑卡顿、游戏优化不佳等。有的玩家会直接砸电脑。然而实际的情况或许是:程序员并没有预料到玩家的电脑的实际情况非常复杂,玩家的电脑或许中了一些挖比特币的病毒,或者有些杀毒软件在玩家电脑里扫描磁盘等。除此以外,程序员调试的时候,游戏的帧数确实就达不到显示器的刷新率,但程序员认为“这是我可以接受的”,因为程序员在调试游戏的时候,根本用不着和对手玩家较劲,也不会像竞技玩家那样经历一整天打不过对手的挫败感。

我认为比较合适的做法有两个:一个是尽量不要让玩家去看到游戏的帧数到底咋样,默认不显示刷新率,并且把开启显示刷新率的设置选项隐藏到最难找到的位置。另一个是对于画面与游戏规则处理方面,显示画面用一个单独的线程,处理游戏规则和玩家输入,则使用另一个单独的线程。就算画面卡顿了,游戏规则也要及时处理。这一点Minecraft做得还算不错,但OSU!就需要改进了。
回复

使用道具 举报

发表于 2018-8-17 20:37:35 | 显示全部楼层
本帖最后由 sml2 于 2018-8-17 22:54 编辑

感觉不全是帖子里讲的,有没有这种可能,不锁帧计算资源始终保持着最大限度的运行,中间虽然丢了无法来的及刷新的帧,但一直保持100帧以上,用户体验流畅;但是锁帧的时候正常运行,体验是和刚才一样,然后更换场景时需要调度更多的计算资源时,因为不能立即获取到计算资源,导致帧数变成了50多,感觉到卡顿?我玩垃圾DNF就有这种感觉,锁帧就卡,不鸟帧数就流畅。。是不是错觉
回复 赞! 靠!

使用道具 举报

 楼主| 发表于 2018-8-17 23:00:34 | 显示全部楼层
sml2 发表于 2018-8-17 20:37
感觉不全是帖子里讲的,有没有这种可能,不锁帧计算资源始终保持着最大限度的运行,中间虽然丢了无法来的及 ...

锁帧导致游戏更换场景时卡顿?我觉得锁帧和更换场景一点关系也没有啊,以及,DNF的锁帧是不是设计上有问题?就算是用Sleep(1)的方式丢掉时间片,也不至于误差大到帧数掉到50,所以基本上认为是DNF的设计问题。

此外,你没有仔细看正文内容,我说的是,锁帧是锁在屏幕刷新率两倍左右的帧数,比如我显示器是60 Hz的,我就锁到120 Hz,不让帧数超过120 Hz。而根据你回答的内容,你是说不锁帧的时候,能保持在100 Hz以上,锁了就达不到?如果是这种情况,依然可以甩锅给DNF程序员,因为锁帧不是这样用的。
回复 赞! 靠!

使用道具 举报

发表于 2018-8-19 21:15:41 | 显示全部楼层
首先 做游戏需要灵感(不然被别人骂抄袭)
然后 你得给游戏引擎开发商钱
然后 做网络游戏需要购买服务器(而且微软又快出win10月收费,win7也快不支持更新)
之后 你还要维护服务器 服务器安装更新
最后 你要是发行到steam之内的平台上 你还得给他们钱

事实证明会编程不一定有用
回复 赞! 靠!

使用道具 举报

 楼主| 发表于 2018-8-20 13:04:54 | 显示全部楼层
套路 发表于 2018-8-19 21:15
首先 做游戏需要灵感(不然被别人骂抄袭)
然后 你得给游戏引擎开发商钱
然后 做网络游戏需要购买服务器( ...

这是业余游戏开发者的做法,因为游戏引擎不就是自己写的最可靠么?
有灵感也逃不掉被骂抄袭。
做网游需要购买服务器,与Win7、Win10有什么关系?
服务器安装更新难道不是一句yum update -y就可以搞定的么?
发行到steam,与他们合作,有啥不好么?

事实证明不会编程,连这些鸡毛蒜皮的事情都搞不定。
回复 赞! 靠!

使用道具 举报

发表于 2018-8-20 18:41:57 | 显示全部楼层
本帖最后由 套路 于 2018-8-20 22:36 编辑
0xAA55 发表于 2018-8-20 13:04
这是业余游戏开发者的做法,因为游戏引擎不就是自己写的最可靠么?
有灵感也逃不掉被骂抄袭。
做网游需要 ...

我说的是钱 服务器至少上万了 服务器用老版本免费不容易被攻击 3D游戏大多是用虚幻的 更新游戏资源也要更新服务器资源啊,不是那个更新
回复 赞! 靠!

使用道具 举报

本版积分规则

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-12-4 01:51 , Processed in 0.037437 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表