我已成功使用 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,但似乎没有任何改变......
任何人都已更改过设置类值以改善效果?
答案 0 :(得分:1)
好的,
我已经成功了。主要的瓶颈与Farseer无关。一旦我解决了与我的“坏代码”相关的所有性能问题,如上所述调整Farseer可以很好地获得5-10%的性能。
我的游戏是用XNA编写的,移植到iOS上的一个Android,带有monotouch和mono4android成功。