Проблемы с производительностью бурундука (спящие органы не работают?) - PullRequest
2 голосов
/ 06 декабря 2011

это мой первый пост здесь (пожелайте мне удачи)

Я создаю iOS-игру с прокруткой по сторонам (cocos2d), которая использует физический движок Бурундука (v 5.3.4).Частота кадров в играх резко падает, когда я двигаюсь, пробуждая спящие динамические тела.При воспроизведении уровня без прикосновения к динамическим телам частота кадров остается высокой и стабильной.

Первоначально моя частота кадров составляет 60. Но после того, как я перешел, касаясь всех тел на уровне, по крайней мере, как только моя частота кадров снизилась19!

Я установил значение SleepTimeThreshold равным 0,4, а idleSpeedThreshold равным 1, и для всех создаваемых мной динамических тел я заставляю их спать с самого начала моделирования с помощью cpBodySleep (body).

Любая подсказка?

У меня около 35 тел разбросаны по уровню (около 10 5 на 5 экранов).Все тела являются простыми прямоугольниками и кругами

Я могу сказать из отладки, что тела возвращаются в спящий режим, но временной шаг бурундука (решатель / запрос) первоначально занимает 25% времени работы и 50% после воспроизведения уровня согласнопрофилировщик времени инструментов.

Что мне здесь не хватает?У бурундука нормально спит труп?Или мне нужно что-то делать "вручную"?Что еще мне нужно сделать, чтобы восстановить мою первоначальную высокую и стабильную частоту кадров?Кстати, я использую SpaceManager для работы с бурундуком.

1 Ответ

0 голосов
/ 07 декабря 2011

Значит, тела никогда не засыпают?Как они засыпают в первый раз, или вы спите в спящем состоянии?Какие значения хранятся в структуре "node" в cpBodies, именно там он отслеживает, как долго объект простаивает.

Кроме того, вы сможете получить lot Более 35 движущихся объектов на экране, прежде чем столкнуться с проблемами производительности даже без сна.Вы строите бурундука с рекомендуемыми флагами?-O3 или -Os для уровня оптимизации, -ffast-math для отключения ненужных проверок NaN, -DNDEBUG для отключения утверждений.Это может сделать огромную разницу в производительности, если вы пропустите некоторые или все из них.Я бы порекомендовал использовать скрипт, поставляемый с Chipmunk, для создания статической библиотеки.

...