Измените настройки Farseer Physics Engine для улучшения производительности - PullRequest
6 голосов
/ 28 ноября 2011

Я успешно использовал 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, но, похоже, ничего не изменилось ....

Кто-нибудь уже изменил значения класса настроек наулучшить показатели?

1 Ответ

1 голос
/ 20 декабря 2011

Хорошо,

Я справился с этим. Основное узкое место не было связано с Farseer . После того, как я решил все проблемы с производительностью, связанные с моим «плохим кодом», настройка Farseer, как описано выше, очень хорошо работает, чтобы получить 5-10% производительности.

Моя игра написана на XNA, успешно портирована на iOS Android с monotouch и mono4android.

...