听起来ActionScript 3的Box2D不是确定性的,也就是说,在多人游戏中,物理学在决定胜负方面起着重要作用,如果用户的微处理器来自不同技术(例如英特尔和AMD),则每个用户的结果都会不同。
那么,有没有办法在AS3中实现确定性物理学?这已经实现过了吗?
谢谢。
听起来ActionScript 3的Box2D不是确定性的,也就是说,在多人游戏中,物理学在决定胜负方面起着重要作用,如果用户的微处理器来自不同技术(例如英特尔和AMD),则每个用户的结果都会不同。
那么,有没有办法在AS3中实现确定性物理学?这已经实现过了吗?
谢谢。
我曾经遇到过这个问题。
我们在Shockwave Director中使用Havok引擎模拟一个逼真的2人3D台球游戏。
为了准确性和安全性,最好在服务器上进行处理。然而,我无法负担任何服务器端物理处理,而客户端处理即使起始参数相同,也会给不同的客户端带来不同的结果。
我们的情况并非100%适用于任何多人游戏,但可以进行调整。这是一个回合制游戏,每个玩家都会进行一次打击,球由Havok处理,两个玩家都必须看到相同的最终结果。
所以,我们采取了以下措施:
总的来说,这看起来并不太顺畅,但它将确保在每个回合开始时玩家看到相同的游戏配置。
将此方法应用于更通用的多人游戏(例如,连续动作而没有回合,超过2个玩家),可以做类似的事情:
Math.sin()
等函数,而是实现一个固定点插值表来近似这些函数。不要过于简化,只需使用预生成的一组值,将其嵌入到您的SWF中,然后您就可以比以前更具确定性的物理效果了。(我不能说是“绝对”确定性,还有其他问题需要解决,但肯定是可行的。) - Vesper