Как я могу улучшить "плавность" 2D-игры iPhone с боковой прокруткой? - PullRequest
3 голосов
/ 08 августа 2010

Я работаю над относительно простой 2D-игрой для iPhone с боковой прокруткой. Элементы управления основаны на наклоне. Я использую OpenGL ES 1.1 для графики. Состояние игры обновляется со скоростью 30 Гц ... А рисунок обновляется со скоростью 30 кадров в секунду (через NSTimer). Плавность рисунка в порядке ... Но не такая гладкая, как в игре, такой как iFighter. Что я могу сделать, чтобы улучшить плавность игры?

Вот потенциальные проблемы, которые я кратко рассмотрел:

  • Я изменяю непрозрачность до 15 "маленьких" (20x20 пикселей) текстур за раз ... Очевидно, что изменение непрозрачности таким образом может ухудшить производительность рисования

  • Я рендеринг только со скоростью 30 кадров в секунду (через NSTimer) ... Возможно, 2D-игры, такие как iFighter, воспроизводятся с более высокой частотой кадров?

  • Возможно, состояние игры можно будет обновлять с большей скоростью? Обратите внимание, что значения ускорения обновляются при 100 Гц ... Таким образом, я мог бы потенциально обновить часть игрового состояния при 100 Гц

  • Все мои текстуры PNG24 ... Возможно, PNG8 поможет (из-за меньшего размера и т. Д.)

Ответы [ 2 ]

4 голосов
/ 08 августа 2010

С этим трудно отладить проблемы с графикой. Попробуйте использовать инструменты openGL ES, чтобы найти узкие места. Это довольно удобно. Также посмотрите видео WWDC на openGL. Они действительно хороши.

Одна вещь, которую я заметил, это то, что вы сказали: «Я отрисовываю только со скоростью 30 кадров в секунду». Это означает, что вы вручную настраиваете таймер или что-то? Это не очень хороший способ, вместо этого вы должны использовать CADisplayLink, чтобы получать уведомления, когда экран хочет обновить. Это может улучшить вашу гладкость.

3 голосов
/ 08 августа 2010

Чтобы завершить ответ Мо на 30fps ...

Тот факт, что вы запрашиваете обновление со скоростью 30 кадров в секунду, не означает, что вы его получите. Я не программист на iphone, но могу вам сказать, что если рендеринг кадров занимает 100 мс, вы гарантированно никогда не будете обновляться быстрее 10fps И если вы на самом деле делаете рендеринг со скоростью 10 кадров в секунду, то плавность исчезла.

Итак, измерьте время рендеринга, чтобы получить представление о фактической частоте кадров. Что касается того, как оптимизировать рендеринг специально для iphone, я оставлю это людям более опытным, чем я, по этому вопросу.

...