Я успешно использовал Farseer для разработки одной из моих игр, используя XNA .Игра работает как шарм в Windows и WP7.В настоящее время я работаю над переносом игры в IOS , используя Monotouch и Monogame .Я успешно скомпилировал и использовал Farseer также над первой версией моей игры, портированной на Monotouch и Monogame.Все работает отлично, кроме спектаклей.Игра работает намного медленнее на устройстве iPhone.Я провел некоторые исследования кода, и кажется, что основное узкое место - это Farseer.Он становится очень медленным, когда ему приходится управлять более чем 5-6 телами с одним прикрепленным прибором (кружок).
Читая документацию, я заметил, что для настройки Farseer я мог изменить значения из статического класса Setting:
Производительность
Чтобы получить максимальную отдачу от двигателя, вы должны попытаться следовать приведенным ниже инструкциям:
Включить режим сна Режим снапозволяет вам иметь большое количество тел в мире.Это также может повысить стабильность двигателя, поскольку небольшие движения в стеке тел не распространяются в стеке.Спящий орган имеет небольшие накладные расходы, поэтому его рекомендуется использовать.
Отключить CCD Непрерывное обнаружение столкновений предотвращает туннелирование, но за счет производительности.Если у вас нет проблем с туннелированием, вы должны отключить CCD все вместе.
Минимизировать количество итераций положения и скорости Большое количество итераций делаетдвигатель более стабильный за счет производительности.Вы должны настроить значения в соответствии с вашей игрой.
Плохая новость заключается в том, что если я изменю какое-либо значение этого класса, похоже, ничего не произойдет.Я пытался изменить значения следующим образом:
EnableDiagnostics = false
VelocityIterations = 6
PositionIterations = 2
ContinuousPhysics = false
Я пытался также с более низкими значениями, такими как VelocityIterations = 1, но, похоже, ничего не изменилось ....
Кто-нибудь уже изменил значения класса настроек наулучшить показатели?