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

时间:2011-11-28 09:17:07

标签: iphone xamarin.ios farseer monogame

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

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

中的值

性能

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

启用睡眠 睡眠让你拥有世界上大量的身体。它还可以增加发动机的稳定性,因为一堆物体中的小运动不会在堆叠中扩散。睡眠的身体开销很小,因此建议启用它。

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

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

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

EnableDiagnostics = false
VelocityIterations = 6
PositionIterations = 2
ContinuousPhysics = false

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

任何人都已更改过设置类值以改善效果?

1 个答案:

答案 0 :(得分:1)

好的,

我已经成功了。主要的瓶颈与Farseer无关。一旦我解决了与我的“坏代码”相关的所有性能问题,如上所述调整Farseer可以很好地获得5-10%的性能。

我的游戏是用XNA编写的,移植到iOS上的一个Android,带有monotouch和mono4android成功。