多年来,我使用了各种游戏物理引擎进行开发,我注意到在同一台计算机上,不同的物理模拟运行之间会有非常不同的结果。最近,Unity引擎就是如此,即使物理是按照固定时间间隔(
我之前在游戏论坛上问过这个问题,被告知这是由于混沌运动导致的: 请参见双摆。但是,即使是双摆如果初始条件完全控制,它也是确定性的,对吗? 在同一台机器上,浮点数运算不应该以相同的方式运作吗?
我知道浮点数精度存在问题,但我知道这些问题(如此处所述)在相同的硬件上不是问题——浮点数不精确仍然是确定性的吧?我漏掉了什么?
简而言之,如果在同一台计算机上运行模拟,并使用相同的浮点数运算,那么模拟不应是确定性的吗?
非常感谢您的时间。
FixedUpdate
)计算的——据我所知,它应该是完全独立于帧速率的。我之前在游戏论坛上问过这个问题,被告知这是由于混沌运动导致的: 请参见双摆。但是,即使是双摆如果初始条件完全控制,它也是确定性的,对吗? 在同一台机器上,浮点数运算不应该以相同的方式运作吗?
我知道浮点数精度存在问题,但我知道这些问题(如此处所述)在相同的硬件上不是问题——浮点数不精确仍然是确定性的吧?我漏掉了什么?
简而言之,如果在同一台计算机上运行模拟,并使用相同的浮点数运算,那么模拟不应是确定性的吗?
非常感谢您的时间。
FixedUpdate()
不以一致的频率(Time.fixedTime
)运行。更改间隔只会改变在Update()
之前调用FixedUpdate()
的次数(以“赶上”为目的),尽管具体数字取决于自上一帧以来经过的时间。这里有更多信息,可以了解实际发生的情况。 - Serlite