GM游戏的帧率是多少?每帧执行游戏代码的频率是多少?我无法在任何地方找到答案,以便我理解它。有办法改变这些吗?我常常固定60 fps,每帧执行一次游戏代码。这很重要,因为我习惯于在帧定时中编程,这意味着一帧是可以使用的最小时间单位,并且计数器每帧递增(或递减)一次。这也意味着帧速率下降将导致减速而不是跳过帧。我在另一个程序上编程的游戏中的游戏代码基本上运行游戏代码,然后等待VBlank发生再次运行游戏代码。
答案 0 :(得分:2)
让我解释一下通用汽车的运作方式。这很复杂。
当游戏开始时,将调用来自每个对象的游戏开始事件。我相信这发生在创建事件之后。
每(虚拟)帧一次,调用步骤事件。你知道,通用汽车不会将自己锁定在room_speed的任何位置,它会尽可能快地运行。 (如果没有编译。)fps_real显示引擎在任何给定的秒内实际上每秒有多少帧。
所以每一秒,假设处理器和GPU可以跟上room_speed,就会发生room_speed大量的步骤事件。以这种情况为例:
room_speed
是60 fps
是60 fps_real
是758 ObjPlayer
步骤事件。在这种情况下,ObjPlayer
的步骤事件将在该秒内运行60次。
然而,这是一个问题。假设,如果按住键盘空间按钮,则播放器向左移动3个像素。因此,假设游戏全速运行(room_speed
),播放器将移动3 * 60
,或者在这种情况下,在任何给定秒内移动180像素。
但是,假设CPU和/或GPU无法跟上60 FPS。让我们说它保持稳定在30.这意味着玩家每秒仅移动3 * 30
或90像素,使游戏看起来比它应该慢得多。但是如果你玩过像Hitman Absolution这样的AAA游戏,你会注意到游戏看起来和30 FPS一样快,而且速度为120 FPS。怎么样?达美时间。
使用增量时间,将room_speed
设置为最大值,(9999),并且每次调用每帧像素速度时,将其乘以已经过处理的增量时间以使用60 FPS。我解释得非常糟糕,而且比我做到的要容易得多。查看GMC上的this指南,了解如何操作。
如果你有增量时间,你不需要担心(尽可能多)关于FPS - 无论如何它在速度方面看起来都一样。
但就刷新率而言,我并非100%肯定,但我相信通用汽车的游戏是60hz,我可能是错的,但这就是我所听到的。所有GM游戏也都是32位。
答案 1 :(得分:0)
您可以在房间设置中更改房间速度,这是每秒的步数。也可以使用room_speed
全局访问和更改此属性。
您还可以使用fps
只读全局访问实际的屏幕更新速度。 注意:屏幕fps完全独立于绘制事件,这在每个步骤结束时都会发生。
答案 2 :(得分:0)
变量room_speed
和fps
可能就是您要找的。将fps
增加到高于room_speed
的任何内容都没有意义,可以在程序执行期间修改,也可以通过房间编辑器静态修改,默认为30。