此外,游戏还有必须处理的事件。用户使用键盘/鼠标,系统必须在(再次)预先定义的时间内相应地处理这些事件,否则游戏将被认为“失败”。
噢,我现在只谈单人游戏,以简化问题。
听起来游戏符合软实时系统的标准,但我想知道是否遗漏了什么……谢谢。
来自维基百科,
如果一个系统的总体正确性不仅取决于其逻辑正确性,还取决于执行该操作所需的时间,则称该系统为实时系统。经典观念认为,在硬实时或即时实时系统中,超过截止日期后完成操作被认为是无用的 - 最终,这可能导致整个系统的严重故障。另一方面,软实时系统将容忍这种延迟,并可能以降低服务质量(例如,在显示视频时省略帧)作出响应。
因此,我认为这些FPS游戏绝对是软实时系统的例子。如果有些帧被丢弃,那没关系。维基百科还指出,国际象棋引擎如果未能在分配的时间内给出一步走法则被视为关键故障,因此是硬实时系统。
另一个想法是FPS中的人工智能。如果它不能及时返回结果并最终导致冻结,那么可以将其视为“失败的系统”。
是的,但需要强调软实时性。
实时性并不仅仅是快速的表现,而是指在一定时间内得出正确结果的定义中必须包含“足够及时”的要求。
你可以这样称呼它们,但我认为这会扭曲“实时”的定义。在行业中,“实时”通常意味着事件将在最长时间内得到处理,而这个时间通常是毫秒甚至微秒的问题。相比之下,象棋程序的速度非常缓慢(至少就交互而言)。对于编写“缓慢”的交互式游戏,不需要满足硬实时约束所需的特殊编程约束。
“交互式”是一个适用的词。至于视频游戏,“FPS”实际上已经成为一个用来分类此类程序的术语,这些程序的特点是循环更新图形并计算游戏机制。
实际上,我认为游戏并不是真正的实时系统。事实上,在大多数情况下,它们在某些时候相当不受调度影响,特别是在加载时。
当你坐着盯着加载进度条时,系统会因为缓存未命中而变得很慢,通常会受到I/O限制。但每个人都觉得这是可以接受的。
当游戏实际运行时,当然,你可以认为它是实时的。但如果由于即时加载新纹理而使游戏变得I/O限制,人们也会觉得这是可以接受的,只要它不经常发生。回合制游戏同样如此,当你等待电脑的回合时。
当考虑到多人游戏时,情况变得更加混乱。尤其是MMO游戏,它们“在过去”运行以掩盖延迟问题。所有这些都只是掩盖了游戏真正非实时的本质。
编辑:我的实时系统定义是指使用每个CPU周期进行有意义工作的系统。例如,如果系统因为I/O限制而被调度出去,那么它就不是真正的实时系统。
虽然我们认为我们的系统是(软)实时的,但我想知道的是模拟保真度方面的工作。
为了将所有内容适应于16.6ms的时间段,我们通常会在一些地方做较低保真度的工作,这些地方可能不影响结果,但会产生一个与采取少量捷径时有所不同的结果(由“屏幕闪烁的图像”测量)。明显的顶层捷径是反锯齿和景深,对观察者来说更微妙且不太明显的是当我们有很多敌人出现时,“低保真度”敌人智能的变化。例如,我参与开发的一些早期游戏中,我们没有时间更新每个敌人的“世界观”,因此我们使用轮流方式处理敌人,并将玩家角色与敌人交织在一起。因此,如果有五个敌人出现,就需要十帧才能更新每个敌人(因为玩家每隔一帧更新一次)。但是这并没有使动画变得不流畅,因为我们仍然运行正确的动画,但敌人的决策可能基于旧数据或已失效的数据。
事实证明,这样做的有趣效果是敌人会像处理信息需要一些时间一样去做事情。例如,即使玩家已经死亡,他们也会继续向玩家射击,或者他们可能要花费一些时间才能注意到他们的同伴已经全部被杀害,并在比我们运行“完整”模拟更新稍后的某个时刻触发他们害怕逃跑状态。