Cocos2d 物理学在所有设备上都不相同
Cocos2d physics is not the same across all devices
我正在使用 cocos2d-x 和花栗鼠开发网络演示游戏。当我 ( ApplyImpuse() ) 到一个设备中的一个精灵并将 Vec2 力发送到另一个设备并对精灵施加相同的脉冲时,我遇到了物理问题,模拟与我在第一个设备中得到的完全不同。
我用不同的设备测试了很多次。
注意:我没有使用任何自定义更新方法,我只是在触摸屏幕时将 ApplyImpulse() 应用于精灵。
谁能描述一下这个问题并提出解决方案?
如果我切换到 Box2D,这个问题会得到解决吗??
谢谢。
没有。跨多个设备获得确定性模拟的唯一方法是使用(或重写)物理库以使用定点数学,然后处理带来的所有限制。
几乎不可能从来自不同 CPU、编译器、平台甚至最微小的代码更改的浮点数中获得确定性结果。例如,编译器可以将 a*b + a*c
简化为 a*(b + c)
,但由于浮点数的精度有限,因此结果可能不会完全相同。
Contraption Make 开始使用香草花栗鼠,但最终使用定点重写了其中的重要部分:http://www.moddb.com/members/kevryan/blogs/the-butterfly-effect-deterministic-physics-in-the-incredible-machine-and-contraption-maker
我正在使用 cocos2d-x 和花栗鼠开发网络演示游戏。当我 ( ApplyImpuse() ) 到一个设备中的一个精灵并将 Vec2 力发送到另一个设备并对精灵施加相同的脉冲时,我遇到了物理问题,模拟与我在第一个设备中得到的完全不同。
我用不同的设备测试了很多次。
注意:我没有使用任何自定义更新方法,我只是在触摸屏幕时将 ApplyImpulse() 应用于精灵。
谁能描述一下这个问题并提出解决方案?
如果我切换到 Box2D,这个问题会得到解决吗??
谢谢。
没有。跨多个设备获得确定性模拟的唯一方法是使用(或重写)物理库以使用定点数学,然后处理带来的所有限制。
几乎不可能从来自不同 CPU、编译器、平台甚至最微小的代码更改的浮点数中获得确定性结果。例如,编译器可以将 a*b + a*c
简化为 a*(b + c)
,但由于浮点数的精度有限,因此结果可能不会完全相同。
Contraption Make 开始使用香草花栗鼠,但最终使用定点重写了其中的重要部分:http://www.moddb.com/members/kevryan/blogs/the-butterfly-effect-deterministic-physics-in-the-incredible-machine-and-contraption-maker