更改Farseer Physics Engine设置以提高性能

Fra*_*sco 6 iphone farseer xamarin.ios monogame

我已成功使用Farseer使用XNA开发我的一款游戏.游戏就像Windows和WP7中的魅力一样.我目前正致力于使用MonotouchMonogameIOS中移植我的游戏.我已成功编译和使用Farseer,而不是我的游戏的第一个版本移植到Monotouch和Monogame.一切都很好,除了表演.iPhone设备上的游戏运行速度要慢得多.我做了一些代码调查,似乎主要的瓶颈是Farseer.当它需要连接一个固定装置(圆圈)来管理超过5-6个实体时,它变得非常慢.

阅读文档我注意到要调整Farseer我可以更改Setting static class中的值:

性能

为了充分利用引擎,您应该尝试遵循以下指南:

启用睡眠 睡眠使您可以拥有世界上大量的身体.它还可以增加发动机的稳定性,因为一堆物体中的小运动不会在堆叠中扩散.睡眠的身体几乎没有头顶,因此建议启用它.

禁用CCD 连续碰撞检测可防止隧道效应,但会降低性能.如果你没有隧道问题,你应该一起禁用CCD.

最小化位置和速度迭代 的次数大量的迭代使得引擎以性能为代价更加稳定.您应该调整值以适合您的游戏.

坏消息是如果我改变那个类的任何值,似乎什么也没发生.我尝试更改值如下:

EnableDiagnostics = false
VelocityIterations = 6
PositionIterations = 2
ContinuousPhysics = false
Run Code Online (Sandbox Code Playgroud)

我也尝试使用较低的值,如VelocityIterations = 1,但似乎没有任何改变....

任何人都已更改设置类值以提高性能?

Fra*_*sco 1

好的,

我已经做到了这一点。主要瓶颈与 Farseer 无关。一旦我解决了与我的“糟糕代码”相关的所有性能问题,像上面描述的那样调整 Farseer 就可以很好地获得 5-10% 的性能。

我的游戏是用 XNA 编写的,已成功移植到 iOS 和 Android,具有 monotouch 和 mono4android。