是什么导致了“掉出世界”,又有什么解决办法?


15

许多早期的3D游戏都存在一个问题,即您会快步走来走去,突然间一切都变得黑了,岛上看起来像是您走过的场景的空心立面外壳,一直爬到远处。因为你已经脱离了世界。我记得对于Bethesda Softworks来说,这是一个特殊且长期存在的问题,尽管他们并不孤单。自从我在野外看到它已经有一段时间了,所以看来我们已经过去了。我的问题分为两部分:

1)是什么原因造成的?(我的猜测是,这与多边形之间与浮点精度相关的接缝有关,并与点建模的字符位置进行交互,例如,地板块A在位置1.0处结束,地板块B在位置0.9998处开始,并且一微秒内,您的位置是0.99992,然后繁荣,您就跌入了世界,但这只是个猜测。)

2)它是如何修复的?


晨风。Vivec。回忆...
Tobias Kienzler 2013年

3
说起贝塞斯达并从地板上掉下来,这是一个不幸的NPC在天际
克里斯(Chris)

总是让我想起Skate 3
user1118321

Answers:


14

几何形状中的“裂缝”大多。这些游戏有一些共同点,它们具有重力并且具有碰撞检测功能。

这些异常是碰撞检测以某种方式失败的位置。可能是锋利的边缘,缝隙或许多其他几何异常。甚至可能是物理引擎中的时间步出现问题,其中更新不同步,并且角色可以通过完美的几何形状掉落。

当玩家执行关卡设计人员无法预期的操作时,这很常见。跳上他们不应该去的某个地方,或者以某种方式幸免于难。或者,当玩家使用游戏中的某些功能(例如传送或飞行)到达关卡设计师认为无法到达的位置时。就像《天际》一样(视频:11:25脱离世界,我建议使音频静音...)。

当碰撞检测失败时,没有任何东西可以从重力中退回,因此您会跌倒。就像从悬崖上走下来一样。

它不是真正的“固定”。有一些技术可以避免这种情况,但主要是用于景观的更好的工具和几何图形创建工具,因此不会引入这些异常。


5

我认为无法说有一个特定原因导致世界范围内发生剪裁。由于游戏之间的游戏引擎/物理过程不同,许多原因均可导致此。

以此为前提,我很确定一定没有消除掉世界。

拥有一些大型游戏引擎(Unreal,CryEngine等)可以减少一些无法预见的问题,原因是该引擎一直在工作。但是,没有什么可以阻止开发人员向环境中添加功能/有趣的更改,即使在使用最频繁的游戏引擎中,也可能使世界范围发生变化。

编辑:1.据我所知,这的根本原因与以下事实有关:允许发生这种情况的游戏引擎具有检测玩家是否错误移动的有限方法。早期的游戏引擎可能对此有更多的问题,因为地面飞机通常只是一架飞机。如果玩家在上述飞机上,他不会掉下去。如果出于某种原因,他的垂直位置下降了一点,那么他将永远摔倒。关于浮点计算,您所说的几乎是什么。由于引擎可以提供更强大的功能,并检查玩家是否处于禁区的整个区域,因此不太可能触发错误。


1
是的,如果没有足够的缓冲区或将字符表示为点,则浮点计算很容易导致这种情况。+1
MichaelHouse

5

我的猜测是,较旧的引擎可能使用了快速简单的射线与三角形测试来检测与几何体的碰撞。这意味着即使是最小的差距(或计算中的精度误差)也可能会让玩家偶尔通过。

更现代的游戏可能会使用更昂贵的测试,用代表玩家的球体或胶囊进行测试,而这根本无法解决小差距。许多现代游戏也将为此目的使用经过良好测试的物理中间件,而不是编写自己的测试。

在某些情况下,当然也应归咎于物理更新中的大量时间步骤。我似乎记得,至少在某些精英游戏中,您可能会因此而飞过某个星球。这可以通过使用连续冲突检测来解决,这也需要花费额外的CPU时间。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.