2011-11-28 45 views
6

我已成功使用Farseer开发我的游戏之一,使用XNA。游戏在Windows和WP7中像一个魅力一样运行。我目前正在努力移植我的游戏IOS使用MonotouchMonogame。我已经成功地编译并使用了Farseer,并在MonoTouch和Monogame上移植了我的游戏的第一个版本。除了表演,所有作品都很好。 iPhone设备上的游戏运行速度要慢得多。我做了一些代码调查,似乎主要瓶颈是Farseer。当它需要连接一个夹具(圆圈)时,管理多达5-6个物体时,它变得非常慢。更改Farseer物理引擎设置以提高性能

阅读中,我注意到,调整先知,我可以从设置静态类值更改文档:

性能

为了获得最大的引擎,你应该尝试和遵循的准则如下:

启用睡眠 睡眠让你拥有大量的世界机构。它还可以提高发动机的稳定性,因为一堆车身中的小运动不会在堆垛中扩散。睡觉的身体几乎没有开销,所以推荐使用它。

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

最小化的位置和速度的迭代 高数量的迭代使得发动机更稳定以性能为代价的数量。你应该调整值以适合你的游戏。

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

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

我也与像VelocityIterations = 1,但没有更低的值试图似乎改变....

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

+1

你可能想尝试在http://gamedev.stackexchange.com/上询问这个问题。由于其社区专注于游戏开发(XNA开发人员看似高度集中),因此您可能会得到更好的答案。 –

+0

单声道很慢。很可能没有什么办法可以改变设置,足以拯救你自己。 – ClassicThunder

+0

不真实ClassicThunder,Mono和Monotouch即使在iOS上也非常高效。我已经解决了这个问题,我发现Farseer并不是这方面的主要瓶颈。 – John

回答

1

好吧,

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

我的游戏是用XNA编写的,已经成功移植到iOS上了,并且monotouch和mono4android已经成功安装了Android。

+0

您应该了解SlimTune(或nProf) - 在找出代码中的瓶颈时非常有帮助。 – jgallant

+0

你能评论你是如何提高性能的?它在3GS设备上工作正常吗? – Notbad

+0

嗨Notbad。你在问改善Farseer或MyGame/MonoTouch/Monogame的表现吗?是的,它运行在3GS上。你可以自己尝试我的游戏。它被称为“Smashing Planets”,它在AppStore上免费 – John