2011-11-28 8 views
6

Я успешно использовал Farseer, чтобы разработать одну из моих игр, используя XNA. Игра работает как очарование в Windows и WP7. Я сейчас работаю над портированием своей игры в IOS с использованием Monotouch и Monogame. Я успешно скомпилировал и использовал Farseer также над первой версией моей игры, перенесенной на Monotouch и Monogame. Все работает отлично, за исключением выступлений. Игра работает намного медленнее на устройстве iPhone. Я сделал некоторые исследования кода, и кажется, что основным узким местом является Farseer. Это становится очень медленным, когда ему приходится управлять более 5-6 тел с одним прикрепленным креплением (круг).Изменение Farseer Physics Настройки двигателя для улучшения характеристик

Чтение документации, я заметил, что мелодия предсказателю я мог изменить значение из Установка статического класса:

Производительность

Для того, чтобы получить максимальную отдачу от двигателя, вы должны попытаться следовать указаниям ниже:

Включить спящий спящий позволяет иметь большое количество тел в мире. Это также может повысить устойчивость двигателя, так как небольшие перемещения в стопке тел не распространяются в стеке. У спального тела мало накладных расходов, поэтому рекомендуется его использовать.

Отключить ПЗС Непрерывное обнаружение столкновений предотвращает туннелирование, но за счет производительности. Если у вас нет проблем с туннелированием, вы должны полностью отключить 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 Android с монотоном и mono4android.

+0

Вы должны знать о SlimTune (или nProf) - Очень полезно узнать узкие места в вашем коде. – jgallant

+0

Не могли бы вы прокомментировать, как вы улучшили производительность? Это нормально работает на устройстве 3GS? – Notbad

+0

Hi Notbad. Вы спрашиваете об улучшении характеристик Farseer или MyGame/MonoTouch/Monogame? Да, он работает на 3GS. Вы можете попробовать свою игру самостоятельно. Это называется «Smashing Planets», и это бесплатно в AppStore – John