你好,

我正在开发一款多人竞速游戏,玩家驾驶速度极快的赛车。赛车之间可以互相冲撞,这会影响其他赛车的生命值。类似《毁灭赛车》(Carmageddon)或类似玩法(如《火箭联盟》)中的机制。

我已经实现了客户端预测和快照模拟。因此,即使在网络条件较差的情况下,所有机器上的运行依然流畅。

但我不知道如何实现正确的物理碰撞效果。

问题在于:玩家A发送操作指令,50毫秒后到达服务器。在玩家A的机器上,他看到自己撞上了玩家B的赛车。但玩家B的赛车是经过模拟的,且略微滞后于当前时间(基于快照模拟算法)。这可能导致物理碰撞完全错误。

我该如何解决这个问题?有没有什么方案在时间和复杂度上不算特别昂贵?

我使用的是虚幻引擎5,并且没有使用物理引擎。所有移动都基于自定义移动组件,仅使用向量数学运算。

谢谢!