2011-11-28 44 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