6

我已经成功地使用Farseer使用XNA开发了我的一款游戏。游戏在 Windows 和 WP7 中运行就像一个魅力。我目前正在使用MonotouchMonogame将我的游戏移植到IOS中。我已经成功地编译和使用了 Farseer,并在我的游戏的第一个版本中移植到 Monotouch 和 Monogame。除了表演,一切都很好。游戏在 iPhone 设备上运行速度要慢得多。我做了一些代码调查,似乎主要瓶颈是 Farseer。当它必须管理超过 5-6 个带有单个夹具(圆圈)的物体时,它变得非常慢。

阅读文档时,我注意到要调整 Farseer,我可以更改 Setting 静态类的值:

表现

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

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

禁用 CCD 连续碰撞检测可防止隧道效应,但会以性能为代价。如果隧道没有问题,则应该一起禁用 CCD。

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

坏消息是,如果我更改该类的任何值,似乎什么都不会发生。我试图改变值如下:

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

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

有人已经更改了设置类值以提高性能吗?

4

1 回答 1

1

行,

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

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

于 2011-12-20T15:36:45.193 回答