Iphone 更改Farseer物理引擎设置以提高性能

Iphone 更改Farseer物理引擎设置以提高性能,iphone,xamarin.ios,farseer,monogame,Iphone,Xamarin.ios,Farseer,Monogame,我已经成功地使用Farseer开发了一款使用XNA的游戏。这个游戏在Windows和WP7中运行起来很有魅力。我目前正在使用Monotouch和Monogame将我的游戏移植到IOS。我已经成功地编译并使用了Farseer,并且在我的游戏的第一个版本中通过Monotouch和Monogame进行了移植。除了表演,所有作品都很好。这款游戏在iPhone设备上运行速度要慢得多。我做了一些代码调查,似乎主要的瓶颈是Farseer。当它必须用一个固定装置(圆圈)管理超过5-6个身体时,速度会变得非常慢

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

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

演出

为了充分利用发动机,您应该尝试并遵循以下指导原则:

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

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

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

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

EnableDiagnostics = false
VelocityIterations = 6
PositionIterations = 2
ContinuousPhysics = false
我也尝试过使用较低的值,如VelocityIterations=1,但似乎没有任何变化

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

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


我的游戏是用XNA编写的,成功地移植到了iOS安卓系统上,包括monotouch和mono4android。

你可能想试试这个。由于它的社区专门专注于游戏开发(XNA开发者似乎高度集中),你可能会得到更好的答案。很可能没有任何方法可以改变设置以节省您的时间。不是真正的ClassicTunder,Mono和Monotouch即使在iOS上也能真正发挥作用。我已经解决了这个问题,我发现Farseer it并不是这方面的主要瓶颈。你应该了解SlimTune(或nProf)——这对找出代码中的瓶颈非常有帮助。你能评论一下你是如何提高性能的吗?在3GS设备上工作正常吗?嗨,不错。您是否在询问Farseer或MyGame/MonoTouch/Monogame的性能改进问题?是的,它在3GS上运行。你可以自己试试我的游戏。它被称为“粉碎行星”,在AppStore上是免费的