我是第一次设计游戏,但我想知道游戏时间的基础。它是基于时钟还是依赖于帧? (注意:我不确定'游戏时间'这里是否是正确的词,如果不是,请纠正我)
更清楚的是,想象一下这些情景:
在两台计算机上播放相同的游戏,其中角色以相同的速度行走。
如果游戏时间基于帧,则角色在计算机1上的移动速度会快两倍。另一方面,如果游戏时间基于实际时间,则计算机1将显示两倍的帧,但角色会移动和计算机2一样快。
我的问题是,处理游戏时间的最佳方法是什么?优点和缺点是什么?
答案 0 :(得分:10)
一般来说,商业游戏有两件事要做 - “模拟”循环和“渲染”循环。这些需要尽可能地分离。
您希望将模拟时间步长固定为某个值(大于或等于最大帧速率)。复杂物理学不喜欢可变时间步骤。我很惊讶没有人提到这一点,但如果你有任何有趣的物理学,固定时间步骤与可变时间步骤是一个大问题。这是一个很好的链接: http://gafferongames.com/game-physics/fix-your-timestep/
然后渲染循环可以尽可能快地运行,并渲染当前模拟步骤的输出。
所以,参考你的例子:
您将以60fps运行模拟,即16.67ms时间步长。计算机A将以60fps渲染,即它将渲染每个模拟帧。计算机B将渲染每个第二模拟帧。因此,角色会在同一时间内移动相同的距离,但不会那么顺利。
答案 1 :(得分:7)
真的老游戏使用了帧数。很明显,这是一个糟糕的想法,因为机器变得更新,因此游戏运行得更快。
因此,它基于系统时钟。一般来说,这是通过了解最后一帧所花费的时间,并使用该数字来了解通过该帧的“实时”来完成的。
答案 2 :(得分:3)
它应该依赖于系统时钟,而不是帧数。你已经为此做了自己的案例。
答案 3 :(得分:1)
FPS只是计算机每秒渲染的帧数。
游戏时间是你的游戏时间。你定义它。它通常被称为“游戏循环”。帧渲染是游戏循环的一部分。还要检查与游戏编程相关的FSM。
我强烈建议你阅读几本有关游戏编程的书籍。你问的问题是这些书在第一章中解释的内容。
答案 4 :(得分:0)
对于每个用户具有相同体验的用户,您需要使用实际时间,否则不同的用户将有优势/劣势,具体取决于他们的硬件。
答案 5 :(得分:0)
游戏应该全部使用时钟而不是帧,以提供与平台无关的相同游戏。很明显,当你看MMO或在线射击游戏时:没有玩家应该比其他游戏更快。
答案 6 :(得分:0)
这取决于你正在处理什么,游戏的哪个部分有问题。
例如,动画,物理和AI需要独立于帧速率才能正常运行。如果你有一个依赖于FPS的动画或物理线程,那么物理系统将减速或者角色在较慢的系统上移动得更慢,并且在非常快的系统上会非常快。不好。
对于其他一些元素,比如脚本和渲染,你显然需要它是每帧,因此,帧速率依赖。您可能希望处理每个脚本并每帧渲染一次对象,而不管帧之间的时间差异。
答案 7 :(得分:0)
游戏必须依赖系统时钟。因为你不希望你的游戏在正常的计算机中播放!
答案 8 :(得分:0)
游戏通常使用像Windows上的QueryPerformanceCounter这样的最高分辨率计时器来计时。旧游戏过去常常使用框架,但是通过改变你的FPS你可以在Quake中跑得更快,我们学会了不再这样做了。