游戏可以被视为实时系统吗?

时间:2010-04-26 18:03:14

标签: architecture real-time soft-real-time

我一直在阅读实时系统以及它们是如何工作的等等。我正在查看维基百科的文章,其中说每次移动带有计时器的国际象棋游戏可以被视为实时系统,因为程序必须计算那个时间的移动。其他游戏怎么样?我们知道,游戏通常会尝试以25+ FPS运行,它是否可以被视为软实时系统,因为如果它低于25(我使用25作为预定义的阈值btw)它不是结束世界,只是我们想要的表现?

此外 - 游戏还有他们必须处理的事件。用户使用键盘/鼠标,并且系统必须在(再次)预定时间内相应地回答那些事件,然后才认为游戏“失败”。

哦,我现在正在谈论单人游戏,以保持简单。

听起来游戏符合软实时系统标准,但我想知道我是否遗漏了任何东西......谢谢。

9 个答案:

答案 0 :(得分:16)

来自Wikipedia

  

如果操作的总体正确性不仅取决于其逻辑正确性,还取决于其执行的时间,则称系统是实时的。经典概念是,在硬实时或即时实时系统中,在截止日期之后完成操作被认为是无用的 - 最终,这可能导致整个系统的严重故障。另一方面,软实时系统将容忍这种延迟,并且可以响应降低的服务质量(例如,在显示视频时省略帧)。

因此,我会说这些FPS游戏绝对是软实时系统的例子。如果删除某些帧,则没问题。也就是说,维基百科还指出,在分配的时间范围内未能提供移动的国际象棋引擎被视为严重失败,因此,它是一个难以实时的系统。

另一个想法是关于FPS-es中的AI。人们可能会认为人工智能是一个“失败的系统”,如果它无法在足够的时间内返回结果并因此结束冻结。

答案 1 :(得分:5)

是的,但很多时候强调实时。

实时并不是真正的快速 - 简单地说“很快就能得到结果”是该结果正确定义的一部分。

答案 2 :(得分:1)

可以称呼它们,但我认为这将延伸“实时”的定义。正如业界所理解的,“实时”通常意味着事件将在最大时间内得到服务,其中该时间通常是毫秒,有时甚至是微秒。相比之下,国际象棋程序以冰川速度进行(至少就交互而言)。满足硬实时约束所需的特殊编程约束都不适用于编写像这样的“慢速”交互式游戏。

“互动”将是一个适用的词。至于视频游戏,“FPS”实际上已成为用于对这些程序进行分类的术语,其特点是循环反复更新图形并计算游戏机制。

答案 3 :(得分:0)

实际上我并不认为游戏是真正的实时系统。事实上,大多数情况下调度不稳定,特别是在加载时。

当您坐下并盯着加载栏时,系统会因缓存未命中而陷入困境,并且通常受I / O限制。每个人都觉得这完全可以接受。

在实际运行时,当然,您可以实时考虑游戏。但是如果游戏由于在运行中加载新的纹理而变得受I / O限制,那么如果它很少发生,人们会发现这是可以接受的。当你在等待电脑转弯时,回合制游戏也是如此。

当你考虑多人游戏时,事情变得更加混乱。特别是MMO的“过去”运行以掩盖滞后问题。所有这一切都掩盖了游戏真正的非实时性。

编辑:我对实时系统的定义是一个使用每个cpu周期进行有意义工作的系统。如果系统由于受到I / O限制而被安排出来,那实际上并不是一个实时系统。

答案 4 :(得分:0)

波斯王子在我的x386上运行似乎是实时的,没有明显的延迟。但是,如果条件不理想,性能肯定会随着可见的滞后而恶化,并且游戏肯定没有任何性能保证。

为了让游戏真正实时,它不仅仅是一款游戏。它必须承担对硬件,操作系统,可用资源的控制,并定义这些保证有效的条件。我认为没有任何游戏可以进入那一段。

虽然我会部分同意软实时定义。不要认为任何游戏发布任何性能SLA,但在大多数情况下尽力实时 - 这符合他们的最佳利益。也就是说,除了定义之外,大多数游戏机 - XBox,PS [x],Wii等都经过高度优化,可以实现实时体验并实现这一目标。可能只有极少数情况下它会降低性能,就像室温接近沸点时一样,但这适用于大多数所谓的实时系统。必须满足一组特定的条件才能使它们实时最佳地执行,否则事情就会降低。

答案 5 :(得分:0)

“实时”是一个模糊类别。在“硬度”的范围内谈论实时系统更为准确。使实时系统更难的特征是:

  • 有限延迟(截止日期)
  • 有界抖动(即响应时间的变化)
  • 未能达到最后期限的后果,以及如果错过最后期限或系统完全失败,系统“失败安全”的能力。
  • 截止日期短缺。实时系统通常必须在一秒钟内响应,大多数在100毫秒内响应。

因此,虽然技术上讲的国际象棋游戏符合“实时”的定义,但实际上它是如此柔软以至于该术语并不真正适用。另一个极端是战斗机中的“线控飞行”航空电子设备,未能满足时间要求可能导致飞机坠毁。

答案 6 :(得分:0)

我会将游戏描述为硬实时系统。拿一个射手 - 如果你在射击之前没有射击敌人,能够射击他是没有价值的,你输了。您可以对许多其他游戏类型进行类似的类比。任何玩家实时播放的游戏都可以用这种方式描述。

也许他们的实施并不是很难实现,但肯定是在玩。

答案 7 :(得分:0)

虽然我认为我们相信我们的系统是(软)实时的,但我想知道的一件事是模拟保真度方面的工作。

为了使所有内容都适合16.6毫秒,我们通常会在可能不会改变结果的地方进行低保真度工作,但确实会产生结果(通过“屏幕上闪烁的图像”来衡量) )与我们采用较少的快捷方式相比​​,它们略有不同。明显的顶级快捷方式是抗锯齿和景深,对于观察者来说更加微妙和不太明显的是,如果我们在屏幕上有很多它们,那么“低保真”会改变敌人的智力。例如。在我参与的第一场比赛中,我们没有时间更新每个人的“世界观”,所以我们对敌人进行了循环,我们还将玩家角色与敌人交错。因此,如果存在五个敌人,则需要十个帧来更新每个人(因为玩家每隔一帧更新一次)。然而,这并没有让动画起伏不定,因为我们仍然运行正确的动画,但敌人的决策可能是基于旧的或其他现在无效的数据。

事实证明,这有一个有趣的效果,敌人会做一些事情,好像花了一些时间来处理正在发生的事情。例如。即使他已经死了,他们仍然会继续射击球员,或者他们可能需要一些时间才能发现他们的同胞都被杀了,在他们决定逃跑之后的一段时间触发他们害怕的失控状态每次更新都会“完整”。

那么,是否正在进行低rez计算,以适应您的实时绰号的可接受权衡?

答案 8 :(得分:0)

维基百科说(这就是我在大学里教过的):

  

如果操作的总体正确性不仅取决于其逻辑正确性,还取决于其执行的时间,则称系统是实时的。实时系统及其截止日期根据错过最后期限的结果进行分类。

一般来说,大多数游戏都是软实时的,因为虽然帧速率目标(例如30 fps)定义了截止日期,但偶尔未能满足此截止日期并不会使基础计算失效。失败会降低计算的实用性,因为它们会降低游戏体验的质量。

正如您所提到的,国际象棋引擎是实时系统的一个例子。但是,这通常是 hard 实时应用程序,因为超出时间控制会导致自动丢失,并且计算结果无用。