9

我一直在阅读实时系统以及它们如何工作等。我也在查看维基百科的文章,其中说每步带有计时器的国际象棋游戏可以被视为实时系统,因为程序必须计算那个时候的一个动作。其他游戏呢?众所周知,游戏通常会尝试以 25+ FPS 运行,它是否可以被视为软实时系统,因为如果它低于 25(我使用 25 作为预定义的阈值顺便说一句),这不是结束世界,只是对我们想要的性能的打击?

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

哦,为了简单起见,我现在说的是单人游戏。

听起来游戏符合软实时系统标准,但我想知道我是否遗漏了什么……谢谢。

4

9 回答 9

17

来自维基百科

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

因此,我想说这些 FPS 游戏绝对是软实时系统的例子。如果丢了一些帧也没关系。也就是说,维基百科还指出,未能在分配的时间范围内下棋的国际象棋引擎被认为是严重故障,因此,它是一个硬实时系统。

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

于 2010-04-26T18:12:31.403 回答
5

是的,但非常强调实时。

实时性与快速性无关——只是“足够快”地获得结果是该结果正确定义的一部分。

于 2010-04-26T18:11:20.140 回答
1

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

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

于 2010-04-26T18:11:01.207 回答
1

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

如果一个操作的总正确性不仅取决于它的逻辑正确性,而且取决于它执行的时间,那么系统就被称为实时系统。实时系统以及它们的最后期限是根据错过最后期限的后果来分类的。

一般来说,大多数游戏都是软实时的,因为虽然帧速率目标(例如 30 fps)定义了一个期限,但偶尔未能满足这个期限并不会导致底层计算无用。失败会降低计算的有用性,因为它们会降低游戏体验的质量。

正如您所提到的,国际象棋引擎是实时系统的一个示例。然而,这通常是一个实时应用,因为超过时间控制会导致自动丢失,计算结果是无用的。

于 2013-11-02T21:26:30.493 回答
0

实际上,我不认为游戏是真正的实时系统。事实上,大多数有时是相当调度不变的,特别是在加载时间。

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

当然,在实际运行时,您可以考虑实时游戏。但是,如果游戏由于动态加载新纹理而成为 I/O 绑定,那么如果这种情况很少发生,人们会再次发现这是可以接受的。当您等待计算机轮到时,回合制游戏也是如此。

当您想到多人游戏时,事情会变得更加混乱。尤其是“过去”运行以掩盖滞后问题的 MMO。所做的只是掩盖游戏真正的非实时性。

编辑:我对实时系统的定义是一个使用每个 CPU 周期进行有意义工作的系统。例如,如果系统由于受 I/O 限制而被调度,那么这并不是一个真正的实时系统。

于 2010-04-26T18:11:34.607 回答
0

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

对于真正实时的游戏,它不能只是一个游戏。它必须承担对硬件、操作系统、可用资源的控制,并定义这些保证有效的条件。我不认为有任何游戏可以做到这一点。

虽然我会部分同意软实时定义。不要认为任何游戏都会发布任何性能 SLA,但在大多数情况下会尽力做到实时——这符合他们的最大利益。也就是说,除了定义之外,大多数游戏机——XBox、PS[x]、Wii 等都针对实时体验进行了高度优化,并提供了这种体验。可能很少有性能下降的情况,例如室温接近沸点时,但这适用于大多数所谓的实时系统。必须满足一组特定条件才能使它们实时最佳执行,否则事情会降级。

于 2010-04-26T18:20:47.517 回答
0

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

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

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

于 2010-04-26T18:28:57.987 回答
0

我将游戏描述为硬实时系统。拿一个射手来说——如果你在敌人射你之前不射他,那么能射他就毫无价值,你就输了。您可以对许多其他游戏类型进行类似的类比。任何玩家实时玩的游戏都可以这样描述。

也许它们的实现并不难实时,但玩它们肯定是。

于 2010-04-26T18:35:16.550 回答
0

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

为了使所有内容都适合 16.6 毫秒,我们通常会在可能不会改变结果的地方进行较低保真度的工作,但它确实会产生一个结果(通过“屏幕上闪烁的图像”来衡量)是如果我们走更少的捷径,与他们的微妙不同。明显的顶级快捷方式是抗锯齿和景深,如果我们在屏幕上显示了很多敌人的智力,则对观察者来说更微妙且不太明显的是对“低保真”敌人智力的改变。例如,我制作的一些第一款游戏,我们没有时间更新每个人的“世界观”,所以我们轮换了敌人,我们也将玩家角色与敌人交错。所以如果有五个敌人在场,更新每个人需要十帧(因为播放器每隔一帧更新一次)。不过,这并没有使动画变得断断续续或任何事情,因为我们仍然运行正确的动画,但敌人的决策可能会基于旧的或其他现在无效的数据。

事实证明,这产生了一个有趣的效果,即敌人会做一些事情,就好像他们需要一些时间来处理正在发生的事情一样。例如,即使玩家死了,他们也会继续射击,或者他们可能需要一些时间才能注意到他们的同胞都被杀,在他们决定逃跑的那一刻之后的一段时间内触发他们害怕的逃跑状态。每次更新运行“完整”模拟。

那么 - 进行低 rez 计算以适应您的时间对于实时绰号来说是可接受的权衡吗?

于 2010-04-26T18:43:33.273 回答