2012-04-10 2 views
5

Во всех моих предыдущих играх iOS у меня была игра, созданная как простое приложение на основе View с одним контроллером представления, файлом .h и файлом .m. Я установил NSTimer, установленный на 30, 40 или 60 кадров в секунду, который вызвал цикл основного запуска. Позже в разработке я разделил графические обновления (при более высоком FPS) и игровые вычисления (более низкий FPS), чтобы уменьшить отставание. Я никогда не понимал, как реализовать многопоточность/параллельность в играх, поскольку графика и вычисления зависят друг от друга ...Как настроить iOS игры?

Учитывая, что у меня никогда не было возможности прочитать исходный код «настоящей» игры, я Я настраиваю его разумным образом, или я совершенно неверно отношусь к основной структуре игры и запуску цикла?

Я спрашиваю об этом, потому что я заметил, что у моих приложений много отставания по сравнению с другими приложениями в App Store (например, мое приложение сильно страдает от iPhone 3G, но Doodle Jump, Fruit Ninja, Cut Канат и т. Д. Работают относительно плавно).

ответ

9
  1. Вы хотите использовать CADisplayLink вместо NSTimer для вашего цикла запуска.
  2. Вы хотите сделать как можно больше графики на GPU. Это ускорит циклы процессора, а аппаратные средства ускорят множество вычислений, которые вы сейчас выполняете в программном обеспечении. Вы делаете это, рисуя свои спрайты в OpenGL как текстуры OpenGL. Есть библиотеки, которые делают это для вас, как Cocos2D. Cocos2D предоставляет простой API для создания и анимации спрайтов, и он делает все OpenGL под капотом, поэтому вам не нужно.
Смежные вопросы